JavaSe基础篇
一、java开发环境搭建
1.1 知识框架
1.2 了解java语言
- 简单性
- 面向对象
- 健壮性:自动垃圾回收机制(GC机制)
- 可移植/跨平台:JVM
- 多线程
1.3 JDK、JRE、JVM关系
1.4 开发第一个java程序
1.4.1 初步了解java加载与执行
1.4.2 JDK安装
安装包下载地址:https://www.oracle.com
配置变量环境 path classpath
测试:javac -version
1.4.3 第一个java代码
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
1.5 注解
- 单行注解://
- 多行注解:/* * * */
- javadoc注解:/** * * */
1.6 public class、class区别
- 同一个java文件中只能声明一个public class 类名必须和文件名一致
- 但是却能声明多个class
- 一个java文件可以生成多个字节码文件
二、标识符、关键字
2.1 知识框架
标识符:程序员有权限修改名字
2.2 标识符命名规则
-
由下划线、美元符合、字母、数字组成 汉字可以不建议使用
-
不可用数字开头 中间有空格
-
不可用关键字和保留字
-
严格区分大小写字母
-
理论上没有长度限制
2.3 标识符的命名规范
- 见名知意
- 驼峰命名
- 类名 接口名 首字母大写 后面每个单词首字母大写
- 方法名 变量名 首字母小写 后面每个单词首字母大写
- 常量名 全部大写 单词以‘_’衔接
2.4 关键字
- java自己使用的标识符 全部小写
三、变量
- 变量:给一个内存取名字
3.1 知识框架
3.2 字面量
- 字面量:数据、数值
- 分类:
- 整型
- 浮点型
- 字符型:单引号 只能存一个字符
- 布尔型:true、false
- 字符串型:双引号
3.3 使用变量
数据类型 变量名 = 值;
3.4 变量分类
- 实例变量
- 静态变量
- 局部变量(方法参数)
3.5 变量作用域
- 声明位置不同 作用域不同
- 出大括号就不认识
- 就近原则 会访问离它最近的数据
四、数据类型
4.1 知识框架
4.2 数据类型
- 整型:byte、short、int、long
- 浮点型:float、double
- 布尔型:boolean
- 字符型:char
-
十进制转二进制:除二取余 取反
-
十进制、八进制 0、二进制 0b、十六进制 0x
-
A:65、a:97、0:48
-
默认整型 int 浮点型 double
-
正码 反码 补码 【正数 三个一样】【负数 正 反符号位不变 补反加1】
-
float加f/F long加L/l
4.3 基本数据类型转换
- 除了boolean其他七种 可以转换
- 没有超过byte、short、char取值范围 可以直接赋值
- 自动类型转换
- 强制类型转换
- byte、short、char运算会转换int 再运算
- 混合运算会转换成最大容量 再运算
五、运算符
5.1 知识框架
-
算数运算符:+、-、*、/、++、–、%
-
关系运算符:<、>、==、>=、<=、!=
-
逻辑运算符:&、|、!、&&、||
-
赋值运算符:+=、-=、*=、/=、%=、^=、&=、|=、>>=、<<=
-
位运算符:>>、<<、>>>(带符号位移)、^、&、|
-
条件运算符:布尔表达式?表达式1:表达式2;
-
字符串连接运算符:+
六、控制语句
6.1 知识框架
七、方法
7.1 知识框架
- 代码复用性
7.2 方法定义、调用
- 定义:[修饰符] 返回类型 方法名(形式参数列表){方法体}
- 调用:静态方法 用类名调用 同一个类中省略类名
- 实例方法需要创建对象调用
7.3 JVM初内存结构图
7.4 方法重载
- 同一个类中 方法名相同
- 形参列表不同
- 个数不同 顺序不同 类型不同
7.5 方法递归
- 方法调用本身
八、认识面向对象
8.1 知识框架
- OP面向过程
- OO面向对象 OOA面向对象分析 OOD面向对象设计 OOP面向对象编程
8.2 三大特征
- 封装、继承、多态
8.3 类、对象概念
- 类:具有共同特征的事务的模板
- 对象:现实存在的个体
九、对象创建、使用
9.1 知识框架
9.2 对象创建、使用
- 对象创建:class定义的类为 引用类型 变量名 = new 引用类型();
- 使用:用创建的对象调用属性、方法
- 系统默认赋值:
9.3 对象创建、使用深层次
9.4 构造方法
- 方法名与类名一致
- 不能写返回类型 void也不能 返回实际上是当前类类型
- 一个类可定义多个构造 方法重载
- 创建对象 属性初始化操作
- 系统默认提供无参构造 如若提供有参 系统则不提供无参构造 自己提供
- new调用构造
9.5 空指针异常
- 空引用去调用实例属性、实例方法会报异常
9.6 方法参数传递
- 会将值复制一份传递
- 但引用是地址 复制地址 会再次指向该对象
十、封装
10.1 知识框架
10.2 封装
- 封装:信息隐藏 包装
- 好处:保护信息安全、隐藏复杂、暴露简单
10.3 封装实现
- private修饰属性 提供set get方法
十一、this、static
11.1 知识框架
11.2 this
- 看成变量 引用 存储在堆中对象内部 保存当前对象的地址
- 不能在static方法中
- 语法this.属性/方法; this(参数列表); 大多数省略不写
- 可以直接调用实例变量和实例方法
- 构造方法只能出现在首行
11.3 static
- 可修饰 变量 方法 代码块
- 使用static都是与类相关的 无需创建对象 以类名直接访问
- 静态在类加载时初始化 存在方法区
- 用对象访问静态 实际在运行时还是通过类去访问的
11.4 静态代码块
- 类加载时执行一次
- 一个类中可以有多个静态代码块 自上而下执行
11.5 静态方法
- 实际开发 工具类 一般定义静态方法
十二、继承
12.1 知识框架
12.2 继承
- 继承解决了代码复用的问题
- 不能继承私有属性、方法 构造方法
- 支持单继承 不支持多继承 但支持间接继承
- 默认继承Object
- 缺点:继承后 耦合度非常高
12.3 实现
- class XX extends
十三、方法覆盖和多态
13.1 知识框架
13.2 方法覆盖
- 当父类方法不够子类业务需求时
- 继承关系
- 相同的返回值类型、方法名、形式参数列表
- 注意:
- 私有方法 构造方法不能继承 不能被覆盖
- 不能抛出比原方法更多的异常
- 不能比原方法更低的权限
- 与属性 静态方法无关
13.3 多态
-
同一个行为在不同对象有不同的表现结果
-
父类引用指向子类对象
-
向上转型 自动类型转换
-
向下转型 强制类型转换 instanceof
静态绑定:在编译时 去父类寻找属性方法
动态绑定:在运行时 去对象中寻找属性方法
13.4 OCP开闭原则
- 对扩展开放 对修改关闭
十四、super
14.1 知识框架
14.2 super
-
不是引用 是一个关键字 标识当前对象那部分继承父类的特征
-
使用在实例方法
-
使用在构造方法中 super(形参列表)是调用父类的构造方法
- 只能在首行 与this冲突 不能并存
- 每个构造方法系统默认首行super();调用父类空参构造方法
-
子类属性和父类属性同名时 使用super.区分