学习笔记

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. 内部类

内部类:定义在类内部的类。

  • 成员内部类
  • 静态内部类
  • 局部内部类
  • 匿名内部类