Day1 Prepare for the interview

1,java中的==和equals的区别
答:
==作用于基础数据类型的变量,则直接比较其存储的值是否相等
==作用于引用类型的变量,比较的依然是其存储的值是否相等,即所指向的对象的地址

equals只能作用于引用类型的变量,
如果没有对equals方法进行重写,则比较的依然是所指向对象的地址,
如果像String,Date,Double,Integer等类对equals方法进行重写,那么比较的则是所指向的对象内容,
eg.
String str1 = new String(“hello”);
String str2 = new String(“hello”);
System.out.println(str1.equals(str2));
输出true
因为字符串"hello"和字符串"hello"一致。

下面是Object类的equals方法代码和String类的equals方法的代码:
在这里插入图片描述

在这里插入图片描述

2,java中int long char各占多少字节数?
答:
所谓占用字节数,就是申请内存的时候分配的空间大小

bit:1bit = 0/1 一个二进制数

Int整型:
byte:1byte = 8bit(8位) 一个字节(-2的7次方 ~ 2的7次方-1)
short:1short = 16bit(16位) 2个字节(-2的15次方 ~ 2的15次方-1)
int:1int = 32bit(32位) 4个字节(-2的31次方 ~ 2的31次方-1)
long:1long = 64bit(64位) 8个字节(-2的63次方 ~ 2的63次方-1)

Float浮点型:
float:1float = 32bit(32位) 4个字节(-2的31次方 ~ 2的31次方-1)
double:1doube = 64bit(64位) 8个字节(-2的63次方 ~ 2的63次方-1)

Boolean布尔型:1字节(8bit),这种类型只作为一种标志来记录true/false的情况。

char字符型:
char:1char = 16bit(16位) 2个字节(0—2的16次方-1)

英文字母:
字节数 : 1;编码:GB2312
字节数 : 1;编码:GBK
字节数 : 1;编码:ISO-8859-1
字节数 : 1;编码:UTF-8

中文汉字:
字节数 : 2;编码:GB2312
字节数 : 2;编码:GBK
字节数 : 1;编码:ISO-8859-1
字节数 : 3;编码:UTF-8

字符编码:Unicode和UTF-8之间的关系,参见链接:
https://blog.csdn.net/xiaolei1021/article/details/52093706/

3,int和Integer的区别
答:
1,Integer是int的包装类,int则是java的一种基本数据类型
2,Integer变量必须实例化后才能使用,而int变量不需要
3,Integer的默认值是null,int的默认值是0
延伸:
1,两个通过new生成的Integer变量永远不相等(因为new生成的是两个对象,其内存地址不同)
2,Integer变量和int变量进行比较时,只要两个变量的值相等,则结果为true(因为包装类Integer和int类进行比较时,Integer变量会自动拆箱变为int变量,实际上是两个int变量在进行比较)
3,非new生成的Integer变量和new Integer()生成的变量进行比较时,结果为false(因为非new生成的Integer变量指向的是java常量池中的对象,而new Integer()生成的变量指向堆中新建的对象,两者在内存中的地址不同)。
4,对于两个非new生成的Integer变量,进行比较时,如果两个变量的值在区间-128~127之间,则比较结果为true,如果两个变量的值不在此区间,则比较结果为false(原因是:java在编译Integer i=100时,会翻译成为Integer i=Integer.valueOf(100),而javaAPI中对Integer类型的valueOf定义如下:
public static Integer valueOf(int i){
assert IntegerCache.high >= 127;
if (i >= IntegerCache.low && i <= IntegerCache.high){
return IntegerCache.cache[i + (-IntegerCache.low)];
}
return new Integer(i);
},
也就是说,java对于-128到127之间的数,会进行缓存,Integer i=127时,会将127进行缓存,下次再写Integer j = 127时,就会直接从缓存中取,就不会new了。
)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值