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,才比较安全