Java常数默认类型的几种情况

int var = 10;
(long)var + 2; // 这样算出的结果是long类型的,就不会出现溢出了。
var + 1L; // 结果为long
long l = 2147483648; // 错误,常数超过int范围,结尾必须加L表示long
int i = (int)2147483648L; // 超过范围不报错,但会出现数据溢出现象
byte b = 100; // 100是整数,但是Java为byte做了优化,如果int常数在byte范围内则自动转为byte。但是i,100L都是不能赋给b的,哪怕i的范围符合也不行,编译器无法自动检测。short也和byte类似,int常数可以自动转为short
char c = 'a';
int i1 = c; // 可以自动将Unicode码转为int,所以c + 32结果也是整数,i1=‘a'也可,变量都可以常量更可以
c = i1; // 不可以自动转换,但c=97可以,c=65536不可以,超过范围,0-65535范围内的int常数可自动转为char
boolean bool = true; // 不能用0和1(非0)表示boolean,例如bool = 1是错的,if (1)也是错的,bool = (boolean)1也是错的。
String str = "hello";
str + 12 + 10 + 3.4; // 基本类型遇到String时自动转String,加法这样

 

所以声明long型的时候,一般需要带上long a=10000000000L,才比较安全

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值