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。