03-告别语法混乱!Java基础语法:理清变量、数据类型与运算符

0 阅读7分钟

🔥 前言
"木圭,为什么我定义的变量总是报红?"" 自增运算符放在前面和后面到底有啥区别?""类型转换为啥总丢精度?"
初学 Java 语法时,我踩过无数坑:变量作用域搞混、运算符优先级记错、隐式转换没注意导致程序报错... 这些看似基础的问题,却让新手频频卡壳。
今天这篇,我把 Java 基础语法的核心知识点(变量、数据类型、运算符等)重新梳理了一遍,专门标注了新手最容易踩坑的细节,都是我亲测过的血泪教训。
📌 本文你将获得:

  • 注释、关键字、字面量的核心用法与示例

  • 变量定义的 6 大注意事项(避坑指南)

  • 数据类型的取值范围与转换规则

  • 各类运算符的使用场景与优先级

  • Scanner 键盘输入的完整步骤与注意事项

    👋 关于作者 我是木圭,正在学习 AI 智能应用开发集训,这是我从 0 开始系统学习 Java 的第 3 篇笔记。我会持续记录从 0 基础到能独立开发 AI 应用的完整过程,包括学习笔记、项目实战、避坑指南。 关注我,一起见证从小白到开发者的成长之路!

    📅 学习进度:第 2 天 | JavaSE 阶段(共 17 篇,已完结 3 篇)

1- 注释

注释:是对代码的解释说明,提高代码的可读性
注释分为三种:

  1. 单行注释
    单行注释:添加两个斜杠,只对当前行有效
    IDEA快捷键:Ctrl+/
  2. 多行注释
    多行注释:添加一对斜杠和星号,对多行有效
    IDEA快捷键:Ctrl+Shift+/
  3. 文档注释
    文档注释:对整个类、方法或字段进行说明
    示例代码如下:
public class Demo1 {  
     /**  
      *  文档注释  
      *  @param args 命令行参数  
      *  主方法,程序的入口点,程序从这里开始执行  
      */  
    public static void main(String[] args) {  
        // 单行注释:添加两个斜杠,只对当前行有效  
        // IDEA快捷键:Ctrl+/  
  
        /*         
         * 多行注释:添加一对斜杠和星号,对多行有效  
         * IDEA快捷键:Ctrl+Shift+/  
         * 可以注释多行代码  
         */  
        /*            
        	System.out.println("多行注释");  
            System.out.println("多行注释");  
        */        
        System.out.println("HelloWorld");  
    }  
}

注意: 被注释的内容, 不会参与程序的编译和运行

2- 关键字和字面量

2.1 关键字

Java 关键字:即被Java赋予了特殊含义的英文单词。
Java 中常见关键字有:
image.png

2.2 字面量

字面量:直接在代码中写出的值,比如 100、3.14、"Hello World" 等。
image.png
字面量代码示例如下:

public class Demo3 {  
    public static void main(String[] args) {  
        System.out.println("姓名:马超,高机动、高爆发、依赖移速与存枪机制的战士 / 刺客");  
        System.out.println("被动技能:魔影突袭(核心)");  
        System.out.println("技能1:萧索之刃(远程消耗 / 存枪)");  
        System.out.println("技能2:日落孤枪(范围减速 / 近身存枪)");  
        System.out.print("技能图标:");  
        System.out.println('Q');  
        System.out.print("生命值:");  
        System.out.println(100);  
        System.out.print("技能冷却时间:");  
        System.out.println(10.5);  
        System.out.print("是否可以上分:");  
        System.out.println(true);  
        System.out.print("皮肤数量:");  
        System.out.println(6);  
    }  
}

运行结果:
image.png

3- 变量

3.1 变量的介绍与定义

变量:存储数据的容器,用来存储数据
变量声明格式:数据类型 变量名 = 值;
变量的定义与使用示例代码:

public void test1(){  
    // 变量:存储数据的容器,用来存储数据  
    // 变量声明格式:数据类型 变量名 = 值;  
    System.out.println("变量的声明格式:数据类型 变量名 = 值;");  
    int a = 10;  
    // 变量的使用  
    System.out.println(a);// 10  
    //变量是可以变化的,可以再赋值  
	//变量的赋值:变量名 = 值;  
	a=20;  
	System.out.println(a);//20
}

3.2 变量的注意事项

  1. 变量要先声明才能使用
