JavaSe8中的各种区别(持续更新中)

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代码控制。

                         它只能修饰代码块。

                          它只能由我们主动添加,然后手动释放。

有遗漏的,友友们可以打在评论区,我们一起学习一起进步
 

猜你喜欢

转载自blog.csdn.net/weixin_56800176/article/details/125704034
今日推荐