学完Java初级也一年了,很多东西都忘的差不多了,今天趁着周日再翻开之前的笔记本好好复习下。
1.java语言是一种编译解释型语言,java编译器将java代码编译成字节码指令存放到.class文件中,运行时使用特定的
java解释器把字节码指令翻译成相应的机器指令并且边翻译边执行
2.JVM是java的虚拟机,是JRE的核心,包含了如下内容:
1)cpu:java解释器
2)栈内存:存放基本类型数据和引用
3)堆内存:存放对象
4)方法区:存放了每个类的方法定义和方法体
5)垃圾回收器:回收堆内存中的垃圾对象
6)类加载器
3.java运行程序的过程
1)加载字节码文件
2)验证字节码文件
3)分配和管理内存空间
4)翻译字节码指令
5)垃圾回收
4.对java中引用的理解
引用:给定一个对象命名,操作一个对象的媒介。java不能直接操作对象
5.类和对象的关系
类:是对象的模板
对象:是根据类产生的实例,每个对象在内存中单独存在彼此之间无干扰
6.引用与对象的关系
对象:通过new关键字加构造器进行初始化,存放于堆内存中
引用:对象初始化完成之后的返回值赋值给一个引用变量,则该引用持有该对象,java代码可以通过该引用操作该对象,引用存放在栈内存中
7.什么是封装
在面向对象中将一系列有关系的数据和行为放到一个或多个类中,而把这些操作以及数据等放到一起,已接口的方式向外提供服务
8.类的重用方式
组合和继承
9.什么是继承
抽取各个子类的共同特征,描述为一个父类,实现一般到特殊关系的一种机制
10.组合
简单的理解为接口
11.super关键字
1)调用父类构造器:super(<参数列表>),实现代码重用
2)当做引用使用:持有相关的直接父类对象,调用父类被覆盖的方法,访问父类中被隐藏的属性
12.this关键字
1)调用本类中重载构造器,可以代码重用
2)当做引用使用,是当前对象的引用,在每个实例方法中隐式的包含该引用
13.方法重载
方法名相同,参数列表不同的方法具有重载关系
参数列表不同:类型不同,顺序不同,个数不同
14.方法签名
方法签名包括方法名和参数列表,编译器通过方法签名来识别名字
15.方法覆盖:在子类中定义一个与父类中方法同名的方法
1)方法签名相同
2)返回值类型有父子关系
3)子类方法不能比父类方法的访问控制更严格
4)不能比父类方法抛出更多种类的异常
16.什么是动态绑定
绑定:把一个方法的调用定位至某一个方法的过程,称之为绑定,分为静态绑定和动态绑定
静态绑定:在编译过程中即定位方法,比如私有方法,构造器,静态方法
动态绑定:在程序运行过程中,JVM根据对象的类型不同定位至不同的方法。抽象方法,被子类覆盖的方法。
17.static关键字
只与类有关,与对象无关
1)静态属性在类加载时初始化,且只初始化一次
2)静态方法中不能直接访问实例成员
3)实例方法中可以直接访问静态成员
4)在其它类中,通过类名.成员名访问静态成员
5)静态初始化块在类加载时执行
18.静态初始化块
作用:实现复杂逻辑的初始化
19.实例初始化块
作用:用于初始化实例属性,如果多个构造方法中都有相同的逻辑可以写入实例初始化块
20.final关键字
1)final属性只能显式的初始化一次(有且仅有一次),完成后不能再修改
2)final方法不能被覆盖
3)final类不能被继承
(静态常量用final修饰)
21.抽象
在父类中尽量描述各个子类需要实现的功能,而不具体实现,将实现交由各个子类根据自身情况各自实现,增强了程序的灵活性和可维护性
22.抽象类
1)抽象类不能直接实例化
2)抽象类也有构造方法
3)抽象类中可以没有构造方法
4)abstract不可修饰构造器和静态方法
5)抽象类的子类要实现所有抽象方法,否则该子类也为抽象类
6)abstract不可修饰final方法
7)抽象方法只能有public或者protected或默认(不能为private)
23.接口
1)指系统可以提供的服务或功能
2)是指interface关键字定义的接口类型
interface:是方法定义和常量的集合,用于规定该类对象所能提供的服务,更好地降低子系统之间的耦合度
3)方法默认使用public abstract修饰
4)成员变量默认使用public static final修饰,顾成为静态常量
5)一个接口可继承多个接口
6)一个类可实现多个接口
24.向上转型和向下转型
向上转型:如果把引用变量转换为父类型,称为向上转型,总是安全的
向下转型:如果把引用变量转换为子类型,称为向下转型,不一定安全,当子类型引用持有父类型对象时会抛出ClassCastException
25.多态
多态分为静态多态和动态多态
1)静态多态:就是方法重载
2)动态多态:是指系统A访问系统B的服务时,系统B可以通过多种实现来提供服务,而这一切对于A来说都是透明的。
26.内部类
在一个类中定义的类,成为内部类,成为内部类或者嵌套类。分为实例内部类,静态内部类,局部内部类,匿名内部类
27.Throwable类是所有异常类的父类
28.Exception
分为运行时异常和受检查异常
1)运行时异常:RuntimeException及其子类都是运行时异常
对于该类异常Java编译器不会强制代码去处理,因为一般是程序的bug
2)受检查的异常:Exception及其子类除了运行时异常。
对于该类异常Java编译器强制程序去处理
声明的都不会是运行时异常,也不用我们捕获
29.异常转译
捕获原始异常,把它转换为一个新的不同类型的异常继续抛出,这种处理异常的方式称为异常转译
30.异常链
在抛出新的异常对象时,把捕获的原始异常封装至新的异常中,则实现了异常链
31.包装类型
32.java垃圾回收机制
1)垃圾回收器的主要目的是回收已经无用的对象的内存空间,节约内存资源,避免程序崩溃
2)垃圾回收器是一个系统线程,由JVM控制,程序无法控制,只能通过调用system.gc()和Runtime.getRuntime().gc()来通知JVM清理垃圾
3)垃圾回收器的启动毫无规律可言,有可能程序运行完毕了还在启动
4)每个对象都有一个finalize方法,垃圾回收器在回收对象之前会调用该方法
5)两种回收策略:
1)复制式:将正在被使用的对象复制到另一片内存中,然后删除原来内存中的所有对象(垃圾对象多)
2)自省式:遍历所有的对象,将正在使用的对象进行标注,然后删除没有标注的对象(垃圾对象比较少)
引用置空,对象将被回收
33.字符串常量池
34.抽象类和接口的区别
语法区别:
1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract方法;
2)抽象类中的成员变量可以是各种类型的,而在接口中的成员变量只能是public static final类型的;
3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法
4)一个类只能继承一个抽象类,而一个类可以实现多个接口
接口纯抽象
先就复习到这了。。