public void test2(){  
    System.out.println("1. 变量要先声明才能使用");  
    int b=20;  
    System.out.println(b);  // 20
    //System.out.println(c);//报错,c未声明  
}

2. 变量是什么类型,就必须装什么类型的数据

public void test3(){  
    System.out.println("2. 变量是什么类型,就必须装什么类型的数据");  
    int c = 10;  
    //int c=20.0 ;//错误,int只能装int,20.0为浮点型
}

3. 变量只在自己所归属的 { } 范围内有效

public void test4(){  
    System.out.println("3. 变量只在自己所归属的 { } 范围内有效");  
    String name = "张三";  
    System.out.println(name);  
    {  
        int age=18;  
        System.out.println(age);//18  
    }  
    System.out.println(name);//张三  
    //System.out.println(age);// 报错,age没在同一个范围内,不能使用  
}

4. 同一个范围内,变量的名称不能一样

public void test5(){  
    System.out.println("4. 同一个范围内,变量的名称不能一样");  
    int age=20;  
    {  
        int num=10;//正确定义变量,属于不同范围,可以定义  
    }  
    {        int num=20;//正确定义变量,属于不同范围,可以定义  
    }  
    //int age=30;//错误,因为age已经定义过了,不能重复定义  
}

5. 变量定义的时候可以不赋初始值,但在使用时,变量里必须有值

public void test6(){  
    System.out.println("5. 变量定义的时候可以不赋初始值,但在使用时,变量里必须有值");  
    int i;  
    i=10;  
    System.out.println(i);  
    int j;  
    //System.out.println(j);//错误,j未赋值,不能使用  
}

6. 一条语句可以定义多个同类型变量,中间使用逗号分隔

public void test7(){  
    System.out.println("6. 一条语句可以定义多个同类型变量,中间使用逗号分隔");  
    //注意事项:必须保持变量类型一致  
    int a=10,b=20,c=30;  
    System.out.println(a);//10  
    System.out.println(b);//20  
    System.out.println(c);//30  
}

4- 标识符

标识符:就是给类,方法,变量等起名字的符号 (自己起的名字)

4.1 标识符命名规则

  • 只能由字母、数字、下划线和美元符号$组成
  • 不能以数字开头
  • 不能用 Java 关键字
  • 区分大小写
    标识符示例代码如下:
public class IdentifierDemo {  
    public static void main(String[] args) {  
        int a = 10;  
        System.out.println(a);  
        int $b = 20;  
        System.out.println($b);  
        // int 1a = 30; //错误,不能以数字开头  
        // int class = 40; //错误,不能是关键字class  
        int Class = 40; //正确,区分大小写  
        System.out.println(Class);  
        int _class = 50;  
        System.out.println(_class);//正确,下划线可以出现在标识符中  
        int class$ = 60;  
        System.out.println(class$);//正确,美元符号可以出现在标识符中  
        // int class- = 70; //错误,不能包含特殊符号-  
    }  
}

4.2 标识符命名规范

标识符命名规范:驼峰命名法

  1. 小驼峰式命名法(lowerCamelCase):第一个单词首字母小写,后面每个单词的首字母大写。适用于变量、方法名等。例如:userName、userInfo等。
String userName = "张三";  
System.out.println(userName);

2. 大驼峰式命名法(UpperCamelCase):所有单词的首字母都大写。适用于类名、接口名等。例如:UserInfo、UserService等。
image.png

补充:常量命名规范:常量名全部大写,单词之间用下划线分隔。例如:MAX_VALUE、PI等。

final int MAX_VALUE = 100;  
System.out.println(MAX_VALUE);  
final double PI = 3.14;  
System.out.println(PI);

5- 数据类型

数据类型:数据类型指的是一组值的集合,比如整型、浮点型、字符型等。
数据类型分为两大类:

  • 基本数据类型
  • 引用数据类型
    本文先重点聊基本数据类型

5.1 基本数据类型

image.png

基本数据类型使用思路:

  1. 整数类型变量:首选 int,如果发现 int 装不下数据了,将类型换成 long,但是定义 long 类型变量,需要加入 L 标识
  2. 小数类型变量:首选 double,如果非要使用 float 类型,需要在数值后面加入 F 标识

基本数据类型的取值范围边界值,示例代码如下:

// byte 字符范围 -128~127byte byteMax = 127;  
byte byteMin = -128;  
//byte byteOverflow = 128; //错误,超出范围  
// short 字符范围 -32768~32767short shortMax = 32767;  
short shortMin = -32768;  
// short shortOverflow = 32768; //错误,超出范围  
  
// int 字符范围 -2147483648~2147483647int intMax = 2147483647;  
int intMin = -2147483648;  
// int intOverflow = 2147483648; //错误,超出范围  
  
// long 字符范围 -9223372036854775808~9223372036854775807long longMax = 9223372036854775807L;  
long longMin = -9223372036854775808L;  
// long longOverflow = 9223372036854775808L; //错误,超出范围  
  
// float 字符范围 ±3.4028235E38float floatMax = 3.4028235E38F;  
float floatMin = -3.4028235E38F;  
// float floatOverflow = 3.4028235E39F; //错误,超出范围  
  
// double 字符范围 ±1.7976931348623157E308double doubleMax = 1.7976931348623157E308;  
double doubleMin = -1.7976931348623157E308;  
// double doubleOverflow = 1.8E309; //错误,超出范围  
  
// char 字符范围 \u0000~\uffff (0~65535)char charValue = 'a';  
char charMin = '\u0000';  
char charMax = '\uffff';  
  
// boolean 字符范围 true/falseboolean boolTrue = true;  
boolean boolFalse = false;

5.2 基本数据类型细节补充

  1. 所有整数默认是 int 类型
System.out.println(10);
//整数10是一个字面量, 但也是Java中的一份数据, 是数据就会有类型, 整数默认是int

2. 所有小数默认是 double 类型

System.out.println(12.3);
整数12.3是一个字面量, 但也是Java中的一份数据, 是数据就会有类型, 小数默认是 double

3. 字符类型的取值范围是 0~65535
原因 : 每一个字符底层都有一份数值的表示形式。
image.png

举例:
'a' ---> 二进制表示为 0110 0001(高四位+低四位) --> 转换为十进制为 97
'a' 的数值表示为 97
因此定义字符类型的变量可以是: char c = 97;

5.3 面试题

问:基本数据类型有哪些?
答:
基本数据类型有4类,分别是整型、浮点型、字符型、布尔型;
其中整型有byte、short、int、long;分别占用1、2、4、8个字节;
浮点型有float、double;分别占用4、8个字节;
字符型有char;占用2个字节;
布尔型有boolean。占用1个字节;

6- 运算符

6.1 算术运算符

算术运算符:用来进行数学运算的符号,如加号(+)、减号(-)、乘号(*),除号(/)、求余(%)。

注意事项:

  • /与%的区别:

    • /:整数除法,只保留结果的整数部分。
    • %:取余数,返回两数相除的余数。
  • 整数操作只能得到整数,如果要得到小数,则需要有一个操作数为浮点类型。

6.1.1 算术运算符示例代码

// 算数运算符:  
int a = 100;  
int b = 21;  
System.out.println("算数运算符:");  
// 加: +System.out.println("加: +");  
System.out.print("a+b=");  
System.out.println(a + b);// 101  
// 减: -System.out.println("减: -");  
System.out.print("a-b=");  
System.out.println(a - b);// 79  
// 乘: *System.out.println("乘: *");  
System.out.println(a * b);// 2100  
// 除: /:整数除法  
System.out.println("除: /");  
System.out.println(a / b);// 4  
// 取余: %:取余数  
System.out.println("取余: %");  
System.out.println(a % b);// 16

6.1.2 案例:数值拆分

public class OperatorDemo2 {  
    public static void main(String[] args) {  
        // 数值拆分:456  
        int num = 456;  
        int a = num % 10;  
        int b = num / 10 % 10;  
        int c = num / 100;  
        System.out.println("个位:" + a);// 6  
        System.out.println("十位:" + b);// 5  
        System.out.println("百位:" + c);// 4  
    }  
}

6.2 字符串拼接

字符串拼接:当 + 操作中,遇到了字符串,这时 + 就是字符串连接符,而不是算术运算。
Java 里的 + 有两个核心作用:

  • 纯数字之间:做加法运算
  • 只要出现字符串:做字符串拼接,并且遵循从左到右的顺序执行
System.out.println("字符串拼接:");  
//字符串+字符串,会进行字符串拼接  
System.out.println("hello" + "world");// helloworld  
//字符串+数字:全程都是字符串拼接  
System.out.println("hello" + 1);// hello1  
//数字+字符串:会先进行数字运算,再进行字符串拼接  
System.out.println(1+2+"hello");// 3hello

