完结撒花!Java SE 语法阶段总结!

你好,我是林森lsjs

我的Github地址: sqyCoder (Qiyang) · GitHub

目录

[一、Java 入门:梦开始的地方](#一、Java 入门:梦开始的地方)

[Java 核心基础认知](#Java 核心基础认知)

[第一个 Java 程序与基础规范](#第一个 Java 程序与基础规范)

变量与数据类型

二、输入与输出

控制台输出

控制台输入(Scanner)

三、运算符

算术运算符

赋值运算符

关系运算符

逻辑运算符

三元运算符

位运算符

四、数组

一维数组

二维数组

五、方法

方法定义与调用

方法重载

递归方法

六、类和对象(面向对象核心基础)

类与对象的关系

成员变量与局部变量

构造方法

[this 关键字](#this 关键字)

封装(面向对象三大特性之一)

七、继承

继承语法与特点

[super 关键字](#super 关键字)

方法重写(Override)

权限修饰符

八、多态

多态实现条件

转型机制

多态核心优势

九、抽象类和接口

抽象类(abstract)

接口(interface)

抽象类与接口核心区别

[十、String 类(面试高频)](#十、String 类(面试高频))

核心特性

常量池机制

常用核心方法

[String、StringBuilder、StringBuffer 区别](#String、StringBuilder、StringBuffer 区别)

十一、异常处理

异常体系结构

异常处理方式

[try-catch-finally 捕获异常](#try-catch-finally 捕获异常)

[throws 声明异常](#throws 声明异常)

自定义异常

十二、日期时间类

旧版日期类

[JDK8 新版日期时间类(推荐](#JDK8 新版日期时间类(推荐)

一、Java 入门:梦开始的地方

Java 核心基础认知

Java 是一门面向对象、跨平台、可移植、高性能的编译型+解释型语言,核心优势是「一次编写,到处运行」,依托 JVM 实现跨平台特性。

核心三大组件:

JDK(Java开发工具包):包含 JRE + 编译、运行、调试等开发工具,开发必备

JRE(Java运行环境):包含 JVM + 核心类库,仅用于运行 Java 程序

JVM(Java虚拟机):解析运行 class 字节码文件,实现跨平台,是 Java 跨平台的核心

第一个 Java 程序与基础规范

Java 程序执行流程:编写 .java 源文件 → javac 编译生成 .class 字节码文件 → java 命令运行字节码文件。

基础编码规范:

类名大驼峰、方法/变量小驼峰、常量全大写、包名全小写

严格区分大小写,语句以分号结尾

公共类名必须与源文件名一致

变量与数据类型

变量是内存中临时存储数据的空间,是程序运算的基础。Java 数据类型分为两大类:

基本数据类型(8种)

  • 整型:byte、short、int、long

  • 浮点型:float、double

  • 字符型:char

  • 布尔型:boolean

引用数据类型:类、接口、数组、字符串等,存储的是对象的内存地址

数据类型转换:自动转换(小转大)、强制转换(大转小,可能丢失精度)

二、输入与输出

输入输出是程序与人交互的核心方式,是所有实战代码的基础。

控制台输出

  • System.out.println():打印内容并换行

  • System.out.print():打印内容不换行

  • System.out.printf():格式化输出,支持占位符(%d、%s、%f 等)

控制台输入(Scanner)

通过 java.util.Scanner 类实现手动录入数据,使用步骤:导包 → 创建对象 → 接收数据 → 关闭流。

java 复制代码
// 1.导包
import java.util.Scanner;
public class InputDemo {
    public static void main(String[] args) {
        // 2.创建Scanner对象
        Scanner sc = new Scanner(System.in);
        // 3.接收输入
        System.out.print("请输入整数:");
        int num = sc.nextInt();
        System.out.println("输入的数字是:" + num);
        // 4.关闭流
        sc.close();
    }
}

常用接收方法:nextInt()、nextDouble()、next()(接收字符串,空格截断)、nextLine()(接收整行字符串)。

三、运算符

运算符用于数据运算、逻辑判断、赋值操作,是程序逻辑的核心组成部分,Java 运算符分为六大类。

算术运算符

+、-、*、/、%、++、--

  • 整数相除结果为整数,小数相除结果为小数

  • % 取模,常用于判断奇偶、整除

  • ++/-- 前置先运算后赋值,后置先赋值后运算

赋值运算符

=、+=、-=、*=、/=、%=,复合赋值运算符自带强制类型转换,不会丢失精度。

关系运算符

>、<、>=、<=、==、!=,运算结果均为 boolean 类型(true/false),常用于条件判断。

逻辑运算符

用于连接多个条件,核心:短路与 &&、短路或 ||、非 !

  • &&:一假则假,左边为假直接短路,不执行右边

  • ||:一真则真,左边为真直接短路,不执行右边

三元运算符

格式:条件表达式 ? 表达式1 : 表达式2

规则:条件为 true 执行表达式1,为 false 执行表达式2,适合简单二选一逻辑。

位运算符

&、|、^、~、<<、>>、>>>,底层二进制运算,常用于底层开发、性能优化。

四、数组

数组是相同数据类型的有序集合,属于引用类型,可存储批量数据,长度固定不可修改。

一维数组

定义格式:

// 动态初始化:指定长度 int[] arr1 = new int[5];

// 静态初始化:直接赋值 int[] arr2 = {1,2,3,4,5};

核心特点:下标从 0 开始,最大下标为 长度-1,超出下标会报 ArrayIndexOutOfBoundsException 数组越界异常。

常用操作:普通 for 循环遍历、增强 for 循环遍历、求最大值/最小值、求和、排序。

二维数组

数组中的数组,适合存储表格、矩阵类数据,支持动态、静态初始化,双层循环完成遍历。

java 复制代码
int[][] arr = {{1,2},{3,4},{5,6}};
// 双层遍历
for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j < arr[i].length; j++) {
        System.out.print(arr[i][j] + " ");
    }
}

五、方法

方法是封装重复代码、实现代码复用的最小单元,提升代码简洁性、可读性、维护性。

方法定义与调用

格式:修饰符 返回值类型 方法名(参数列表){ 方法体 return 返回值; }

  • 无返回值使用 void,有返回值必须匹配对应类型并 return

  • 参数列表分为形参(定义时)和实参(调用时)

方法重载

同一个类中,多个方法方法名相同,参数列表不同(个数、类型、顺序),与返回值、修饰符无关。作用:统一功能接口,简化调用。

递归方法

方法自身调用自身,必须包含递归出口,否则无限递归导致栈溢出(StackOverflowError),适合阶乘、斐波那契数列、文件遍历等场景。

六、类和对象(面向对象核心基础)

Java 是纯面向对象语言,核心思想:万物皆对象。类是对象的模板,对象是类的实例。

类与对象的关系

类:抽象模板,描述事物的属性(成员变量)和行为(成员方法)

对象:具体实例,根据类模板创建的真实个体

创建对象:类名 对象名 = new 类名();

成员变量与局部变量

对比维度 成员变量 局部变量
定义位置 类中方法外 方法内、代码块内
默认值 有默认初始值 无默认值,必须手动赋值
生命周期 随对象创建而存在,对象销毁而消失 随方法调用而生,方法结束而销毁
作用域 整个类有效 仅当前代码块有效

构造方法

创建对象时自动调用,用于初始化成员变量。特点:方法名与类名一致,无返回值类型。

  • 无参构造:默认存在,手动定义有参构造后默认无参构造失效

  • 有参构造:自定义初始化参数,灵活赋值

this 关键字

  • this.成员变量:区分局部变量和成员变量重名

  • this():调用本类无参构造,必须放在构造方法第一行

  • this(参数):调用本类有参构造

封装(面向对象三大特性之一)

核心:隐藏内部细节,暴露公共访问方式。实现方式:private 私有化成员变量,提供 public 的 get/set 方法。

作用:保护数据安全性、提高代码复用性、降低耦合。

七、继承

继承是面向对象三大特性之二,核心:子类复用父类代码,实现代码复用与扩展

继承语法与特点

语法:class 子类 extends 父类{}

  • Java 支持单继承,一个子类只能有一个直接父类,一个父类可以有多个子类

  • 子类继承父类非私有属性和方法,无法继承 private 成员、构造方法

  • 所有类默认直接或间接继承 Object 类(根父类)

super 关键字

  • super.父类成员:访问父类被重写的成员变量/方法

  • super():调用父类无参构造,默认隐含,必须在第一行

  • super(参数):调用父类有参构造

方法重写(Override)

子类对父类已有方法进行功能重构,重写规则:方法名、参数列表、返回值完全一致,权限修饰符范围大于等于父类,不能抛出更宽泛的异常。作用:适配子类特有业务逻辑。

权限修饰符

权限范围从小到大:private(本类)< 默认(同包)< protected(同包+子类)< public(全局)

八、多态

多态是面向对象三大特性之三,是面向对象最核心、最重要的特性,核心思想:一个行为,多种实现

多态实现条件

  1. 存在继承关系

  2. 存在方法重写

  3. 父类引用指向子类对象(向上转型)

转型机制

  • 向上转型(自动):父类引用 子类对象,多态核心形态,只能调用父类方法,执行子类重写逻辑

  • 向下转型(强制):子类引用 = (子类)父类对象,用于调用子类特有方法,需规避类型转换异常

多态核心优势

符合开闭原则:对扩展开放,对修改关闭。新增子类无需修改原有核心代码,仅需新增实现类,大幅提升代码扩展性与维护性,彻底避免大量 if-else 判断。

九、抽象类和接口

抽象类与接口是面向对象抽象设计的核心,用于定义规范、约束子类行为,是项目解耦的关键。

抽象类(abstract)

  • 被 abstract 修饰的类,不能实例化,只能被继承

  • 包含抽象方法(无方法体),也可包含普通成员、普通方法、构造方法

  • 子类继承抽象类,必须重写所有抽象方法,否则子类也需抽象

接口(interface)

接口是行为规范的集合,是比抽象类更纯粹的抽象,JDK8 前后特性不同:

  • JDK7及以前:只能有全局常量、抽象方法

  • JDK8:新增默认方法、静态方法

  • JDK9:新增私有方法

核心特点:无构造方法、不能实例化、支持多实现、解决 Java 单继承局限。

抽象类与接口核心区别

  • 抽象类:是「事物模板」,有成员变量、构造方法,单继承,侧重属性与行为整体抽象

  • 接口:是「行为规范」,无实例变量、无构造方法,多实现,侧重行为约束

十、String 类(面试高频)

String 是 Java 最常用的引用类型,代表字符串,是面试与开发核心高频知识点。

核心特性

字符串不可变:String 底层为 final 修饰的字符数组(JDK9+为字节数组),一旦创建无法修改,所有拼接、截取操作都会生成新字符串对象。

不可变优势:线程安全、可存入字符串常量池、适合作为 HashMap 键、缓存哈希值。

常量池机制

直接赋值 String s = "abc" 会存入字符串常量池,复用对象,节省内存;new String() 会直接在堆内存创建新对象,不触发常量池复用。

常用核心方法

  • 获取:length()、charAt()、indexOf()、lastIndexOf()

  • 判断:equals()、equalsIgnoreCase()、contains()、startsWith()、isEmpty()

  • 转换:toCharArray()、split()、trim()、toUpperCase()、toLowerCase()

  • 截取替换:substring()、replace()

String、StringBuilder、StringBuffer 区别

  • String:不可变,线程安全,少量拼接使用

  • StringBuilder:可变,线程不安全,效率高,单线程大量拼接首选

  • StringBuffer:可变,线程安全,效率低,多线程大量拼接使用

十一、异常处理

异常是程序运行时出现的非正常情况,Java 通过异常体系实现错误精准捕获与处理,避免程序直接崩溃。

异常体系结构

顶层父类:Throwable

  • Error(系统级错误):无法处理,虚拟机层面问题,如 StackOverflowError、OutOfMemoryError

  • Exception(可处理异常)

  • 编译时异常(受检异常):必须处理,如 IOException、SQLException

  • 运行时异常(非受检异常):RuntimeException,可选择性处理,如空指针、数组越界、类型转换异常

异常处理方式

try-catch-finally 捕获异常
java 复制代码
try{
    // 可能出现异常的代码
}catch(异常类型 e){
    // 异常处理逻辑
}finally{
    // 无论是否异常都会执行,常用于释放资源
}
throws 声明异常

在方法签名声明异常,将异常抛出给调用者处理,适合自身无法处理的异常场景。

自定义异常

继承 Exception 或 RuntimeException,自定义业务异常,用于精准区分业务错误与系统错误,提升项目健壮性。

十二、日期时间类

Java 提供多套日期时间 API,分为传统旧版(线程不安全)与 JDK8 新版(线程安全、推荐)。

旧版日期类

  • Date:获取系统当前时间,默认精确到毫秒

  • SimpleDateFormat:日期格式化与解析,线程不安全,不推荐并发场景使用

  • Calendar:日历工具类,用于日期加减、字段修改、时间计算

JDK8 新版日期时间类(推荐)

全新 java.time 包下,线程安全、不可变、API简洁,是开发首选:

  • LocalDate:仅日期(年月日)

  • LocalTime:仅时间(时分秒)

  • LocalDateTime:日期+时间

就到这了,我们javase语法学习结束啦,进入数据结构!

++诸位共勉!++

相关推荐
lupai1 小时前
短信接口快速接入与调用实战指南
java·开发语言·数据库
ltqvibe1 小时前
企业智能问数落地:从一句话到跨系统完整答案
java·人工智能·本体语义平台
刘名喜1 小时前
第12篇-Gradle-Kotlin-DSL构建指南
开发语言·kotlin·springboot
会编程的吕洞宾1 小时前
Spring Boot 虚拟线程实战:从原理到生产环境
java·后端·spring
大鱼>1 小时前
DSPy:LLM程序自动编译与提示词优化
开发语言·人工智能·python·深度学习
黑桃小柒71 小时前
Prompt 工程的“断舍离“:如何用更少的词让 AI Agent 更聪明
java·后端·spring
撩妹帝九歌1 小时前
Java文件写入与编码、字节数组、字符集、字符编解码 一文打通!
java·开发语言
一路向北North1 小时前
Spring AI(9) :解决百炼平台兼容性问题
java·人工智能·spring
2601_965798471 小时前
Build a Consulting Site in 2026: Nifty Theme Practical Review
java·linux·数据库