跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

Java核心语法:从变量到流程控制

系统讲解了Java核心语法,涵盖变量定义与数据类型(基本类型与引用类型)、类型转换规则(自动与强制转换)、各类运算符(算术、关系、逻辑、赋值、条件)以及流程控制结构(顺序、分支、循环及控制语句)。通过实例演示和常见问题分析,帮助读者掌握Java语法基础,为后续面向对象编程打下坚实基础。

RedisGeek发布于 2026/2/18更新于 2026/7/2439 浏览
Java核心语法:从变量到流程控制

Java核心语法:从变量到流程控制

Java语法基础概述

学习目标与重点提示

学习目标:掌握Java的基本语法结构、变量类型、数据类型转换以及运算符的使用。 重点:基本数据类型与引用数据类型的区别、自动类型转换与强制类型转换的规则。

Java语法的基本规则

Java是一种强类型语言,具有严格的语法规则:

  • 大小写敏感:Java中的关键字、类名、方法名、变量名等都是大小写敏感的。例如,HelloWorld和helloworld是两个不同的名称。
  • 分号结束:Java语句必须以分号(;)结束,否则会导致编译错误。
  • 代码块:用大括号({})包围的代码称为代码块,用于表示一个代码单元(如类、方法、循环体等)。
  • 注释:Java支持单行注释、多行注释和文档注释。
  • 标识符:用于命名类、方法、变量等的名称称为标识符。标识符必须以字母、下划线(_)或美元符号($)开头,后面可以跟字母、数字、下划线或美元符号。标识符不能是Java关键字。
Java关键字

Java关键字是具有特殊含义的保留字,不能作为标识符使用。常用的Java关键字包括:

  • 基本类型:int、long、float、double、char、boolean、byte、short
  • 控制语句:if、else、switch、case、default、for、while、do、break、continue、return
  • 访问修饰符:public、protected、private
  • 类相关:class、interface、extends、implements、new、this、super
  • 其他:static、final、void、package、import

变量与数据类型

变量的定义与使用

变量是用于存储数据的容器。在Java中,定义变量需要指定变量的类型和名称。

变量的定义格式:

数据类型 变量名;

变量的初始化:

数据类型 变量名 = 初始值;

示例:

int age; // 定义一个int类型的变量age
age = ; 
   ; 
18
// 给变量age赋值为18
int
height
=
175
// 定义并初始化一个int类型的变量height

⚠️ 注意:在使用变量之前,必须先声明并初始化,否则会导致编译错误。

Java的数据类型

Java的数据类型分为两大类:基本数据类型和引用数据类型。

  • 基本数据类型:直接存储数据的值,包括8种类型:

    • 整数类型:byte(1字节)、short(2字节)、int(4字节)、long(8字节)
    • 浮点数类型:float(4字节)、double(8字节)
    • 字符类型:char(2字节,用于存储Unicode字符)
    • 布尔类型:boolean(1位,用于存储true或false)

    示例:

    byte b = 10;
    short s = 200;
    int i = 1000;
    long l = 1000000L; // 注意:long类型的字面量后面要加L或l
    float f = 3.14F; // 注意:float类型的字面量后面要加F或f
    double d = 3.1415926;
    char c = 'A';
    boolean flag = true;
    
  • 引用数据类型:存储的是数据的引用(即内存地址),包括类、接口、数组等。

    示例:

    String name = "张三"; // String是一个类,name是引用变量
    int[] nums = {1, 2, 3}; // nums是数组引用变量
    

💡 基本数据类型与引用数据类型的区别:

对比项基本数据类型引用数据类型
存储内容直接存储数据的值存储数据的引用(内存地址)
内存区域栈内存堆内存(引用变量在栈内存)
默认值有默认值(如int默认值为0)默认值为null
比较方式使用==比较值使用==比较引用,使用equals()方法比较内容
数据类型转换

