目录
[六、Java 数组](#六、Java 数组)
[七、Java 枚举](#七、Java 枚举)
[九、面向对象的 5 大原则](#九、面向对象的 5 大原则)
[十、面向对象的 3 大特性](#十、面向对象的 3 大特性)
[封装:手机的 "外壳与接口"](#封装:手机的 “外壳与接口”)
一、java程序结构

二、java基本数据类型
- 整数类型:byte,short,int,long
- 浮点数类型:float,double
- 字符类型:char
- 布尔类型:boolean
Java基本数据类型占用的字节数:


引用数据类型
常见引用数据类型
| 数据类型 | 默认值 |
|---|---|
| 数组 | null |
| 类 | null |
| 接口 | null |
接口是不能被实例化的,我们需要对其进行实现。
java
// 初始化一个对象
Pet dog = new Pet();
// 初始化一个数组
int[] arr = new int[10];
三、java修饰符
- 访问控制修饰符 : default, public , protected, private
- 非访问控制修饰符 : final, abstract, static, synchronized
四、java常量和变量
常量可以分为如下 3 种类型:
- 静态常量 :
final之前用public staic修饰,表示该常量的作用域是全局的,我们不用创建对象就能够访问它。 - 成员常量:类似于成员变量,但是最大的不同在于它不能被修改。
- 局部常量:作用类似于局部变量,不同之处也在于不能修改。
变量分为下面3种:
- 局部变量
- 类变量(静态变量)
- 成员变量(非静态变量)
五、java运算
- 算术运算符

- 关系运算符

- 位运算符

- 逻辑运算符

- 赋值运算符

- 条件运算符
三元运算符:
关系表达式?表达式 1:表达式 2;
在Java的计算表达式中,运算优先级从高到低依次是:

布尔运算是一种关系运算,包括以下几类:
- 比较运算符:
>,>=,<,<=,==,!= - 与运算
&& - 或运算
|| - 非运算
!
关系运算符的优先级从高到低依次是:
!>,>=,<,<===,!=&&||
六、Java 数组
数组是储存在堆上的对象,可以保存多个同类型变量。
Java的数组有几个特点:
- 数组所有元素初始化为默认值,整型都是
0,浮点型是0.0,布尔型是false; - 数组一旦创建后,大小就不可改变
java
// 数组
public class Main {
public static void main(String[] args) {
// 5位同学的成绩:
int[] ns = new int[5];
ns[0] = 68;
ns[1] = 79;
ns[2] = 91;
ns[3] = 85;
ns[4] = 62;
}
}
- 静态初始化
java
int[][] arr1 = {{1, 2, 4}, {5, 7, 9}, {19, 12, 18}};
- 动态初始化
java
int[][] arr1= new int[3][3];
arr1 = new int[][]{{1, 2, 4}, {5, 7, 9}, {19, 12, 18}};
int[][] arr2= new int[3][];
arr2 = new int[][]{{1, 2, 4}, {5, 7, 9}, {19, 12, 18}};
动态初始化:手动指定数组长度,然后由系统给出默认初始化值。
静态初始化:手动指定数组元素,然后系统会根据元素个数计算出数组长度。
七、Java 枚举
java
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
枚举常量通常使用大写字母命名,多个常量之间用逗号分隔。枚举可以实现接口,但不能继承其他类(因为所有枚举隐式继承 java.lang.Enum)。枚举还可以覆盖方法,例如 toString()。
八、java关键词
这是一种事先定义好的,有特定意义的标识符,也叫做保留字。对于 Java 编译器有着特殊意义,用来表示一种数据类型,或者表示程序的结构等。此外,关键字不能用作变量名、方法名、类名、包名和参数名。常见的关键字可以分为如下几类,具体的关键字如下图所示:
- 访问控制类
- 类、方法及变量修饰符类
- 程序控制类
- 错误处理
- 包相关
- 基本类型
- 变量引用
- 保留字

九、面向对象的 5 大原则
- 单一职责原则 SRP

- 开放封闭原则 OCP

- 里氏替换原则 LSP

- 依赖倒置原则 DIP

- 接口分离原则 ISP

十、面向对象的 3 大特性
封装

封装:手机的 "外壳与接口"
核心:内部复杂细节藏起来,只给你简单的操作方式。
- 手机内部:CPU、电池、电路板、信号模块,非常复杂,你也看不懂、不能乱碰。
- 给你暴露的:屏幕、按键、充电口、耳机孔。
- 你不用管内部怎么工作,只要按按钮、点屏幕就能用。
对应 Java:
- 用
private把成员变量藏起来(内部零件) - 用
public方法提供操作(按键、接口) - 防止别人乱改内部数据,保证安全
一句话:把复杂包起来,只留简单入口
继承

核心:子类沿用父类的功能,再新增自己的特色。
先有一个基础手机类:
- 能打电话、发短信、充电、有屏幕
然后:
- 智能手机 extends 基础手机继承了打电话、发短信,新增:触屏、上网、APP
- 游戏手机 extends 智能手机继承上面所有,新增:散热风扇、高刷屏、游戏按键
- 折叠屏手机 extends 智能手机继承上面所有,新增:折叠屏、分屏模式
一句话:子承父业,少写重复代码,还能扩展新功能
多态

核心:同一个方法名,不同手机实现不一样。
所有手机都有一个方法叫:拍照 ()
- 普通手机拍照:模糊、无美颜
- 智能手机拍照:清晰、自动对焦
- 旗舰手机拍照:夜景模式、美颜、长焦
- 折叠屏手机拍照:外屏预览、多角度拍摄
一句话:同名方法,不同对象,不同表现。
