概述
需要注意的Java基础整形类型
Java整数默认是int类型,例如:byte a = 56;(系统会将56赋值给一个byte变量),long bigValue = 9999999999999999;(这个时候系统不会赋值给long变量,而是赋值给了int变量,因为存放不下而报错), 只能这样存放long bigValue = 999999999999999L;
Java语言使用的Unicode字符集作为编码方式,Java的一个char字符变量是一个16位无符号的整数,与C语言中的Char占8位有区别。
Java语言浮点型默认是double类型,如果希望把一个浮点型值当成float类型处理,应该这样写float f = 5.12f;
Java语言还提供了3个特殊的浮点数值:正无穷大(POSITIVE_INFINITY)、负无空大(NEGATIVE_INFINITY)、非数(NaN);一个正数除以0将得到正无穷大,一个负数除以0将得到负无穷大,0.0除以0.0或对一个负数开方将得到一个非数。
1.表达式中的自动类型提升:
表达式求值时,Java自动的隐含的将每个byte、short或char操作数提升为int类型,这些类型的包装类型也是可以的。
例如:short
s1+1运算中的操作数s1会被自动提升为int类型,s1+1运算结果会成为int类型,再赋值给short类型的s1时,编译器会报告需要强制转换类型的错误。需要改为short s1=1; s1=(short)(s1+1);结果就是short类型。
例如:short
+=是java语言中的运算符,Java编译器会对它特殊处理进行正确的编译。
2.类型提升规则:
byte、short和char类型的值都被提升为int类型;
如果有一个操作数是long类型,就将整个表达式提升为long类型;
如果有一个操作数是float类型,就将整个表达式提升为float类型;
如果任何一个操作数为double类型,结果将为double类型。
例如:
byte b=1;
char c='a';
short s=1024;
int i=50;
float f=2.0f;
double d=.123;
double
f*b中,b被自动提升为float类型,该表达式结果是float类型;
i/c中,c被自动提升为int类型,该表达式结果是int类型;
d*s中,s被自动提升为doubl类型,该表达式结果是double类型;
最后,float+int-double,结果会被提升为double类型,double类型为最后结果result的类型。

最后
以上就是激动眼睛为你收集整理的Java对于表达式中的自动类型提升的全部内容,希望文章能够帮你解决Java对于表达式中的自动类型提升所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复