在Java中,当将一种数据类型转换为另一种数据类型时,需要遵循一定的规则。数据类型转换分为自动类型转换和强制类型转换。

  • 自动类型转换:当将一个小范围的数据类型转换为大范围的数据类型时,会自动进行转换,无需显式指定。

    • 转换规则:byte → short → int → long → float → double
    • char → int

    示例:

    byte b = 10;
    short s = b; // 自动将byte转换为short
    int i = s; // 自动将short转换为int
    long l = i; // 自动将int转换为long
    float f = l; // 自动将long转换为float
    double d = f; // 自动将float转换为double
    
  • 强制类型转换:当将一个大范围的数据类型转换为小范围的数据类型时,需要显式指定,否则会导致编译错误。

    • 转换格式:目标数据类型 变量名 = (目标数据类型)源数据;

    示例:

    int i = 1000;
    byte b = (byte)i; // 强制将int转换为byte
    

    ⚠️ 注意:强制类型转换可能会导致数据溢出或精度丢失,应谨慎使用。例如:

    int i = 128;
    byte b = (byte)i; // byte的范围是-128到127,转换后b的值为-128(溢出)
    

运算符

运算符是用于对数据进行运算的符号。Java支持多种运算符:

算术运算符

用于进行算术运算,包括:+(加)、-(减)、*(乘)、/(除)、%(取模)、++(自增)、--(自减)。

示例:

int a = 10;
int b = 3;
System.out.println(a + b); // 输出13
System.out.println(a - b); // 输出7
System.out.println(a * b); // 输出30
System.out.println(a / b); // 输出3(整数除法,结果取整)
System.out.println(a % b); // 输出1(取模运算,即余数)
a++; // 相当于a = a + 1
System.out.println(a); // 输出11
--b; // 相当于b = b - 1
System.out.println(b); // 输出2

⚠️ 注意:++和--运算符可以放在变量的前面或后面,放在前面表示先自增/自减,再使用变量的值;放在后面表示先使用变量的值,再自增/自减。例如:

int a = 10;
int b = ++a; // a先自增为11,然后b赋值为11
System.out.println(b); // 输出11

int c = 10;
int d = c++; // c先赋值给d(d为10),然后c自增为11
System.out.println(d); // 输出10
关系运算符

用于比较两个表达式的值,返回boolean类型的结果,包括:==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)。

示例:

int a = 10;
int b = 20;
System.out.println(a == b); // 输出false
System.out.println(a != b); // 输出true
System.out.println(a > b); // 输出false
System.out.println(a < b); // 输出true
System.out.println(a >= b); // 输出false
System.out.println(a <= b); // 输出true

⚠️ 注意:不要将==用于比较引用数据类型的内容,应该使用equals()方法。例如:

String s1 = "hello";
String s2 = "hello";
String s3 = new String("hello");
System.out.println(s1 == s2); // 输出true(因为字符串常量池的原因)
System.out.println(s1 == s3); // 输出false(s3指向堆内存中的对象)
System.out.println(s1.equals(s3)); // 输出true(比较内容)
逻辑运算符

用于进行逻辑运算,返回boolean类型的结果,包括:&&(逻辑与)、||(逻辑或)、!(逻辑非)。

  • &&:当两个操作数都为true时,结果为true,否则为false。如果第一个操作数为false,第二个操作数不会被执行(短路与)。
  • ||:当两个操作数都为false时,结果为false,否则为true。如果第一个操作数为true,第二个操作数不会被执行(短路或)。
  • !:当操作数为true时,结果为false;当操作数为false时,结果为true。

示例:

boolean a = true;
boolean b = false;
System.out.println(a && b); // 输出false
System.out.println(a || b); // 输出true
System.out.println(!a); // 输出false
赋值运算符

用于给变量赋值,包括:=(简单赋值)、+=(加赋值)、-=(减赋值)、*=(乘赋值)、/=(除赋值)、%=(取模赋值)。

示例:

int a = 10;
a += 5; // 相当于a = a + 5,结果为15
a -= 3; // 相当于a = a - 3,结果为12
a *= 2; // 相当于a = a * 2,结果为24
a /= 4; // 相当于a = a / 4,结果为6
a %= 5; // 相当于a = a % 5,结果为1
条件运算符

条件运算符是Java中唯一的三元运算符,格式为:条件表达式 ? 表达式1 : 表达式2。当条件表达式为true时,执行表达式1;当条件表达式为false时,执行表达式2。

