JAVA基础知识点整理

Java基础知识

1、==与equals区别
答:默认equlas方法与==规则一样,但是重写equals方法可以改变其内部比较规则;equals是判断两个变量或者实例指向同一个内存空间的值是不是相同;而==是判断两个变量或者实例是不是指向同一个内存空间;举个通俗的例子来说,==是判断两个人是不是住在同一个地址,而equals是判断同一个地址里住的人是不是同一个;当比较对象是基本类型时都使用==进行比较,比较的是地址;当比较对象为引用类型时,String这个类里重写了equals方法,它比较的不再与==一样,而是比较的内容值是否相等。String中的equals方法其实比较的是字符串的内容是否一样。也就是说如果像String、Date这些重写equals的类,你可要小心了。使用的时候会和Object的不一样。
2、如何理解堆栈
答:在java中我们一般把对象存放在堆区,把对象的引用放在栈区。因此在上面三个字符串的内存状态应该是下面这样的。

JAVA基础知识点整理_第1张图片

(1)String str1 = "Hello"会在堆区存放一个字符串对象
(2)String str2 = new String("Hello")会在堆区再次存放一个字符串对象
(3)String str3 = str2这时候Str3和Str2是两个不同的引用,但是指向同一个对象。
所以一下判断:
(1)str1 == str2嘛?意思是地址指向的是同一块地方吗?false
(2)str1 == str3嘛?意思是地址指向的是同一块地方吗?false
(3)str2 == str3嘛?意思是地址指向的是同一块地方吗?true
(4)str1.equals(str2)嘛?意思是地址指向的内容一样嘛?true
(5)str1.equals(str3)嘛?意思是地址指向的内容一样嘛?true
(6)str2.equals(str3)嘛?意思是地址指向的内容一样嘛?true

3、重写和重载
答:规则上的不同:
重载的规则:
①必须具有不同的参数列表。
②可以有不同的访问修饰符。
③可以抛出不同的异常。
重写方法的规则:
①参数列表必须完全与被重写的方法相同,否则不能称其为重写而是重载。
②返回的类型必须一直与被重写的方法的返回类型相同,否则不能称其为重写而是重载。
③访问修饰符的限制一定要大于被重写方法的访问修饰符。
④重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。
类的关系上的区别:
重写是子类和父类之间的关系,是垂直关系;重载是同一个类中方法之间的关系,是水平关系。
4、如何做到一个类不能new对象
答:
非抽象类,非静态类,构造函数私有化
典型的就是单例模式,通过静态方法来获取实例
5、StringBuilder和StringBuffer的区别
JAVA基础知识点整理_第2张图片
StringBuffer比StringBuilder多了一个toStringCache缓冲区,而这个缓冲区只有在调用toString方法时才会赋值;两个类初始化长度都为15。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
总结:
(1)如果要操作少量的数据用 String;
(2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;
(3)单线程操作字符串缓冲区下操作大量数据 StringBuilder;

你可能感兴趣的:(Java)