6.3 自增自减运算符

自增自减运算符
++:自增运算符
--:自减运算符

6.3.1 自增自减运算符的使用

  1. 单独使用: 符号在前在后没有区别的
int a = 10;  
a++;  
System.out.println("a++ 后:" + a);  // 11  
a--;  
System.out.println("a-- 后:" + a);  // 10  
  
int x = 10;  
++x;  
System.out.println("++x 后:" + x);  // 11  
--x;  
System.out.println("--x 后:" + x);  // 10

2. 放在表达式中:++a: 先运算再赋值

int b=++a;  
System.out.println(a);// 11  
System.out.println(b); // 输出11

3. 放在表达式中:c++: 先赋值再运算

int c=10;  
int d=c++;  
System.out.println(c);// 11  
System.out.println(d);// 10

6.3.2 面试题

public static void main(String[] args) {  
    int x = 10;  
    int y = ++x;        // x = 11  y = 11  
    int z = y--;        // z = 11  y = 10  
	System.out.println(x);// 11  
	System.out.println(y);// 10  
	System.out.println(z);// 11 
    System.out.println("------------------------");  
    int a = 3;  
    //       ++a=4  a++=4  a*10=50  
    // 运算顺序:从左到右  
    int b = (++a) + (a++) + (a * 10);  
    /*  
    * ++a → 先加再用:++a=4  
    * a++ → 先用再加:a++=4  
    * */    System.out.println(a);      // 5  
    System.out.println(b);      // 58  
}

6.4 类型转换

类型转换分为:隐式转换(自动类型转换)和强制类型转换

6.4.1 隐式转换

隐式转换:从低精度到高精度,即把一个取值范围小的数值或者变量,赋值给另一个取值范围大的变量。
取值范围小的数据和取值范围大的数据做运算时,会自动将小的数据类型转换为大的数据类型,然后在再进行计算

int a = 10;  
double b = a;  
System.out.println(b);// 10.0

简单记:小的给大的赋值可以直接赋值
数据从 10 变化为了 10.0 数据发生了转换,转换的过程是内部隐藏的,所以称为隐式转换
image.png

注意:byte,short,char在做运算时会自动提升为int类型

byte c = 10;  
short s = 20;  
int result = c + s;  
System.out.println(result);// 30

6.4.2强制类型转换

强制类型转换:把一个取值范围大的变量赋值给一个取值范围小的变量时,需要强制类型转换,否则编译不通过
强制类型转换的语法:目标数据类型变量名 = (目标数据类型) 被赋值的数据;
注意事项:可能会造成精度丢失

double d = 10.5;  
int j = (int) d; // 强制类型转换,从高精度到低精度  
System.out.println(j);// 10

6.4.3 面试题

阅读代码, 分析是否存在错误, 如果有请说明原因并改正.

byte b1 = 3;

byte b2 = 4;

byte b3 = b1 + b2;
public static void main(String[] args) {  
    // 存在错误:  
    // 原因: b1和b2是两个byte类型的数据, 相加的时候会直接提升为int, 提升之后就是两个int相加  
    //                结果还是int这里将int类型的结果, 赋值给byte类型的变量  
    //                属于大的给小的赋值, 不能直接赋值, 需要强转, 或者改变类型.  
    //修改:  
    byte b1 = 3;  
    byte b2 = 4;  
    byte b3 = (byte) (b1 + b2);// 也可修改为 int b3 = b1 + b2;    System.out.println(b3);  
}

6.5 赋值运算符

赋值运算符分为两大类:基本赋值运算符和复合赋值运算符
基本赋值运算符:=
符合赋值运算符:+=、-=、*=、/=、%=

示例代码如下:

public static void main(String[] args) {  
    // 赋值运算符分为两大类:基本赋值运算符和复合赋值运算符  
    //基本赋值运算符:=  
    int a = 10;  
    //复合赋值运算符:  
    // +=:加后赋值  
    // -=:减后赋值  
    // *=:乘后赋值  
    // /=:除后赋值  
    // %=:取余后赋值  
    a += 10; // 等价于 a = a + 10;    System.out.println(a);  
    a -= 10; // 等价于 a = a - 10;    System.out.println(a);  
    a *= 10; // 等价于 a = a * 10;    System.out.println(a);  
    a /= 10; // 等价于 a = a / 10;    System.out.println(a);  
    a %= 10; // 等价于 a = a % 10;    System.out.println(a);  
}

