java基础篇:java基本数据类型

2020-07-08  本文已影响0人  潜行前行

1:java几种基本类型大小

关键字 类型 位数 (8位一字节) 取值范围(表示范围)
byte 整型 8 -2^7 ~ 2^7-1
short 整型 16 -2^15 ~ 2^15-1
int 整型 32 -2^31 ~ 2^31-1
long 整型 64 -2^63 ~ 2^63-1
float 浮点数 32 3.402823e+38 ~ 1.401298e-45
double 浮点数 64 1.797693e+308~ 4.9000000e-324
char 文本型 16 0 ~ 2^16-1
boolean 布尔值 32/8 true/false

boolean的占用大小是多少,有如下说法

正解 在java里的正确回答应该是boolean类型单独使用是4个byte,在数组里则是1个byte。但是虚拟机为什么不用byte或short代替boolean而是int,这样不是更节省内存空间?因为int对于32位处理器,一次处理的数据是32位,CPU寻址也是32位的查找,具有高效储存的特点(如果有更好的理解,大家共同交流下)

2:64位的JVM中,int类型长度是多少

32位;int是32位类型,不会随着系统或者jvm的位数而改变

3:char类型变量能不能储存一个中文的汉字,为什么

java默认编码是unicode编码方式每个字符占用两个字节,char是16位类型,中文储存需要两个字节,因此可以储存中文字符。

4:浮点数float和双精度浮点数double表示法

浮点数的二进制表示法由三部分组成

float、double二进制结构

类型 符号位 指数位(e) 尾数位(m)
float 1 8 23
double 1 11 52

5:基本类型对应的包装类,区别

基本类型 包装类
boolean Boolean
short Short
byte Byte
int Integer
long Long
float Float
double Double
char Character
image

6:基本类型的自动转换

自动转换规则有如下几个

image image

7:short s1 = 1; s1 = s1 + 1;有错吗? short s1 = 1; s1 += 1;有错吗?

8:不同的基本类型强制转换,可能会产生什么问题

9:float f = 3.4; 是否正确?

在java里,不加后缀修饰的浮点数默认是double类型。double类型不能隐式类型转成float,编译会报错

10:表达式3*0.1 == 0.3 将会返回什么?true还是false?

浮点型存在精度问题,3*0.1得到的double数据尾数位 和 0.3 尾数位是不一样的 ,false

11:浮点数和BigDecimal

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

13:能否在不进行强制转换的情况下将一个double值赋值给long类型的变量

不行,因为double取值范围大于long类型。不强制转换会编译报错。如果使用 += 操作符编译不会报错,但是存在隐含的强制转换

关注公众号,大家一起交流

image

参考文章

上一篇下一篇

猜你喜欢

热点阅读