关于面试知识题:== 和equals的区别,String、StringBuffer、StringBuilder 的区别,静态变量和实例变量的区别

文章目录

    • 一:== 和equals的区别
    • 二:String、StringBuffer、StringBuilder 的区别
    • 三:静态变量和实例变量的区别

一:== 和equals的区别

1 :==号是运算符,比较的是基本数据类型或者引用数据类型中值是否相等 .

2 : equals是Object 类的方法,比较的是引用数据类型的地址值,要想比较对象内容是否相等,需要重写equals方法.

二:String、StringBuffer、StringBuilder 的区别

1 :使用效率:

StringBuffer 和 StringBuilder比string执行效率高:String 对象是不可变的,而 StringBuffer 和 StringBuilder是可变字符序列.每次对String对象进行的操作实际上是一个不断创建新的对象并且将旧的对象回收的一个过程,执行速度慢,而StringBuffer和StringBuilder 是对对象本身的操作,不会生成新的对象,执行速度快.

2:线程安全性:

String 和StringBuffer的线程比StringBuilder线程安全:因为String 有 final 修饰,是不变的,安全性简单;StringBuffer类中方法都添加了synchronized锁,用来保证线程安全,而StringBuilder没有做任何线程安全处理.

3:使用范围:

-操作少量的数据 适合用 String
–单线程操作字符串缓冲区下操作大量数据适合用 StringBuilder
–多线程操作字符串缓冲区下操作大量数据 适合用 StringBuffer

三:静态变量和实例变量的区别

1 存储区域不同:静态变量存储在静态存储区域,实例变量存储在堆中,会被释放。
2 静态变量与类相关:实例变量与对象相关。
3 生命周期不同,静态变量在类启动时就分配指定内存;实例变量在被对象调用后才分配内存,调用结束时内存释放

你可能感兴趣的:(面试,java,职场和发展)