Java 基本数据类型面试题

1、如下程序语句是否有问题?

short s1 = 1;

s1 = s1 + 1;    //1

short s2 = 1;

s2 += 1;    //2

对于注释1来说,在s1+1运算时会自动提升表达式的类型为int,所以将int赋值给short类型的变量s1会出现类型传唤错误,正常情况下无法通过编译,IDE会有错误提示,除非主动加上强转。对于注释2来说,+=是java语法规定的运算符,所以java编译器会默认对它进行特殊处理,因此可以正确编译执行。

2、java中 Integer 和 int 的区别?

int是java内置基本数据类型之一,java为每个基本类型都提供了一个封装类,Integer就是int的封装类;int变量的默认值为0,Integer变量的默认值为null,所以Integer可以区分出未赋值和值为0的区别;Integer类内部提供了一些关于整数操作的方法

3、java中char类型变量能不能存储一个中文的汉字?

java的char类型变量是用来存储Unicode编码字符的,Unicode字符集包含了汉字,所以char类型自然就能存储汉字,但是在某些他叔情况下某个生僻字可能没有包含在Unicode编码字符集中,这种情况下char类型就不能存储该汉字了

4、java 的 switch 语句能否作用在 byte 类型变量上,能否作用在 long 类型变量上,能否作用在 String 类型变量上?

由于 byte 的存储范围小于 int,可以向 int 类型进行隐式转换,所以 switch 可以作用在 byte 类型变量上;由于 long 的存储范围大于 int,不能向 int 进行隐式转换,只能强制转换,所以 switch 不可以作用在 long 类型变量上;对于 String 类型变量在 Java 1.7 版本之前不可以,1.7 版本之后是可以的。(switch支持的类型一共有:byte、short、int、char、String)

5、java 中 3*0.1 == 0.3 将会返回什么?true 还是 false?

false,因为浮点数不能完全精确的表示出来,一般都会损失精度。

6、java 中 float f = 3.4; 是否正确?

不正确,3.4 是双精度数,将双精度型(double)赋值给浮点型(float)属于向下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换 float f = (float)3.4; 或者写成 float f = 3.4F; 才可以。在Java中,默认的小数都是double类型。

你可能感兴趣的:(Java 基本数据类型面试题)