Java基础01(校招准备)
java特点
1.平台无关性
2.GC
3.语言特性
4.面向对象
5.异常处理
6.库类
类加载顺序
(1) 父类静态代码块(包括静态初始化块,静态属性,但不包括静态方法)
(2) 子类静态代码块(包括静态初始化块,静态属性,但不包括静态方法 )
(3) 父类非静态代码块( 包括非静态初始化块,非静态属性 )
(4) 父类构造函数
(5) 子类非静态代码块 ( 包括非静态初始化块,非静态属性 )
(6) 子类构造函数
面对对象
一、面向对象的特性
1.封装
- 抽象的过程
2.继承
- 重用的过程
- 子类将继承父类所有的数据域和方法(包括私有的)
- 可以通过反射的方式暴力获得
- 重写(Overwrite)两小两同一大原则:
- 方法名相同,参数类型相同
- 子类返回类型小于等于父类返回类型
- 子类抛出异常小于等于父类抛出异常
- 子类访问权限大于等于父类访问权限
3.多态
二、面向对象和面向过程的区别
待完善
java四种修饰符的限制范围
类本部 | 本包 | 子类 | 外部类 | |
---|---|---|---|---|
public | ✔ | ✔ | ✔ | ✔ |
protected | ✔ | ✔ | ✔ | × |
default | ✔ | ✔ | × | × |
private | ✔ | × | × | × |
接口和抽象类的区别和联系
1.抽象类可以有构造方法,接口中不能有构造方法。
2.抽象类中可以有普通成员变量,接口中没有普通成员变量
3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。
4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然 eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。
5. 抽象类中可以包含静态方法,接口中不能包含静态方法
6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。
7. 一个类可以实现多个接口,但只能继承一个抽象类。
内部类
一、内部类有哪几种?各自的用途
- 静态内部类:
- 静态内部类本身可以访问外部的静态资源,包括静态私有资源。但是不能访问非静态资源,可以不依赖外部类实例而实例化。
- 成员内部类:
- 成员内部类本身可以访问外部的所有资源,但是自身不能定义静态资源,因为其实例化本身就还依赖着外部类。
- 局部内部类:
- 局部内部类就像一个局部方法,不能被访问修饰符修饰,也不能被static修饰。
- 局部内部类只能访问所在代码块或者方法中被定义为final的局部变量。
- 匿名内部类:
- 没有类名的内部类,不能使用class,extends和implements,没有构造方法。
- 多用于GUI中的事件处理。
- 不能定义静态资源
- 只能创建一个匿名内部类实例。
- 一个匿名内部类一定是在new后面的,这个匿名类必须继承一个父类或者实现一个接口。
- 匿名内部类是局部内部类的特殊形式,所以局部内部类的所有限制对匿名内部类也有效。
二、为什么局部内部类和匿名内部类只能访问局部final变量?
1.若不是final,会造成数据不一致性
2.内部类和外部类是处于同一个级别的,内部类不会因为定义在方法中就会随着方法的执行完毕就被销毁.
3.当外部类的方法结束时,局部变量就会被销毁了,但是内部类对象可能还存在。
- 就将局部变量复制了一份作为内部类的成员变量,这样当局部变量死亡后,内部类仍可以访问它,实际访问的是局部变量的”copy”
4.将局部变量复制为内部类的成员变量时,必须保证这两个变量是一样的,也就是如果我们在内部类中修改了成员变量,方法中的局部变量也得跟着改变,怎么解决问题呢?
- 这实际上也是一种妥协
- 就将局部变量设置为final,对它初始化后,我就不让你再去修改这个变量,就保证了内部类的成员变量和方法的局部变量的一致性
三、内部类意义
待完善
根类Object中包含的方法
- clone();//克隆一个对象
- equals();
- finalize();
- getClass();
- notify();
- notifyAll();
- hashCode();
- toString();
- wait();
局部变量和成员变量
1.变量声明的位置决定变量作用域
2.变量作用域确定可在程序中按变量名访问该变量的区域
3.成员变量:定义在类中的变量(类或其他类中可以调用)
4.局部变量:定义在方法中的变量(方法)
5.区别:
-
a.作用域不同
- 局部变量的作用域仅限于定义它的方法
- 成员变量的作用域在整个类内部都是可见的
-
b.初始值不同
- Java会给成员变量一个初始值
- 不会给局部变量赋予初始值
6.在同个方法中,不允许有同名局部变量 ,在不同方法中,可以有同名的局部变量,在同个类中,成员变量和局部变量同名时,局部变量具有更高的优先级。
java运算符
淡云一笔安洛三幅 ( 单目 >运算>移位>比较>按位>逻辑> 三目 > 赋值 )
单目运算符
算术运算符
位移运算符
关系运算符
位运算符
逻辑运算符
三目运算符
赋值运算符
String
装箱和拆箱
装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。
序列化和反序列化
序列化:将数据结构转换称为二进制数据流或者文本流的过程。序列化后的数据方便在网络上传输和在硬盘上存储。
反序列化:与序列化相反,是将二进制数据流或者文本流转换称为易于处理和阅读的数据结构的过程。