2018-04-28 不念不忘少年蓝@ 2022-05-26 08:19 84阅读 0赞 问:如下程序语句有什么问题吗? short s1 = 1; s1 = s1 + 1;//1 short s2 =1; s2 +=1; short j=1; j+=1; short i=1; i=i+1; 对复合赋值表达式来说,E1 op= E2 (诸如 i += j; i -= j 等等),其实是等同于 E1 = (T)((E1) op (E2)),其中,T是E1这个元素的类型。对于j+=1.8;其实等于:j=(short)(j+1.8).运算后的j等于2! java 中 char 类型变量能不能储存一个中文的汉字,为什么? java 的 char 类型变量是用来储存 Unicode 编码字符的,Unicode 字符集包含了汉字,所以 char 类型自然就能存储汉字,但是在某些特殊情况下某个生僻汉字可能没有包含在 Unicode 编码字符集中,这种情况下 char 类型就不能存储该生僻汉字了。char 在Java中是2个字节。java采用unicode,2个字节(16位)来表示一个字符。 java 的 Integer 和 int 有什么区别? int 是 java 内置基本数据类型之一,java 为每个基本类型都提供了一个封装类,Integer 就是 int 的封装类(也叫包装类型);int 变量的默认值为 0,Integer 变量的默认值为 null,所以 Integer 可以区分出未赋值和值为 0 的区别;Integer 类内部提供了一些关于整数操作的方法,例如上文用到的表示整数的最大值和最小值。 Integer i=null; System.out.println(i); Integer j=0; System.out.println(j); int k=0; System.out.println(k); java 中 float f = 3.4; 是否正确? 不正确,3.4 是双精度数,将双精度型(double)赋值给浮点型(float)属于向下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换 float f = (float)3.4; 或者写成 float f = 3.4F; 才可以。 float f=3.4f; java 中 3\*0.1 == 0.3 将会返回什么?true 还是 false? false,因为浮点数不能完全精确的表示出来,一般都会损失精度。 System.out.println(3*0.1);//0.30000000000000004 System.out.println(3*0.1==0.3);//false 能否在不进行强制转换的情况下将一个 double 值赋值给 long 类型的变量? 不行,我们不能在没有强制类型转换的前提下将一个 double 值赋值给 long 类型的变量,因为 double 类型的范围比 long 类型更广,所以必须要进行强制转换。 java 的 switch 语句能否作用在 byte 类型变量上,能否作用在 long 类型变量上,能否作用在 String 类型变量上? ![20180428114110412][] 由于 byte 的存储范围小于 int,可以向 int 类型进行隐式转换,所以 switch 可以作用在 byte 类型变量上;由于 long 的存储范围大于 int,不能向 int 进行隐式转换,只能强制转换,所以 switch 不可以作用在 long 类型变量上;对于 String 类型变量在 Java 1.7 版本之前不可以,1.7 版本之后是可以的。 [20180428114110412]: /images/20220526/2174582abdb24050b3281c55d4e6988d.png
还没有评论,来说两句吧...