java基础学习部分知识总结
一.成员变量与局部变量的区别:
1.作用范围不同:
成员变量:作用于整个类中。
局部变量:作用于方法区中。
2.初始值不同:
成员变量:有初始值,可直接使用。
局部变量:无初始值,需先赋值后使用。
3.在类中位置不同:
成员变量:在类中,方法外。
局部变量:在方法中。
4.内存地址不同:
成员变量:存放于堆或方法区中。
局部变量:存放于栈中。
5.生命周期不同:
成员变量:随着类的调用而开始,随着类的结束而结束。
局部变量:随着方法区的调用而开始,随着方法区调用的结束而结束。
二.抽象类和接口的区别
1.抽象类有构造方法,接口没有
2.抽象类有普通方法,接口有默认方法
3.抽象类只能单继承,接口可以多实现
三.什么是GC root?
1.局部变量表
2.堆中引用
3.方法区中的引用
四.JVM判断对象是否是垃圾算法有哪些?
1.引用计数法
2.可达性算法
五.Class对象有几种获取方式
方法1:Class.forName(“类名字符串”);
方法2:类名.class
方法3:实例对象.getClass()
六.深克隆与浅克隆的区别?
1.深克隆: 深克隆会连同对象中的引用属性一同克隆
2.浅克隆:浅克隆克隆出来的对象中的引用属性仍然指向原对象属性的地址
七.重写与重载的区别
- 重载是发生在本类当中,重写是发生在父子关系中。
- 重载要求方法名相同,参数列表不同。而重写要求方法名、参数列表、返回值相同,权限修饰符不比父类更严格。
- 同一方法重载可以是多个,而重写只能是一个。
- 重写可以使用@override修饰。
八.创建对象的几种方式
1.new对象
2.clone(克隆)
3.反序列化
4.反射
九.ComParable和ComParator的区别
- comparable:是内部比较器,会对目标产生修改。
- comparator:是外部比较器,不会堆目标产生修改。
十.final,fianlly,finalize的区别是什么?
三者除名字相似外无任何联系。
1.final表示最终的,可以修饰类,变量,方法:
(1)final修饰的类表示最终类,此类不能被继承。
(2)final修饰的变量表示常量,赋值后无法变更。
(3)final修饰的方法表示最终方法,此方法不能被重写。
2.fianlly表示异常处理块,不管是否发生异常,finally块一定执行。
3.finalize用于垃圾回收机制,回收垃圾前主动调用,主动作用是关闭资源。
以上即为我Java基础学习的部分知识总结。