【每日一题】java基本数据类型基础面试题

问:如下程序语句有什么问题?
short s1 = 1;
s1 = s1 + 1;//1
short s2 = 1;
s2_+= 1;//2

答:对于注释1 来说,在S1+1 运算时会自动的提升表达式类型为int ,所以将int 赋予short 类型的变量s1 会出现类型转换错误,除非自动加上强制转换。对于注释2,+= 是java语法规定的运算符,所以java编译会对他进行转换特殊处理,故正确编译执行。

问:java中char类型变量能不能存储一个中文汉字?

答: * char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,
 * 所以,char型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在
 * unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。补充
 * 说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。

 * 备注:后面一部分回答虽然不是在正面回答题目,但是,为了展现自己的学识和表现自己

问:Integer 和 int 有什么区别?

答:int是java内置基本数据类型之一,java为每个基本类型提供了一个封装类(也叫包装类型);Integet 是 int 的封装类型; int 默认值为0 ;Integer 默认值为null ;而且Integer 提供了一些关于整数操作的方法,比如最大值最小值等。

问:switch语句能否作用在byte类型上,能否作用在long类型变量上,能否作用在String类型变量上?

答:switch表达式后面的数据类型只能是byte,short,char,int四种整形类型,枚举类型和java.lang.String类型(从java 7才允许),不能是boolean类型。其中byte,short,char是自动默认转换为int ,而long不行

默认转换顺序(从小到大,向上转型):

byte short char ->int->long->double    

byte short char 运算时转换为int ,运算中有long类型则结果是long类型,有double类型,结果是double类型。

byte short char 相互之间不转换,它们运算时先转换为int类型。


强制转换(从大到小,向下转型):

格式   目标数据类型  变量 = (目标数据类型) 数据;

问:java中 3*0.1 == 0.3 将会返回什么?true?false?

因为浮点数不能精确出来。


问:Java中 float f = 3.4;是否 正确?

不正确。3.4是双精度数,将双精度数向下转换会造成精度损失。因此需要强制转换 float f = (float)3.4 , 或者

float f = 3.4F;才可以。

猜你喜欢

转载自blog.csdn.net/durenniu/article/details/81048805