示例:

int a = 10;
int b = 20;
int max = a > b ? a : b; // 如果a > b为true,max = a;否则max = b
System.out.println(max); // 输出20

流程控制

流程控制用于控制程序的执行顺序,包括顺序结构、分支结构和循环结构。

顺序结构

顺序结构是程序默认的执行顺序,即按照代码的编写顺序从上到下依次执行。

示例:

int a = 10;
int b = 20;
int sum = a + b;
System.out.println("sum = " + sum); // 输出sum = 30
分支结构

分支结构用于根据条件执行不同的代码块,包括if-else语句和switch语句。

  • if语句:当条件为true时,执行if块中的代码。
  • if-else语句:当条件为true时,执行if块中的代码;否则,执行else块中的代码。
  • if-else if-else语句:用于处理多个条件。
  • switch语句:用于根据表达式的值执行不同的代码块。表达式的值可以是byte、short、int、char、String(JDK 7及以后)或枚举类型。
    • case后面跟表达式可能的值,break用于跳出switch语句。
    • default用于处理所有case不匹配的情况。

if-else语句示例:

int score = 85;
if (score >= 90) {
    System.out.println("优秀");
} else if (score >= 80) {
    System.out.println("良好");
} else if (score >= 60) {
    System.out.println("及格");
} else {
    System.out.println("不及格");
}
// 输出:良好

switch语句示例:

String day = "Monday";
switch (day) {
    case "Monday":
        System.out.println("星期一");
        break;
    case "Tuesday":
        System.out.println("星期二");
        break;
    case "Wednesday":
        System.out.println("星期三");
        break;
    case "Thursday":
        System.out.println("星期四");
        break;
    case "Friday":
        System.out.println("星期五");
        break;
    case "Saturday":
    case "Sunday":
        System.out.println("周末");
        break;
    default:
        System.out.println("无效的星期");
        break;
}
// 输出:星期一

⚠️ 注意:如果case后面没有break语句,程序会继续执行下一个case中的代码,直到遇到break或switch语句结束(称为'case穿透')。

循环结构

循环结构用于重复执行一段代码,包括for循环、while循环和do-while循环。

  • for循环:用于已知循环次数的情况。
    • 格式:for (初始化语句; 循环条件; 迭代语句) { 循环体 }
  • while循环:用于未知循环次数的情况。
    • 格式:while (循环条件) { 循环体; 迭代语句 }
  • do-while循环:与while循环类似,但会先执行一次循环体,然后再判断循环条件。
    • 格式:do { 循环体; 迭代语句 } while (循环条件);

for循环示例:

// 输出1到10的整数
for (int i = 1; i <= 10; i++) {
    System.out.println(i);
}

while循环示例:

// 输出1到10的整数
int i = 1;
while (i <= 10) {
    System.out.println(i);
    i++;
}

do-while循环示例:

// 输出1到10的整数
int i = 1;
do {
    System.out.println(i);
    i++;
} while (i <= 10);
循环控制语句

循环控制语句用于控制循环的执行流程,包括break、continue和return。

  • break:用于跳出当前循环(如for、while、do-while)或switch语句。

    示例:

    // 输出1到5的整数,当i等于6时跳出循环
    for (int i = 1; i <= 10; i++) {
        if (i == 6) {
            break;
        }
        System.out.println(i);
    }
    // 输出:1 2 3 4 5
    
  • continue:用于跳过当前循环的剩余语句,继续执行下一次循环。

    示例:

    // 输出1到10中的奇数
    for (int i = 1; i <= 10; i++) {
        if (i % 2 == 0) {
            continue;
        }
        System.out.println(i);
    }
    // 输出:1 3 5 7 9
    
  • return:用于从当前方法中返回,结束方法的执行。

    示例:

    // 输出1到5的整数,当i等于6时返回
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if (i == 6) {
                return;
            }
            System.out.println(i);
        }
    }
    // 输出:1 2 3 4 5
    

常见问题与解决方案

变量未初始化

