Java 学习笔记
Java 基础语法、常用 API、面向对象编程的学习笔记整理。
本文整理 Java 基础语法、常用 API、面向对象编程的核心知识点。
一、基础语法
1. Java 程序基本结构
class:定义一个类,类是 Java 项目中最基本的组成单元{}:类的范围public static void main(String[] arg):程序主入口,固定格式System.out.println(""):输出语句,将内容输出到控制台
2. 字面量与变量
字面量:程序中的数据
- 整数类型:直接写
- 小数类型:直接写,加上小数点
- 字符串类型:用双引号
"" - 字符类型:用单引号
'',内容只能有一个字符 - 布尔类型:
true/false - 空类型:
null
变量:存储单个数据的容器
- 定义格式:
数据类型 变量名 = 数据值; - 注意事项:
- 变量只能存一个值
- 变量名不允许重复定义
- 变量在使用之前一定要赋值
- 一条语句可以定义多个变量
3. 类型转换
隐式转换:不同类型数据计算时自动发生
- 如果有
byte/short,先提升为int - 把取值范围小的提升为取值范围大的
强制转换:需要手动书写
- 格式:
目标类型 变量名 = (目标类型)(被转换的数据);
字符串运算:任意数据 + 字符串都是拼接操作,产生新字符串
4. 运算符
逻辑运算符:& | !
短路逻辑运算符:&& ||
三元运算符:
关系表达式 ? 表达式1 : 表达式2;
5. 流程控制
判断语句:
if (关系表达式) {
语句体
}
选择语句:
switch (表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
default:
语句体n;
break;
}
case 穿透:如果没有 break,会继续执行下一个 case 的语句体。
switch 新特性(JDK 14+):
- 箭头标签
-> {},不需要 break - case 后可写多个数值
case 1,2,3,4 - switch 可以有返回值
yield关键字返回值
循环语句:for while do-while
6. 方法
方法:程序中最小的执行单元
作用:
- 提高代码复用性
- 提高代码可维护性
定义格式:
public static 返回值类型 方法名(参数列表) {
方法体;
return 返回值;
}
方法重载:同一个类中,方法名相同,参数列表不同(类型、数量、顺序)
二、常用 API
1. API 概念
API(应用程序编程接口):JDK 中提供的各种功能的 Java 类,直接使用即可。
常用类:
Scanner:键盘录入Random:获取随机数
2. String 字符串
String 定义在 java.lang 包中(核心包),字符串内容不可变。
常用方法:
length():长度charAt(int index):获取指定位置字符substring(int begin, int end):截取equals(Object obj):比较内容indexOf(String str):查找位置
3. StringBuilder
StringBuilder 是可变字符串容器。
常用方法:
append(Object obj):添加reverse():反转length():长度toString():转为 String
4. StringJoiner
StringJoiner 用于拼接字符串:
StringJoiner sj = new StringJoiner("间隔符号", "前符号", "后符号");
sj.add("元素");
5. ArrayList 集合
ArrayList 存储数据特点:
- 自动扩容
- 只能存储引用类型
常用方法:
add(E e):添加remove(int index):删除set(int index, E e):修改get(int index):获取size():长度
三、面向对象入门
面向对象编程:拿东西过来做对应的事情。
1. 类与对象
类:对一类事物的抽象描述 对象:该类事物的具体实例
定义类:
public class 类名 {
// 成员变量(属性)
// 成员方法(行为)
}
创建对象:
类名 对象名 = new 类名();
对象名.成员变量;
对象名.成员方法();
2. 封装
封装:对象代表什么,就得封装对应的数据,并提供对应的行为。
原则:隐藏实现细节,暴露必要访问方式。
3. this 关键字
this:区分成员变量和局部变量
this.成员变量:访问本类的成员变量this.成员方法():调用本类的成员方法
4. 构造方法
构造方法:创建对象时对成员变量进行初始化。
特点:
- 方法名与类名相同
- 无返回值类型
- 可重载
public 类名(参数列表) {
// 初始化代码
}
5. JavaBean
标准 JavaBean:
- 成员变量私有
- 提供 getter / setter 方法
- 提供无参构造方法
6. 对象内存图
对象存储在堆内存,引用变量存储在栈内存。
基本数据类型:直接存储值 引用数据类型:存储对象的地址
四、面向对象进阶
1. static 静态
静态变量:被该类所有对象共享,随类加载而加载。
调用方式:
- 类名调用(推荐):
类名.静态变量 - 对象名调用:
对象名.静态变量
静态方法:多用于测试类和工具类。
注意事项:
- 静态方法只能访问静态成员
- 非静态方法可以访问所有成员
2. 工具类
工具类:不是描述事物的类,而是帮我们做一些事情的类。
特点:
- 方法都是静态的
- 私有构造方法(防止创建对象)
3. main 方法
public static void main(String[] args)
public:被 JVM 调用,需要公开static:被 JVM 调用,无需创建对象void:无返回值String[] args:命令行参数
4. final 关键字
final:最终、不可变
- 修饰类:不能被继承
- 修饰方法:不能被重写
- 修饰变量:只能赋值一次(常量)
5. 枚举
枚举:对象的个数是有限且固定的。
public enum 枚举类名 {
枚举项1,
枚举项2,
// 行为
}
常用方法:
values():获取所有枚举项valueOf(String name):获取指定枚举项
五、面向对象高级
1. 继承
继承:类与类之间的父子关系,使用 extends 关键字。
public class Student extends Person {}
特点:
- Java 只支持单继承,不支持多继承
- 支持多层继承
- 所有类的顶级父类是
Object
成员变量访问:就近原则
2. 方法重写
重写:子类对父类方法进行重新实现。
注解:@Override
3. 多态
多态:同类型的对象,表现出不同的形态。
前提:
- 有继承/实现关系
- 有父类引用指向子类对象
- 有方法重写
父类类型 变量名 = new 子类类型();
4. 抽象类
抽象类:不能实例化,作为模板使用。
public abstract class 类名 {
// 抽象方法:只有声明,没有实现
public abstract void 方法名();
}
5. 接口
接口:一种规则、一种能力。
public interface 接口名 {
// 抽象方法
// 默认方法
// 静态方法
}
实现接口:
public class 类名 implements 接口名 {
// 实现所有抽象方法
}
6. 内部类
内部类:定义在类内部的类。
- 成员内部类
- 静态内部类
- 局部内部类
- 匿名内部类