Java复习

2023-12-19 22:45:11

CH1?Java Fundamentals

1.1 Java Features(java特色)

1.1 Simplicity: simple grammar, rich library? 简单好用:?语法简单,库文件丰富

1.2 Pure OO: everything is object!? 所有程序都是对象

1.3? Security: memory access, garbage collection, exception 安全:内存使用,垃圾收集,意外处理

1.4 Portability: Java Virtual Machine JVM

1.5 Interpreted execution: Bytecode

1.2 The Structure Of Java Programs :一共分为6部分

2.1 package declaration 包声明? (一是该类所属的包,二是该类import的包)

2.2 class declaration? 类声明

2.3 variable declaratio? 变量声明和初始化

2.4 constructor 构造函数

2.5 method? 方法?

2.6 main method? 主要方法

1.3 Java Primary Data Types

1.主要数据类型的值不是对象!

2.每一个主要数据类型都有一个相应的Wrapper (封装器)将其值封装为一个对象

注:“472”不是一个int对象,a的Compare函数不适用

1.4 Naming:开头(字母、下划线、$) + 其它(字母、数字、下划线、$)

name = First letter (letter、_、$) +The remaining part (digit 、letter 、underline‘_’ 、‘$’)

1.5 Java 操作符

5.1 Mathematical operator: +、- 、* 、/ 、%

5.2 Relational operator :> 、>= 、?< 、<= 、?== 、!= 、?

instanceOf (测试左边是否是右边类的实例)

5.3 Logical operator :&、|

5.4 Bitwise operator (移位操作):<<、<<

5.5 Assignment operator(赋值操作)

CH2 Java OOP

1.Class and Objects

1.1 关于内部类和static

用static修饰的代码块表示静态代码块,当Java虚拟机(JVM)加载类时,就会执行该代码块。

另外一个关键字final:可以用来修饰类、方法和变量,表明它们不能被继承或被修改。

1.1.1?static修饰的变量(可以根据类名直接访问)

一般在需要实现以下两个功能时使用静态变量:

1.在对象之间共享值时

2.方便访问变量时

1.1.2 static修饰的方法(可以通过类名直接调用)

? ? ? ??

因此静态方法:

1、不能使用this关键字

2、只能调用所属类的静态成员和静态方法.

Math类中的所有方法都是静态的,因为均可直接调用。

此外,一个类内部的方法一般都是非静态的。

1.1.3?static修饰的类(又称为静态内部类)?

1>只有成员内部类才能加 static?变成静态内部类,成员内部类不能存在任何static的变量和方法。

非静态内部类是跟外部类的实例绑定的。

2>成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括 private?员和静态成员)

内部类和外部类的方法和变量同名时,使用如下方法访问外部类同名成员:

外部类?.this?.成员变量

外部类?.this?.成员方法

如果不加外部类.this. 则调用的是内部类变量和方法

3>一个类中可以有多个静态初始化块和多个普通初始化块;静态初始化块的执行要早于普通初始化

;同一个类型的初始化块的执行顺序取决于定义的先后顺序

1.2 Overload 重载(一个类内部同名但不同参数的函数称为重写)

重载只有一个要求,你得让编译器知道你用的是那么多重名函数中的哪一个!!

编译器通过什么来判断呢?只能通过函数中的参数呀。

1.3 Main method(主方法——程序的入口)

每个程序都有0个或者1个Main method:

1.4 Storge of Objects(对象的存储)

1>寄存器:

2>栈:对象地址、主要类型

3>堆:对象本身

4>方法区: 对象方法,静态数据

5>常量池:

6>内存:? 流对象、持续对象

1.5?Access Control (使用权限管理)

2.Abstraction(类似C++中的模板)

2.1抽象类:

如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。

抽象类本身并不能被实例化,抽象类必须要继承后才能使用。

2.2 抽象方法:

只有方法名,没有方法体。因为可能每个子类的该方法体都不同。

声明抽象方法会造成以下两个结果:

  • 如果一个类包含抽象方法,那么该类必须是抽象类。
  • 任何子类必须重写父类的抽象方法,或者声明自身为抽象类。

3.Inheritance(继承)

The access right 只能缩小,不能放大

且在进行构造时,子类的构造函数可以构造父类的类

例:Animal a = new Cat(); // 向上转型

3.1 继承关键字 extended、implements

1>extended表示该继承是单继承:

?2>使用 implements 关键字可以变相的使java具有多继承的特性

3>java不支持多继承,但支持多重继承

4>super 与 this 关键字:

super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类

this关键字:指向自己的引用。

示例:

5>final 关键字

final 可以用来修饰变量(包括类属性、对象属性、局部变量和形参)、方法(包括类方法和对象方法)和类。

使用 final 关键字声明类,就是把类定义定义为最终类,不能被继承,或者用于修饰方法,该方法不能被子类重写,或用于修饰变量,该变量不可被修改

声明类:

注:?final 定义的类,其中的属性、方法不是 final 的。

6>构造器Constructor

子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式)。如果父类的构造器带有参数,则必须在子类的构造器中显式地通过?super?关键字调用父类的构造器并配以适当的参数列表。

如果父类构造器没有参数,则在子类的构造器中不需要使用?super?关键字调用父类构造器,系统会自动调用父类的无参构造器。

示例:

7>@Override

子类对父类方法内容的重新定义。

若想要在子类中调用父类中的被重写方法,只能使用super关键字进行调用

重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。

示例:

4.Polymorphism(多态)

4.1 多态是同一个行为具有多个不同表现形式或形态的能力。

现实中,比如我们按下 F1 键这个动作:

  • 如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;
  • 如果当前在 Word 下弹出的就是 Word 帮助;
  • 在 Windows 下弹出的就是 Windows 帮助和支持。

同一个事件发生在不同的对象上会产生不同的结果。

4.2多态存在的三个必要条件

  • 继承
  • 重写
  • 父类引用指向子类对象:Parent p = new Child();

5、接口

除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

5.1 接口定义

一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。

  1. 不能实例化
  2. 没有构造方法

5.2 接口声明

  1. 方法默认public abstract修饰:接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。
  2. 变量默认public static final修饰:子类修改了值会影响到其他所有子类,因此就不应该允许子类修改这个值,所以也必须定义为final。如果不是 static?的,这个变量来自哪一个接口就会产生歧义,所以实现类使用接口中的变量必须通过接口名指定,也就只能定为 static?

5.3 接口实现

当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。

类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。

5.4 接口继承

一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。

文章来源:https://blog.csdn.net/lyhizjj/article/details/135087851
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。