Java基础学习重点归纳(1)—个人向
1.成员变量和局部变量的区别
| 成员变量 | 局部变量 |
---|
定义位置 | 类以内,方法以外 | 类以内 |
作用范围 | 至少在本类 | 从定义位置开始到定义它的代码块结束 |
默认值 | 有默认值 | 没有默认值,必须先赋值,再使用 |
命名冲突 | 可以和局部变量重名,局部变量优先 | 在重合作用范围内,不能有同名的局部变量 |
2.方法重载以及方法覆盖要求
| 方法重载 | 方法覆盖 |
---|
方法名 | 相同 | 相同 |
形式参数 | 不同 | 相同 |
返回值类型 | 无要求 | 相同 |
修饰符 | 无要求 | 相同或者更宽 |
3.访问修饰符的继承性
| 本类 | 同包及同包子类 | 非同包子类 | 其他 |
---|
私有的 private | ✔ | | | |
默认的 default | ✔ | ✔ | | |
受保护的 protected | ✔ | ✔ | ✔ | |
公开的 public | ✔ | ✔ | ✔ | ✔ |
4.this与super的应用及注意事项
this:代表当前对象
this. 用在本类的成员方法或构造方法中,代表调用该对象的属性或成员方法。
当成员变量和局部变量命名冲突时,必须使用this. 区分成员变量。
this() 用在该类的构造方法中,调用本类其他的构造方法。
必须在构造方法的第一行有效语句。
=====================================================================================
super:
super. 用在子类的构造方法或成员方法中,调用父类的属性或父类的成员方法
super.父类属性名/super.父类中成员方法(实参)
super()用于子类构造方法中,代表创建父类对象时,指示JVM利用哪一个构造方法完成父类对象的创建
必须放在子类构造方法的第一行
=====================================================================================注意:
1.如果子类构造方法中第一行没有定义super(),则JVM会默认在第一行添加super()
2.一个构造方法中不能同时定义this()和super()。
5.三大修饰符
1.abstract 抽象的
1. abstract修饰的类称为抽象类
抽象类只能声明,不能单独创建对象
抽象类中有构造方法,构造方法供子类应用
子类继承抽象类,不想成为抽象类,则必须实现抽象类中所有的抽象方法
2. abstract修饰的方法称为抽象方法
抽象方法只有方法的声明,没有方法的实现
抽象类中即可以定义抽象方法也可以定义非抽象方法
=====================================================================================
2.static 静态的
1. static修饰的属性称为静态属性/静态变量/类变量
类变量,和创建的对象无关,可以通过 类名.静态属性名
2. static修饰的方法称为静态方法
静态方法中只能直接访问本类中的静态方法 通过 类名.静态方法名(实参)
3. static修饰的初始化代码块称为静态代码块
在类加载时,完成对静态属性的初始化
=====================================================================================
3.final 最终的
1. final可以修饰变量(局部变量、成员变量、静态变量)
特点:作用范围内的常量,只允许一次赋值,可以多次使用
2. final可以修饰方法
特点:能被继承,不允许被覆盖
3. final可以修饰类
特点:不能被继承,即没有子类
6.接口和抽象类的区别
| 抽象类 | 接口 |
---|
关键字 | abstarct | interface |
属性 | 无要求 | 公开静态常量 |
方法 | 抽象方法|非抽象方法 | 抽象方法 |
构造方法 | 有 | 无 |
继承模式 | 单继承 | 接口之间多继承 |
7.常用类–内部类
内部类分为:成员内部类、静态内部类、局部内部类、匿名内部类
局部内部类:
1.位置:定义在方法以内
2.创建局部内部类的对象,必须在定义它的方法内部进行对象创建
3.局部内部类可以访问定义它的方法内部的局部变量,但是要求被访问的局部变量必须被final修饰
(JDK8.0默认将局部内部类访问的局部变量前面加final)
匿名内部类:
1.匿名内部类是特殊的局部内部类
2.匿名内部类定义时必须实现一个接口或者继承一个父类
3.基于一个匿名内部类只能创建该类的一个对象,并且匿名内部类的定义和对象的创建一起完成
8.==和equals的区别
==:
1.如果两端是基本数据类型的变量,则比较的是数值是否相同
2.如果两端是引用数据类型的变量,则比较的是地址是否相同
equals:
用于比较对象的内容是否相同
9.final和finalize的区别
final:修饰符,可以用于修饰类,方法,变量
finalize:方法签名,用于JVM垃圾回收器回收垃圾对象的时候调用的方法
10.基础数据类型对应的包装类
基本类型 | 包装类 |
---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
char | Character |
11.String和StringBuilder的区别
StringBuffer和StringBuilder的区别
String 不可变长字符串,在进行字符串拼接时,相对效率低
StringBuilder 可变长字符串,相对效率高
=====================================================================================
StringBuffer JDK1.0版本,线程安全,运行效率慢
StringBuilder JDK5.0版本,线程不安全,运行效率快
12.Collection根接口
1.List
有序,有下标,元素可以重复
2.Set
无序,无下标,元素不能重复
3.Map
存储任意的键值对(Key-value)
键:无序,无下标,元素不允许重复
值:无序,无下标,元素允许重复
13.List接口的实现类及区别
1.ArrayList:
查询效率高,增删慢。线程不安全,运行效率快
2.Vector:
查询效率高,增删慢。线程安全,运行效率低
3.LinkedList:
查询效率慢,增删快,线程不安全,运行效率快
14.异常分类
父类 Throwable
1.Error:错误,不能手动处理
2.Exception:异常,可处理
RuntimeException:运行时异常,可处理也可不处理
CheckedException:已检查异常,必须处理