Java知识点
学习java时不要背代码,学习新技术或知识点先学习基本原理和基本语法
本篇内容为学习总结,包含了javaSE重要的知识点
JDK
- java_jdk介绍
- java运行原理示意图
基本数据类型转换
-
byte,short,char三者计算是首先转化为int类型
-
byte -127~128
继承细节
- 子类构造器中必须用super()调用父类构造器,如果父类中有无参构造器,子类中super()可以省略不写,默认在子类构造器第一句调用。
- 父类中的private属性和方法在子类中不能直接调用,要用公共方式访问 call 函数名 ();
- super()和this()都只能存在构造器的第一行,不能同时存在一个构造器内
- 在子类中调用函数的方法
- 函数名() 调用本类的函数,若本类无此函数,向上搜索
- super.函数名() 这种办法可以直接跳过本类,往父类层层搜索
方法重写
- 子类中重写的函数的类型必须是父类函数类型的子类
- 子类中不能缩小父类方法的访问权限
- 访问权限 public > protected > 默认 > private(比如父类是 public,子类只能是 public)
- 方法重写和方法重载比较
多态
-
方法的多态
-
方法重载:类中某个函数有重载,在其它类中调用此函数时,可以传入不同的参数,这是该方法的多种状态的体现
-
方法重写:子类B 中重写了父类 A 中的 say 方法
多态的体现:new A().say 和 new B().say 为两种状态
-
-
**对象的多态 **
-
Animal 和 Dog, Cat 为父子类关系,可以 Animal animal = new Dog(),编译类型为 Animal,运行类型为 Dog。重新赋值 animal = new Cat(),运行类型变为Cat,编译类型不变。
-
向上转型:父类引用指向子类对象
语法:Animal animal = new Dog();
如 Animal 中有 cry 方法,Dog 类中重写了cry,主函数中是这样一段代码
=======================
Animal animal = new Dog();
animal.cry();
=======================
开始运行时,先从 Dog 类中查找方法,如果 Dog 类中有 cry 方法,则执行。如果没有 cry,则向父类中查找 cry。
- 补充一点:animal不能调用 Cat 类中的特有成员 ( 特有成员是父类中没有,子类中新写的成员)
-
向下转型:把编译类型 Animal 转化为 Dog 后,就可以调用子类中的特有成员。
语法:Dog dog = (Dog) animal;
dog 子类引用,指向 Dog 对象,原来的 animal 为父类引用,指向 Dog 对象。
-
对于属性来说只看左侧的编译类型,base.count输出父类的count
-
hashCode
-
**全类名:**包名加类名
-
没有重写 hashCode 的话输出 16 进制
-
当输出一个对象时自动调用 toString 方法,下面两种方法效果相同
Finalize
Car bmw =new Car(“宝马”);
bmw = null
- bmw 指向堆中 new 的对象,然后将 bmw 置空,那么这个 new 的对象没有了引用指向它,这时垃圾回收器就会回收堆中的这个对象,在回收之前,会调用该对象的 finalize 方法(至少有一个引用指向该对象,该对象就不会销毁)
- 如果一个对象变成垃圾后,不是立刻执行该函数。那样的话垃圾回收器需要实时监测有无垃圾,会浪费不必要的性能。而是会根据垃圾回收算法执行