注意:扩展赋值运算符自带强转效果,不需要手动强转

int a = 10;  
double b = 20.5;  
//扩展赋值运算符自带强转效果,不需要手动强转  
a += b; // 等价于 a = (int)(a + b);
System.out.println(a);// 30
//输出结果为30,因为相加之和的30.5赋值给 aa 变量为 int 类型,强转后砍掉小数点,结果为30

6.6 关系运算符

关系运算符:>、 < 、>=、 <=、 ==、 !=、
示例代码如下:

public static void main(String[] args) {  
    // 关系运算符:> < >= <= == !=  
    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  
    // 关系运算符的结果是布尔值  
    boolean c = a > b;  
    System.out.println(c); // false  
}

6.7 逻辑运算符

6.7.1 普通逻辑运算符

分类:

  • &:与:两边都为true,结果才为true
  • |:或:两边只要有一个为true,结果就为true
  • !:非:取反
  • ^:异或:两边相同为false,不同为true
    示例代码如下:
System.out.println("普通逻辑运算符:&、|、!、^");  
System.out.println(true & true);//true  
System.out.println(true & false);//false  
System.out.println(true | true);//true  
System.out.println(true | false);//true  
System.out.println(!true);//false  
System.out.println(!false);//true  
System.out.println(true ^ true);//false  
System.out.println(true ^ false);//true  
System.out.println(false ^ true);//true  
System.out.println(false ^ false);//false

6.7.2 有短路效果的逻辑运算符

  • &&:短路与:左边为false,右边不再运算,结果为false;左边为true,右边继续运算,结果为右边
  • ||:短路或:左边为true,右边不再运算,结果为true;左边为false,右边继续运算,结果为右边
System.out.println(true && true);//true  
System.out.println(true && false);//false  
System.out.println(false && true);//false  
System.out.println(false && false);//false  
System.out.println(true || true);//true  
System.out.println(true || false);//true  
System.out.println(false || true);//true  
System.out.println(false || false);//false

示例代码

public static void main(String[] args) {  
    int a = 10;  
    int b = 20;  
    //&&:短路与:左边为false,右边不再运算,结果为false;左边为true,右边继续运算,结果为右边  
    //++a > 30false//--b < 20:true;  
    boolean result = ++a > 30 && --b < 20;  
    System.out.println("result=" + result);//false  
    System.out.println("a=" + a);//11  
    System.out.println("b=" + b);//20  
    //结果解释:result=false,因为++a>30的结果为false,但是因为&&短路效果,所以不会执行--b<20  
    //所以a=11,b=20  
    //||:短路或:左边为true,右边不再运算,结果为true;左边为false,右边继续运算,结果为右边  
    result = ++a > 30 || --b < 20;  
    System.out.println("result=" + result);//true  
    System.out.println("a=" + a);//12  
    System.out.println("b=" + b);//20  
    //结果解释:result=true,因为++a>30的结果为false,继续运算右边,执行--b<20,结果为true  
    //所以a=12,b=19  
}

6.8 三元运算符(三目运算符)

作用 : 根据判断条件, 从两份数据中二者选其一
三元运算符(三目运算符):格式(条件表达式)?值1:值2;
示例代码

public static void main(String[] args) {  

	//执行流程: 
	//首先计算 判断条件的值 
	//如果值为true, 值1 就是运算结果 
	//如果值为false, 值2 就是运算结果
    int a = 10;  
    int b = 20;  
    int max = (a > b) ? a : b;  
    System.out.println("max=" + max);  
}

6.9 运算符的优先级

image.png
示例代码:

public static void main(String[] args) {  
    // 运算符的优先级:先乘除后加减,有括号先算括号内的  
    int a = 10;  
    int b = 20;  
    //结果解释:先算括号内的,(a > b || a < b)的结果为true,计算右边,a > b的结果为false,所以整个表达式的结果为false  
    System.out.println( (a > b || a < b) && a > b);//false  
    //结果解释:先算括号内的,a < b 的结果为 true,a > b 的结果为 false,true && false 的结果为 false,再与左边的 false 进行或运算,最终结果为 false    System.out.println(a > b || (a < b && a > b) );//false  
}

7- Scanner 键盘输入

