long 型应该加上 l或者L

注意long型后面得加上l或者L

如 long mask = 0xffffffff   结果是mask = -1 因为0xffffffff 先为int 型  然后再由int 转换成long 型。

正确的应为 long mask = 0xffffffffL


范例(用于将两个分开的整型转换成long 再变成double ,PREC_MULTIPLY表示一个除数):

public static double recoverAltiOrLongi(int h,int l){
    	long t1= h;
    	t1 = t1<<32;
    	long t2 = l;
    	long mask = 0xffffffffL;  //注意得加上L
    	long t3 = t2 & mask;
    	double r = (double)(t3+t1) /PREC_MULTIPLY;   
    	return r;
    }


<think>嗯,用户想了解Java中长整变量的声明和大数值赋值的含义。我需要根据提供的引用内容来整理答案。首先,长整在Java中是基本类型的一种,属于数值,引用[1]提到基本类型包括数值、布尔和字符。长整long表示,声明时应该用long关键字,比如long l;。然后赋值的话,直接赋值数值的话,默认是int类型,但如果数值超过int的范围,就会有问题,这时候需要加上L后缀,比如long l = 2147483648L;,这样系统才会识别为long类型。引用[2]中的例子指出,当给long变量赋值一个大数时,如果没加L,系统会先当成int处理,可能出错,所以必须加L。另外,引用[3]提到静态变量的初始化,虽然用户的问题是关于声明和赋值,但静态变量和实例变量的初始化方式可能类似,不过这里重点还是普通变量的赋值。还有变量命名的规则,引用[4]里说变量名不能以数字开头,不能有特殊符号,不能是关键字,这些在声明变量时需要注意。用户可能的问题是大数值赋值时的错误,比如0xffffffffff这样的十六进制数,如果没有L后缀,会被当作int导致编译错误,所以必须显式转换为long。总结下来,回答需要分步骤,先声明,后赋值,强调L的重要性,可能的问题和相关注意事项,比如数值范围和变量命名规则。</think>### Java Long类型变量声明与大数值赋值详解 #### 一、Long类型变量声明 Java中`long`是基本数据类型中的**有符号64位整数**,声明方式为: ```java long variableName; // 声明未初始化 long l = 100L; // 声明并初始化 ``` 需注意: 1. 变量名需遵循规则(如不能以数字开头、避免关键字)[^4] 2. `long`默认值在类中为`0L`(静态变量)[^3] #### 二、大数值赋值规则 当赋值数值超过`int`范围($-2^{31}$到$2^{31}-1$)时: 1. **必须添加`L`后缀**强制标识为long类型 ```java long bigNum1 = 2147483648L; // 正确 long bigNum2 = 0xffffffffffL; // 正确(十六进制) ``` 2. 未加`L`会导致编译错误 ```java long errorNum = 2147483648; // 错误:超出int范围 ``` 系统会将整数**默认视为int类型**处理[^2] #### 三、类型转换示例 $$ \text{int范围最大值} = 2^{31}-1 = 2147483647 $$ 当数值超过该阈值时: ```java long a = 2147483647; // 合法(int最大值) long b = 2147483648; // 非法(超出int范围) long c = 2147483648L; // 合法(显式声明为long) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值