1.简述自动装箱和拆箱
基本数据类型转换为包装类的过程称为装箱,例如把 int 包装成 Integer 类的对象;包装类变为基本数据类型的过程称为拆箱,例如把 Integer 类的对象重新简化为 int。
● 装箱
自动将基本数据类型转换为包装器类型
装箱的时候自动调用的是Integer的valueOf(int)方法
● 拆箱
自动将包装器类型转换为基本数据类型
拆箱的时候自动调用的是Integer的intValue方法
//装箱 int a = 12; Integer b = Integer.valueOf(a); //拆箱 int c = b.intValue();
public class Demo { public static void main(String[] args) { int m = 500; Integer num = m; // 自动装箱 int n = num; // 自动拆箱 System.out.println("n = " + n); Integer num1 = 500; System.out.println("num等价于num1返回结果为" + num.equals(num1)); } }
2.简述==如何使用? ==和equals()的区别?
equals()是方法,==是操作符
1)==用于比较两个引用是否指向同一个对象 (若两边都是基本数据类型,则比较的是是否相等) equals用于比较两个引用是否指向同一个对象(equals方法没有重写)例如 String 类,使用 equals 方法会比较它们的值;
2)由于字符串特殊在字符串常量池中的字符串可以使用==也可以使用equals,只要是比较字符串就用equals
拓展:=== 在javascript中是全等 比较内容和类型
3.简述String str1="i"与 String str2=new String("i")一样吗?
String str1="i" 中 str 指向的对象是 常量池中的 “i”
String str2=new String("i") 中 str 指向的是 堆中的 “i”
4.ArrayList和LinkedList区别
List 共有的特点: 有序(按照添加顺序排序),可以有重复元素
ArrayList
底层是通过数组实现的,是可以变长的
查询快, 中间增删慢(后面的元素位置要发生改变)
LinkedList
底层是链表实现
查询慢(必须从头/尾开始查找,直到找到),中间增删快,只需要改变后继节点位置
5.B和b区别&单位换算
B是Byte的缩写,B就是Byte,也就是字节(Byte);
b是bit的缩写,b就是bit,也就是比特位(bit)。
1MB(兆字节) = 1024KB(千字节)= 1024*1024B(字节) = 1048576B(字节);
1Byte(字节)=8bit(比特位) ;
1024Byte(字节)= 1KB(千字节);
6.并行与并发(线程)
并行:在同一个时间节点,多个事情同时进行。并发:在一个时间段内,多个事情依次进行。
7.Synchronized和Reentrantlock区别(线程的锁)?
Synchronized:这是一个关键字,依靠底层编译后的指令控制。
它可以修饰代码块和方法。
这是一个隐式锁,会自动的添加锁,直到运行结束,同步代码块执行完毕,或者出现异常,锁会自动释放。
Reentrantlock:Reentrantlock是Java.until.concurrent.locks包下的一个类,依靠Java代码控制。
它只能修饰代码块。
它只能由我们主动添加,然后手动释放。
有遗漏的,友友们可以打在评论区,我们一起学习一起进步