1.32位系统和64位系统的JVM中,int类型变量的长度是多少?
int长度是32 位,4 个字节(一个字节8位)。
java 是跨平台的语言,在java中,int 类型变量的长度是一个固定值,与平台无关,都是 32 位。意思就是说,在 32 位 和 64 位 的Java 虚拟机中,int 类型的长度是相同的。
2.JRE、JDK、JVM 之间有什么不同?
JDK是开发者开发Java软件的开发工具包;
JRE是客户用于运行Java软件的环境,包含了JVM和Java的核心类库(Java API);
JVM是Java 虚拟机,包含了JRE和开发工具;
总结:我们只需安装JDK即可,它包含了java的运行环境和虚拟机
3.String是最基本的数据类型吗?
不是
Java中的基本数据类型只有8个:byte、int、char、long、float、double、boolean和short;除了基本类型,剩下的都是引用类型。
4.byte b1=3, b2=4 , b; b=b1+b2; b=3+4;哪句是编译失败的呢?为什么呢?
b=b1+b2编译失败
两个byte相加,会被自动当成int类型,而b是byte,所以需要强转b=(byte)(b1+b2)才对
5.byte a=127; a+=5; System.out.println(a);请问输出结果是什么?
byte是8位取值范围-128~127
127的二进制=01111111
5 的二进制=00000101
a+=5超出了byte的临界值此时只取8位
计算如下:
(首位符号位)
01111111+
00000101=
10000100(负的二进制值转十进制:逐位取反再+1)
01111011+1=01111100=
-124
6.Java中3*0.1 == 0.3将会返回什么?true还是false?
false,
0.1是在Java中默认是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型会造成精度丢失,因此需要强制类型转换 float f = (float)1.0;或者写成0.1F。
而且因为有些浮点数不能完全精确的表示出来,所以不能用来比较。
7.java中char类型变量能不能存储一个中文的汉字
能存储一个汉字
char类型变量是用来储存Unicode编码的字符的,unicode字符集包含了汉字,所以char类型当然可以存储汉字的。如果某个生僻字没有包含在Unicode编码字符集中,那么char就不能存储该生僻字。
8.final 修饰的变量有什么作用?
final的意思是最终的、不变的,指常量。在前面加上final就是常量,不加就是变量。
9.String str="i"与 String str=new String("i")一样吗?
不一样,
String str = " i " 的方式,会分配到常量池中,得到一个地址。
String str = new String(“i”) 则会被分到堆内存中,会创建一个新的对象。
10.基本数据类型中数值存储范围由大到小排序?
整数型:long 8字节 int 4字节 short 2字节 byte 1字节
浮点型:double 8字节 float 4字节
字符型:char 2字节
boolean 无法得到其大小
排序:double 8字节 float 4字节 long 8字节 int 4字节 short 2字节 char 2字节 byte 1字节
float四个字节却比long大这个情况的原因在于,float占的4个字节,也就是32位二进制中,1位是符号位,23位是尾数位,剩下的8位是指数位,8位代表0~255,根据IEEE 754规定,0代表0,255代表无穷大,剩下1~254,每个减去127,代表-126~127这个指数范围,也就是说float的幂级数大致范围是2的-126次幂到127次幂之间,而long是8个字节,也就是64位,除去符号位,范围在只有2的63次幂,远远小于float。