byte b1=1; byte b2=2; //byte b3=b1+b2; //错误,至少为int型 int b4=b1+b2; byte b5=3+2; //byte b6=2+b1; //错误,2默认为int型
归结起来就是,变量参与的运算,结果至少为int型
当 *** 作数是byte,short,char时,会自动转化为int类型;返回结果为int。
2、
byte b1=1 long m2=2L; //int i1=m2+b1; //m2为long型,运算结果因为long型 //int i2=2L+3; //运算结果应为long型 long m3=m2+b1; //float z3=2.0f+3.0; //3.0默认为double型,运算结果应该为double型
实线表示不损失精度的自动类型转换,虚线表示可能会损失精度的自动类型转换
自动类型转换: java的所有数值型变量可以进行相互转换,如果系统支持把某种基本类型的值直接赋值给另一种基本类型的变量,则这种方式成为自动类型转换。
当 *** 作数是byte,short,char时,会自动转化为int类型;返回结果为int。
3、
double da=1+1; System.out.println(da); //输出结果为2.0 System.out.println(25/4); //输出结果为6 System.out.println(25.5%10); //输出结果为5.5
Java对%进行了扩展,是的 *** 作数可以为浮点数。同样Python也可以。但是C++则不行
4、
a=b=c=5; //a、b、c都为5 m=4;n=2; m+=m*=n-=m*n; //m=-20,n=-6
赋值运算符遵循自右向左的结合性
a=b=c=5相当于a=(b=(c=5)),所以a、b、c都为5
m+=m*=n-=8
m+=m*=n //现在n=-6
m+=m //现在m=-24
//所以最后m=-20
5、
int i=2; i-=(++i); //i为-1 i=2; i-=++i; //i为-1,有无括号是一样的 i=2; i-=(i++); //i为0
其实这个部分有点晕的点就是
i=2; i=i++; //i为3 j=i++; //j为2
int a=3,b=4,c=3; int d=++a+b+++c++; //d为11
如果有错误,还望指正,感谢你的观看。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)