Scanner类是Java中的一个实用工具,用于从不同来源读取输入数据。
代码案例

import java.util.Scanner;  

public class ScannerDemo {  
    public static void main(String[] args) {  
        // Scanner键盘输入需要三个步骤:  
        // 1.导入Scanner包  
        // 2.创建对象  
        Scanner scanner = new Scanner(System.in);  
        // 3.接收数据  
        System.out.print("请输入姓名:");  
        String name = scanner.next();  
        System.out.print("请输入年龄:");  
        int age = scanner.nextInt();  
        System.out.print("请输入身高:");  
        double height = scanner.nextDouble();  
        System.out.println(name + ", " + age + "岁, 身高" + height + "cm");  
    }  
}

image.png

常用方法

方法说明
nextInt()读取整数
nextDouble()读取小数
nextBoolean()读取布尔值
next()读取字符串(遇空格停止)
nextLine()读取一行字符串(可包含空格)

注意事项

  • next() 和 nextLine() 的区别:next() 遇到空格或换行停止,nextLine() 可以读取包含空格的整行
  • 使用完后可调用 scanner.close() 关闭资源(可选,小程序一般不需要)

8、总结回顾

📝 核心要点速记

  1. 变量: 存储数据的容器,声明格式为「数据类型变量名 = 值;」,需遵循先声明后使用、类型匹配、作用域等 6 项核心规则
  2. 标识符: 类 / 方法 / 变量的命名符号,需符合「字母 / 数字 / 下划线 /$、不数字开头、不使用关键字、区分大小写」规则,推荐驼峰命名(常量全大写 + 下划线分隔)
  3. 数据类型: 4 类 8 种基本类型(整型 4 种、浮点型 2 种、字符型 1 种、布尔型 1 种);整数默认 int、小数默认 double;byte/short/char 运算时自动提升为 int
  4. 运算符: 涵盖算术 / 赋值 / 关系 / 逻辑 / 三元等类型;注意自增自减的「先运算后赋值 / 先赋值后运算」、隐式 / 强制类型转换、短路逻辑运算符(&&/||)的特性

🔥 高频问题

Q:变量定义时可以不赋初始值吗?
A:可以,但使用变量前必须完成赋值,否则编译报错;同时变量仅在所属的 {} 范围内有效,超出作用域无法访问。
Q:byte/short 类型做运算时为什么会自动转为 int?
A:Java 为避免小范围数值运算时的精度丢失,规定 byte/short/char 这类低字节类型运算时,会统一提升为 int 类型后再计算。
Q:&& 和 &、|| 和 | 的核心区别是什么?
A:&&(短路与)左边为 false 时右边表达式不执行,||(短路或)左边为 true 时右边表达式不执行;而 & 和 | 无论左边结果如何,都会执行右边表达式,无短路效果。
Q:强制类型转换可能带来什么问题?
A:强制转换是「高精度→低精度」的转换方式,可能造成精度丢失(如 double 10.5 强转为 int 会变成 10),需谨慎使用。

📚 系列文章导航

【JavaSE 从 0 到 1】系列(连载中 3/17 篇)

🔹 环境搭建篇

  • ✅ [第 1 篇] 还在卡 Java 环境?10 分钟搞定 JDK 配置的保姆级教程
  • ✅ [第 2 篇] Java 开发必备:JDK 多版本共存与切换,一篇就够

🔹 语法基础篇( upcoming)

  • ✅ [第 3 篇] 告别语法混乱!Java 基础语法:理清变量、数据类型与运算符← 当前这篇
  • [第 4 篇] 变量、数据类型与运算符(待发布)

🔹 流程控制篇(upcoming)

🔹 面向对象篇(upcoming)


💬 互动区

来聊聊你的踩坑经历:

  1. 你在配置 Java 环境时遇到过什么问题?最后怎么解决的?
  2. 你现在用的是哪个 JDK 版本?为什么选它?
    如果这篇文章帮到了你:
  • 👍 欢迎点赞 + 收藏,方便随时查阅
  • 🔄 转发给一起学 Java 的小伙伴
  • 关注我,不错过后续的每一篇实战笔记
    我们一起完成这 5.5 个月的 AI 开发学习之旅!💪

📄 版权说明

  • 作者:木圭
  • 首发平台:掘金 / 微信公众号「木圭学编程」
  • 转载请联系作者,注明出处
  • 学习笔记仅供参考,欢迎指正错误