在B站学java,跟着视频随笔记下的重点。
java学习基础
入门
- 注释
- 数据类型
- 类型转换
- 变量、常量
- 运算符
- 包机制、javadoc
流程控制
- 用户交互Scanner
- 顺序结构
- 选择结构
- 循环结构
- break& continue
内存分析
-
堆
存放new的对象和数组
可以被所有的线程共享,不会存放别的对象引用
-
栈
存放基本变量类型(会包含这个基本类型的具体数值)
引用对象的变量(会存放这个引用在堆里面的具体地址)
-
方法区
可以被所有的线程共享
包含了所有的class和static变量
数组的四个基本特点
- 其长度是确定的,一旦被创建,大小是不可被改变的
- 其元素必须是相同类型
- 数组中的元素可以是任何数据类型,包括基本类型和引用类型
- 数组变量属于引用类型,数组也可以看成是对象,数组中的每一个元素相当于该对象的成员变量。数组本身就是对象,java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。
数组边界
下标合法区间:0-length-1
面向对象
值传递和引用传递
值传递值传递一个值
引用传递传递的是一个对象
构造器
必须掌握
- 和类名相同
- 没有返回值
注意:如果要定义一个有参的构造器,需要显式的构造一个无参的构造器
继承
super注意点
- super调用父类的构造方法,必须在构造放放的第一个
- super必须只能出现在子类的方法或者构造方法中
- super和this不能同时调用构造方法
VS this:
-
代表的对象不同
this:本身调用者这个对象
super:父类对象的应用
-
前提:
this:没有继承也可以用
super:只能在继承条件下使用
-
构造方法:
this():本类的构造
super():父类的构造
重写
重写需要有继承关系,子类重写父类方法
-
方法名必须相同
-
参数列表必须相同
-
修饰符可以范围扩大: public> Protected>default>private
-
抛出的异常:范围可以缩小但不可以扩大:ClassNotFoundException–>Exception
-
为什么需要重写?
父类的功能子类不一定需要,或者不一定满足
alt+insert:override
多态
注意事项:
- 多态是方法的多态,属性没有多态
- 父类与子类必须有联系 不然使用多态会出现类型转换异常
- 存在条件:继承关系,方法需要重写,父类引用指向子类对象 Father f = new Son();
- 不可以重写也就不可以实现多态
- static
- final 修饰的方法不可以被继承了
- private
instanceof:判断两个类之间有没有继承关系
把子类转换为父类,向上转型;
把父类转换为子类,向下转型;强制转换;可能丢失一些子类的方法
方便方法的调用,减少重复的代码,简洁
抽象类
不能通过new实现,只能通过子类继承实现
抽象类中可以写普通方法
抽象方法必须在抽象类中
存在的意义:提高开发效率
接口
接口本质是契约,制定好之后大家都遵守
普通类:只有具体实现
抽象类:具体实现和规范(抽象方法)都有
接口:只有规范,自己不可以写方法。是专业的约束,实现约束和实现分离:面向接口编程
声明类的关键字是class 声明接口的关键字是interface
作用:
- 约束
- 定义了一些方法,让不同的人实现
- 接口不能被实例化
- 接口可以实现多个接口(多继承)
- 必须要重写接口中的方法
异常
异常体系结构