问题:编译时提示'错误: 可能尚未初始化变量'。 解决方案:在使用变量之前,必须先声明并初始化。例如:

int a; // 只声明未初始化
System.out.println(a); // 编译错误
int b = 0; // 声明并初始化
System.out.println(b); // 编译成功
数据类型转换错误

问题1:编译时提示'错误: 不兼容的类型: 从double转换到int可能会有损失'。 解决方案:使用强制类型转换。例如:

double d = 3.14;
int i = (int)d; // 强制转换

问题2:运行时出现数据溢出。 解决方案:使用更大范围的数据类型。例如:

int i = 128;
byte b = (byte)i; // 溢出,结果为-128
long l = 128; // 使用long类型
循环死循环

问题:程序运行时陷入死循环,无法结束。 解决方案:检查循环条件和迭代语句,确保循环能够正常结束。例如:

// 死循环:i的初始值为1,循环条件i <= 10,但迭代语句是i--
for (int i = 1; i <= 10; i--) {
    System.out.println(i);
}

// 正确的循环:迭代语句是i++
for (int i = 1; i <= 10; i++) {
    System.out.println(i);
}
switch语句的case穿透

问题:执行switch语句时,多个case的代码都被执行。 解决方案:在每个case的代码块后面添加break语句。例如:

int num = 2;
switch (num) {
    case 1:
        System.out.println("1");
    case 2:
        System.out.println("2");
    case 3:
        System.out.println("3");
        break;
}
// 输出:2 3(case穿透)

// 正确的写法:添加break语句
switch (num) {
    case 1:
        System.out.println("1");
        break;
    case 2:
        System.out.println("2");
        break;
    case 3:
        System.out.println("3");
        break;
}
// 输出:2

总结

本章我们学习了Java的核心语法,包括语法基础、变量与数据类型、运算符以及流程控制。其中,基本数据类型与引用数据类型的区别、自动类型转换与强制类型转换的规则、流程控制语句的使用是本章的重点内容。从下一章开始,我们将学习Java的面向对象编程。

目录

  1. Java核心语法:从变量到流程控制
  2. Java语法基础概述
  3. 学习目标与重点提示
  4. Java语法的基本规则
  5. Java关键字
  6. 变量与数据类型
  7. 变量的定义与使用
  8. Java的数据类型
  9. 数据类型转换
  10. 运算符
  11. 算术运算符
  12. 关系运算符
  13. 逻辑运算符
  14. 赋值运算符
  15. 条件运算符
  16. 流程控制
  17. 顺序结构
  18. 分支结构
  19. 循环结构
  20. 循环控制语句
  21. 常见问题与解决方案
  22. 变量未初始化
  23. 数据类型转换错误
  24. 循环死循环
  25. switch语句的case穿透
  26. 总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Python 基础语法入门:常量、变量与运算符
  • Python 在 Windows 上的安装与 PyCharm 配置指南
  • Python 3.10 的 6 个核心新特性详解
  • Ubuntu 安装 Docker 教程(含配置镜像加速与常见命令)
  • Java 编译报错:源发行版 17 需要目标发行版 17 排查指南
  • IDEA 连接 Gitee 配置及代码推送指南
  • Llama-Factory 用于养生食谱推荐与健康管理 APP 集成
  • 算法优选:位运算实战技巧与经典例题解析
  • Ollama 本地大语言模型部署与使用指南
  • 基于 Nexent 平台搭建育儿问答智能体实战
  • 基于 Docker 部署的 AI 量化分析平台搭建与波浪理论实战
  • 微信小程序样式与布局详解
  • C++ STL 详解:手写 String 类实现
  • Coze + Bot API:实现带自我反思的高质量长文翻译 Agent
  • π₀:视觉 - 语言 - 动作流模型通用机器人控制
  • AI 编程编辑器 Trae 使用体验:排队机制与效率评估
  • Flutter 使用 wasm_ffi 在鸿蒙端调用 WebAssembly 实战
  • LangChain4j 中 ReAct Agent 的工作原理与实现方法
  • 2024 年主流大型语言模型 LLMs 盘点与解析
  • LLaMA-Factory 本地部署与安装配置指南

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online