今天面试一家游戏公司,做了套笔试题,其中第一题就是最基础的基本类型问题,如下:
问:int、float、short、byte、char所占字节是多少?
看到题目的这一刻,心中暗想,虽然多年没看这些,但这么简单的题能难倒我?遂下笔如飞 int(4)、float(4)、short(2)、byte(1)、char(2)
做完题后,拿给前台的小姐姐,没想到前台小姐姐竟然说我写的基本类型答案中有错的(现在前台小姐姐都学java了?)。前台小姐姐说完后,我心中一颤:难道这么多年划水,把最基础的都划没了?但是看自己写的答案没问题啊,不过前台小姐姐却坚持我写的有问题。整的我无比郁闷。
回到家后,将今天面试的问题复盘,用代码证明一下java中基本类型所占的字节数量。
// byte
System.out.println("byte------------------------");
System.out.println(Byte.BYTES); // 字节
System.out.println(Byte.SIZE); // 位数
System.out.println(Byte.MIN_VALUE + " - " + Byte.MAX_VALUE);
// short
System.out.println("short------------------------");
System.out.println(Short.BYTES);
System.out.println(Short.SIZE);
System.out.println(Short.MIN_VALUE + " - " + Short.MAX_VALUE);
// int
System.out.println("int------------------------");
System.out.println(Integer.BYTES);
System.out.println(Integer.SIZE);
System.out.println(Integer.MIN_VALUE + " - " + Integer.MAX_VALUE);
// long
System.out.println("long------------------------");
System.out.println(Long.BYTES);
System.out.println(Long.SIZE);
System.out.println(Long.MIN_VALUE + " - " + Long.MAX_VALUE);
// char
System.out.println("char------------------------");
System.out.println(Character.BYTES);
System.out.println(Character.SIZE);
// float
System.out.println("float------------------------");
System.out.println(Float.BYTES);
System.out.println(Float.SIZE);
System.out.println(Float.MIN_VALUE + " - " + Float.MAX_VALUE);
// double
System.out.println("double------------------------");
System.out.println(Double.BYTES);
System.out.println(Double.SIZE);
System.out.println(Double.MIN_VALUE + " - " + Double.MAX_VALUE);
输入结果如下:
byte------------------------
1
8
-128 - 127
short------------------------
2
16
-32768 - 32767
int------------------------
4
32
-2147483648 - 2147483647
long------------------------
8
64
-9223372036854775808 - 9223372036854775807
char------------------------
2
16
float------------------------
4
32
1.4E-45 - 3.4028235E38
double------------------------
8
64
4.9E-324 - 1.7976931348623157E308
结论:
byte、short、int、long 所占字节分别为 1、2、4、8;
char、float、double 所占字节分别为 2、4、8;
而boolean只有TRUE和FALSE,分别对应1和0,只占用1个字节;