1.面向对象:通过实例化对象,使用对象调用方法解决问题;面向过程:将问题解决拆分成一系列方法解决。
2.构造方法无法继承重写,可以方法重载,不用写上void否则成为普通方法。
3.关于继承:子类拥有父类的所有属性和方法其中包括私有类型,只是私有方法和属性无法访问。
4.抽象类和接口:抽象类是对事物的抽象,接口是对行为的抽象。例如飞机和鸟都可以飞,但是飞机有直升机和战斗机类的不同并且鸟也有种类不同,可以使用继承抽象类解决。飞的行为可以用接口实现。
5.关于继承中super,this:super()表示通过子类去调用父类的构造方法。this()表示调用类中的其他构造方法。如果类中都没有会默认调用super()。使用super()可以初始化父类封装好的属性。super只是代表父类的特征,没有保存地址。
6.浅拷贝中拷贝对象和原对象共用同一个内部对象。深拷贝会完全复制整个对象,包括这个对象所包含的内部对象。
7.hashCode() 数据结构散列表内容。由于加入Hash容器的规则是元素经过hashCode()散列函数处理后比对hashCode值,如果hashCode值所对的索引有其他元素存在,则继续判断元素值是否相等使用equals(),不相等通过散列算法分配其他位置,相等则不加入。如果hashCode值所对的索引没有其他元素存在,则直接加入Hash容器。
8.字符串使用“+”内部调用StringBuilder的append方法拼接字符串。String类对象在循环中使用“+”会创建多个StringBuilder对象,但是直接创建StringBuilder使用append()方法只会创建一个对象。
9.String类型的不可变性。只有通过反射才能改变当前创建的String类对象的值。通过对引用变量的赋值修改,实际只是创建了一个新的对象。
10.
使用final修饰String,在程序编译阶段当常量访问,相当于访问同一个字符串常量池中的字符串。
没有final的修饰使用str1+str2则相当于创建一个新的对象,比较得到false。str3创建的对象在编译阶段放入常量池中,str5得到str3指向的字符串的地址。str3和str5指向字符串常量池中字符串的同一个地址。