Java初级回顾

学完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)一个类只能继承一个抽象类,而一个类可以实现多个接口

接口纯抽象

先就复习到这了。。

原文地址:https://www.cnblogs.com/hnzyyTl/p/5248940.html