什么是面向对象?谈谈你对面向对象的理解

  1. 谈跟面向过程的区别
  2. 谈面向对象的三大特性

image.png
image.png
image.png

JDK、JRE、JVM三者的区别和联系

  1. 谈三者分别是啥
  2. 谈包含关系

image.png
image.png

== 和 euqals的区别

  1. == 既能比较基本数据类型(比较值)也能比较引用数据类型(比较内存地址)
  2. equqls方法属于Object类,没有重写默认也是==,

    我们看到的String等类等equals方法是被重写过的,容易形成equals就是比较值的误区。
    image.png
    image.png
    image.png
    image.png

    1. @Test
    2. public void test222() {
    3. Integer i = new Integer(1);
    4. Integer j = new Integer(1);
    5. System.out.println(i == j); //false
    6. Integer m = 1;
    7. Integer n = 1;
    8. System.out.println(m == n);//true
    9. Integer x = 128;
    10. Integer y = 128;
    11. System.out.println(x == y);//false
    12. Integer a = 127;
    13. Integer b = 127;
    14. System.out.println(a == b);//true -128~127
    15. }

简述final作用

  1. final 表示最终的
  2. 修饰类、方法、变量

image.png
image.png
image.png

为什么局部内部类和匿名内部类只用访问局部final变量

  1. 首先内部类和外部类是同一个级别 编译之后会生成两个class文件
  2. 外部类结束,局部变量就会被销毁,但内部类可能还持有引用,这就形成矛盾
  3. 所以实际上我们是将局部变量复制了一份作为内部类的成员变量,
  4. 为了保持一致性,我们将局部变量设置为final,保证建立的拷贝一致。

image.png
image.png

String、StringBuffer、StringBuilder区别和使用场景

不能回答考虑线程安全就用StringBuffer 不考虑就用StringBuilder
image.png
1基本点
String:不可变的字符序列;底层使用final char[]存储
StringBuffer:可变的字符序列;线程安全的(所有方法用synchronized修饰),效率低。底层使用char[]存储
StringBuilder:可变的字符序列;JDK1.5才新增;线程不安全的,效率高;底层使用char[]存储
**
2从源码上看

StringBuffer和StringBuilder底层创建的是一个“value”+16大小的char数组,(默认16大小,或者指定)
而且这个数组是可扩容的。扩容一般为原来的2倍+2,int newCapacity = (value.length << 1) + 2;
特殊情况2种:有一种是扩大两倍还不够的,就直接以if (newCapacity - minCapacity < 0) { newCapacity = minCapacity;}``它本身作最大值了
还有一个小点,Buffer和Builder可以用append(String s = null),即可以存,父类有一个方法判断null的话把null作为4个字符存入。

3 指导意义:开发过程中,如果我们明确知道可能频繁修改且长度超过16,建议大家使用StringBuffer(int capacity) 指定扩容长度

Ps:一个需要注意的点,虽然给Buffer和Build分配的空间是16,但是这不意味着length()方法是16,他输出的其实类似于total

重载和重写的区别

注意一点:方法的返回值和访问修饰符可以不同,但是他们的不同不构成方法的重载。
image.png
image.png
image.png

接口和抽象类的区别

image.png
image.png

List和Set的区别与联系 待复习

  • 都继承Collection接口
  • 区别有序可重复 无序不可重复
  • list适合追加, 插入,删除,效率低
  • set适合随机存储,插入删除,但是遍历时效率低

image.png

hashCode与equals

image.png
image.png

ArrayList和LinkedList区别

  1. 底层是什么实现,存储空间,适合干啥
  2. 缺点

image.png
拓展
image.png