第一章
- 1、Java是一门面向对象的程序设计语言。
- 2、语言特点:(1)简单。(2)面向对象。(3)安全。(4)跨平台。
- (5)多线程。
- 3、Java内存回收由系统完成(GC)
- 4、源文件是以(.java)为后缀名,编译后以(.class)为后缀。
- 5、要开发Java程序,需要安装的开发包是JDK。
- 6、单行注释:// 多行注释:/* */。
- 7、main方法的返回类型是无返回值类型(void)。
封装(Encapsulation):隐藏内部实现细节,只对外提供必要的接口。
继承(Inheritance):允许创建一个新的类,从已有的类派生出来。
多态(Polymorphism):同一个类的对象在不同的情况下表现出不同的行为。
第二章
1. 基本语法
- 标识符:
- 规则:由字母、数字、下划线、美元符号组成,不能以数字开头;长度没有限制,不能包含空格;不能和Java关键字相同;对大小写敏感。
- 命名建议:类和结构最好每个字的首字母大写;常量名最好全用大写字母;包名使用小写字母。
- 关键字:
- 事先定义,有特殊意义。目前共有53个关键字,包括abstract、assert、boolean等。其中const和goto是保留字,但在Java中没有具体意义。
- 分隔符:
- {}用于包含一段代码,逻辑上是一个整体。
- ;表示一条Java语句的结束标记。
- 空格(空白符)用于分割不同的部分。
- 常量和变量
- 变量名应该是有意义的,以反映其存储的数据的类型或用途。
- 避免使用Java关键字作为变量或常量名。
- 在使用变量之前,确保已经正确声明并初始化(对于局部变量)。
- 常量一旦被赋值,就不能再改变。尝试修改常量值会导致编译错误。
2. 数据类型
3. 运算符和表达式
(1)算术运算符
(2)逻辑运算符
(3)赋值运算符
第三章
选择结构语句
循环结构语句
方法和递归
方法的语法
例子:
特点:
- 方法名是唯一的标识符。
- 方法可以访问和修改其范围内的变量。
- 方法可以调用其他方法,甚至递归调用自己。
- 方法可以有参数和返回值,也可以没有。
递归
例子:
特点:自己调用自己
第四章
类(Class)
组成:
对象(Object)
创建:使用new关键字和类的构造方法来创建对象。
例子:
第五章
Java类的继承
继承的定义:
继承是面向对象编程的三大特性之一,它允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法。子类可以获得父类的所有公共(public)和保护(protected)属性和方法,并且可以添加自己的属性和方法。
继承的特点:
示例:
抽象类和接口
抽象类:
- 抽象类不能被实例化(即不能直接创建对象)。
- 抽象类可以包含抽象方法(没有方法体的方法)和非抽象方法。
- 子类继承抽象类后,必须实现抽象类的所有抽象方法(除非子类也是抽象类)。
接口:
- 接口是一种完全抽象的类,只包含抽象方法和常量(Java 8之后还包含默认方法和静态方法)。
- 接口不能被实例化。
- 一个类可以实现多个接口,但只能继承一个类(除了间接继承)。
- 实现接口的类必须实现接口中的所有抽象方法。
示例:
多态
多态的定义:
多态是面向对象编程的又一重要特性,它允许使用父类类型的引用指向子类对象。在运行时,根据对象的实际类型来执行相应的方法。
多态的实现方式:
示例:
异常
异常的定义:
异常是在程序执行过程中发生的错误、意外或特殊情况,它会打断程序的正常执行流程。Java通过异常处理机制来捕获和处理这些异常情况。
异常的类型:
- 检查型异常(Checked Exception):在编译时就能检查出来的异常,必须显式捕获或声明抛出。
- 非检查型异常(Unchecked Exception):运行时异常,如NullPointerException、ArrayIndexOutOfBoundsException等,通常不需要显式捕获或声明抛出。
- 错误(Error):表示系统级别的严重错误,如OutOfMemoryError,通常不需要程序捕获和处理。
异常处理机制:
- 使用try-catch块来捕获并处理异常。
- try块中包含可能抛出异常的代码。
- catch块用于捕获并处理try块中抛出的异常。
- 可以使用finally块来执行无论是否发生异常都需要执行的代码。
- 还可以使用throws关键字在方法签名中声明该方法可能抛出的异常,将异常处理责任转移给调用者。
示例:
- 使用try-catch块来捕获并处理异常。
- try块中包含可能抛出异常的代码。
- catch块用于捕获并处理try块中抛出的异常。
- 可以使用finally块来执行无论是否发生异常都需要执行的代码。
- 还可以使用throws关键字在方法签名中声明该方法可能抛出的异常,将异常处理责任转移给调用者。
- 检查型异常(Checked Exception):在编译时就能检查出来的异常,必须显式捕获或声明抛出。
- 非检查型异常(Unchecked Exception):运行时异常,如NullPointerException、ArrayIndexOutOfBoundsException等,通常不需要显式捕获或声明抛出。
- 错误(Error):表示系统级别的严重错误,如OutOfMemoryError,通常不需要程序捕获和处理。
- 方法重载(Overloading):同一个类中可以有多个同名但参数列表不同的方法。
- 方法重写(Overriding):子类可以覆盖父类的方法,实现自己的版本。
- 父类引用指向子类对象(向上转型):通过父类类型的引用来调用子类对象的方法,在运行时根据对象的实际类型执行相应的方法。
- 接口是一种完全抽象的类,只包含抽象方法和常量(Java 8之后还包含默认方法和静态方法)。
- 接口不能被实例化。
- 一个类可以实现多个接口,但只能继承一个类(除了间接继承)。
- 实现接口的类必须实现接口中的所有抽象方法。
- 抽象类不能被实例化(即不能直接创建对象)。
- 抽象类可以包含抽象方法(没有方法体的方法)和非抽象方法。
- 子类继承抽象类后,必须实现抽象类的所有抽象方法(除非子类也是抽象类)。
- 子类可以直接使用父类的非私有(非private)属性和方法。
- 子类可以覆盖(重写)父类的非final和非static方法。
- 子类对象在实例化时会调用父类的构造方法(如果子类没有显式调用父类的构造方法,则会自动调用父类的无参构造方法)。
- 使用new关键字和类的构造方法来创建对象。
- 属性(字段):类中的变量,用于存储对象的状态信息。
- 方法:类中的函数,用于描述对象的行为。
- 构造方法:特殊的方法,用于创建和初始化对象。
- 访问修饰符:如public、private、protected等,用于控制类、属性、方法的访问权限。
- 内部类:一个类可以定义在另一个类的内部,称为内部类。
- 方法名是唯一的标识符。
- 方法可以访问和修改其范围内的变量。
- 方法可以调用其他方法,甚至递归调用自己。
- 方法可以有参数和返回值,也可以没有。
- for 循环
- for循环用于在指定次数内重复执行代码块。
- 它通常有三个部分:初始化表达式、条件表达式和更新表达式。
- 例子:
- while 循环
- while循环在条件为真时重复执行代码块。
- 循环体在执行前会检查条件。
- 例子:
- do-while 循环
- do-while循环与while循环类似,但循环体至少会执行一次。
- 循环体在执行后会检查条件。
- 例子:
- 嵌套循环
- 循环可以在另一个循环内部使用,这称为嵌套循环。
- 通常用于处理二维数组或需要多次迭代的情况。
- break 和 continue 语句
- break语句用于完全终止最近的循环。
- continue语句用于跳过当前循环的剩余部分,并开始下一次迭代。
- if-else 语句
- if 语句用于测试某个条件,如果条件为真,则执行if块中的代码。
- else 语句与if语句配对使用,如果if条件为假,则执行else块中的代码。
- 可以使用多个else if来检查多个条件。
- 例子:
- switch 语句
- switch语句用于基于不同的情况执行不同的代码块。
- 它使用case关键字来定义不同的情况,每个case后面跟着一个值和一个冒号。
- break关键字用于在匹配到某个case后跳出switch语句。
- 例子: