Java:面向对象理解、集合、IO、NIO、并发、反射源码分析
一.面向对象
1.创建对象的5种方式
(1)使用new关键字
(2)使用Class类的newInstance方法
(3)使用构造函数类的newInstance方法
(4)使用clone方法 --》未实现Cloneable会报错
(5)使用反序列化
5动态代理
2.this、super的用法
它们都是用来调用构造器,有什么区别呢?
(1)this
this.属性名;
当局部变量与成员变量名称相同时,使用this关键字代表成员变量
如果局部变量和成员变量名称不同,this可以省略
this.方法名();
本类中可以省略this
this();
this("小花",2);
调用本类的构造函数,首行、只能用一个
(2)super
super.属性名;
当父类和子类有相同的同名成员变量时,调用父类中的普通中的属性
super.方法名(); ❌
调用父类的成员方法
super();
super("小花",2);
调用父类的构造方法,首行、只能用一个
3.static、final的用法 JVM内存模型
(1)static
[1]属性 --静态变量/类变量≠成员变量
[2]方法 --静态方法/类方法(no Constructor)
[3]代码块 --静态代码块
[4]内部类 --静态内部类
(2)final
[1]修饰类 --不能被继承
[2]修饰方法 --不能被重写
[3]修饰变量 --值不能修改,常量
4.abstract、interface的用法
接口、抽象类的区别,普通方法、抽象方法的区别
5.extends、implements的用法
继承、实现的区别
.@Override
方法的重载、方法重写的区别
继承:
当我们想要一个模板,实现多种对象,把代码提取出来放到一个单独的类中 --这个存放的类叫作父类
父类(超类,基类): 被继承者
子类(派生类) : 继承者
语法:
public class 子类名 extends 父类名{
}
注意事项:
1、一个类只能直接继承一个类,但是可以间接继承其他类
2、一个类如果没有明确extends另一个类,那么默认继承Object类:一个类,是所有类的超类
范围:
子类可以继承父类的所有数据,包括私有数据,但是要间接访问,构造函数不能继承
好处:
省代码
方法重写:
如果子类和父类方法名完全相同,子类的这个方法就叫做方法的重写
重写需要注意的地方:
1、构成重写的条件: 方法的返回值,方法名,参数列表要完全相同,修饰符的范围不能小于父类
2、私有的方法和构造函数不能被重写
3、静态方法不存在重写的概念,但是可以被继承
6.向上转型、向下转型
7.静态代码块、构造代码块、同步代码块
8.静态内部类、匿名内部类
9.面向对象的理解
10.类变量、实例变量、全局变量、局部变量的区别
类变量:独立于方法之外的变量,用static修饰
实例变量/全局变量:独立于方法之外的变量,不过没有static修饰
局部变量:类的方法中的变量
11.各种数据类型的显示转换、隐式转换
Object是所有引用类型的父类 包装类型都是Number的子类
java.lang.包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
整型常量池的长度是固定的, byte
11.交换两个对象的数值
二.集合
1.HashMap源码分析
Java中基本数据结果 –》数组、指针(引用)
(1)影响性能 --》初始容量、加载因子
容量:哈希表中的桶的容量,初始容量:哈希表创建时的容量,加载因子:哈希表扩容之前能达到的容量百分比
(2)寻址方式
key-计算方式-hashcode-数组长度取模 位移运算
更新中…