Java作为一门经典且广泛应用的编程语言,以其“一次编写,到处运行”的特性(WORA)成为企业级开发、安卓应用、大数据处理等领域的核心语言。掌握Java基础语法是每一位开发者迈向高级编程的第一步。本文将系统梳理Java基础语法的核心内容,并通过示例代码帮助你快速上手。
目录
一、Java 基础语法
1.1 数据类型
基本数据类型(Primitive Data Types)
引用数据类型(Reference Data Types)
总结对比
1.2 变量与常量
变量(Variable)
✅ 定义方式:
示例:
命名规范:
使用场景:
常量(Constant)
✅ 定义方式:
示例:
命名规范:
使用场景:
变量与常量的区别总结
1.3 运算符
算术运算符(Arithmetic Operators)
注意事项:
关系运算符(Relational Operators)
注意事项:
逻辑运算符(Logical Operators)
短路特性(Short-Circuiting):
示例:
运算符优先级(简要说明)
✅ 总结对比
小贴士
1.4 流程控制语句
Java 的数据类型分为基本数据类型和引用数据类型。
基本数据类型:包含数值型(byte
、short
、int
、long
、float
、double
)、字符型(char
)和布尔型(boolean
)。
引用数据类型:包括类、接口、数组等。引用数据类型的变量存储的是对象的内存地址。例如:
public class DataTypeDemo {
public static void main(String[] args) {
// 基本数据类型(Primitive Data Types)
byte age = 25; // 8位整型
short year = 2025; // 16位整型
int population = 1000000; // 32位整型
long distance = 123456789L; // 64位整型(需加 L)
float price = 9.99f; // 32位浮点数(需加 f)
double salary = 5000.50; // 64位浮点数
char grade = 'A'; // 字符型
boolean isStudent = true; // 布尔型
// 输出基本数据类型的值
System.out.println("基本数据类型示例:");
System.out.println("年龄:" + age);
System.out.println("年份:" + year);
System.out.println("人口:" + population);
System.out.println("距离:" + distance);
System.out.println("价格:" + price);
System.out.println("薪资:" + salary);
System.out.println("成绩:" + grade);
System.out.println("是否学生:" + isStudent);
// 引用数据类型(Reference Data Types)
String name = "Alice"; // 字符串(Java 内建类)
int[] numbers = {1, 2, 3}; // 数组(引用类型)
Person person = new Person(); // 自定义类的对象
// 输出引用数据类型的值
System.out.println("\n引用数据类型示例:");
System.out.println("姓名:" + name);
System.out.println("数组元素:" + numbers[0]);
System.out.println("对象信息:" + person.toString());
}
}
// 自定义类(引用类型)
class Person {
private String name = "Bob";
private int age = 30;
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
//输出结果
基本数据类型示例:
年龄:25
年份:2025
人口:1000000
距离:123456789
价格:9.99
薪资:5000.5
成绩:A
是否学生:true
引用数据类型示例:
姓名:Alice
数组元素:1
对象信息:Person{name='Bob', age=30}
类型 | 大小(字节) | 范围/说明 |
---|---|---|
byte |
1 | -128 ~ 127 |
short |
2 | -32768 ~ 32767 |
int |
4 | -2^31 ~ 2^31-1 |
long |
8 | -2^63 ~ 2^63-1(需加 L ) |
float |
4 | 32位浮点数(需加 f ) |
double |
8 | 64位浮点数(默认) |
char |
2 | Unicode 字符(0 ~ 65535) |
boolean |
1 | true 或 false |
类型 | 示例 | 说明 |
---|---|---|
类(Class) | Person , String |
自定义类或 Java 内置类 |
接口(Interface) | List , Map |
定义行为规范 |
数组(Array) | int[] , String[] |
存储相同类型的数据集合 |
枚举(Enum) | Day.MONDAY |
定义固定集合的常量 |
字符串(String) | "Hello" |
Java 内建类,属于引用类型 |
特性 | 基本数据类型 | 引用数据类型 |
---|---|---|
存储方式 | 栈内存(直接存储值) | 栈内存保存引用地址,实际对象在堆内存 |
默认值 | 有默认值(如 int 默认 0) |
默认值为 null |
传递方式 | 值传递(复制值) | 引用传递(传递地址) |
可变性 | 不可变(如 int ) |
可变(如 StringBuffer )或不可变(如 String ) |
实例化 | 直接赋值 | 使用 new 关键字或常量池(如 String ) |
int age = 20; // 整型变量
double temperature = 36.5; // 浮点型变量
String name = "Alice"; // 字符串变量
userName
, studentAge
final
关键字声明,值一旦赋值就不能修改。final int MAX_SPEED = 120;
final String COMPANY_NAME = "ABC Corp";
MAX_SPEED
, PI
, DEFAULT_TIMEOUT
特性 | 变量(Variable) | 常量(Constant) |
---|---|---|
是否可变 | 是 | 否(使用 final 关键字) |
声明方式 | 数据类型 变量名 = 值; |
final 数据类型 常量名 = 值; |
命名规范 | 驼峰命名法(CamelCase) | 全大写 + 下划线(SNAKE_CASE) |
用途 | 存储动态变化的数据 | 存储固定不变的值 |
示例 | int age = 20; |
final int MAX_SPEED = 120; |
内存位置 | 栈(基本类型)、堆(引用类型) | 常量池(如字符串)、静态区(类常量) |
Java 支持算术运算符(+
、-
、*
、/
、%
)、关系运算符(>
、<
、==
、!=
)、逻辑运算符(&&
、||
、!
)等。例如:
public class OperatorExamples {
public static void main(String[] args) {
// 算术运算符(Arithmetic Operators)
int a = 10;
int b = 3;
System.out.println("【算术运算符】");
System.out.println("a + b = " + (a + b)); // 加法
System.out.println("a - b = " + (a - b)); // 减法
System.out.println("a * b = " + (a * b)); // 乘法
System.out.println("a / b = " + (a / b)); // 除法(整数除法会截断小数部分)
System.out.println("a % b = " + (a % b)); // 取模(余数)
double c = 10.0;
double d = 3.0;
System.out.println("c / d = " + (c / d)); // 浮点数除法
// 关系运算符(Relational Operators)
System.out.println("\n【关系运算符】");
System.out.println("a > b = " + (a > b)); // 大于
System.out.println("a < b = " + (a < b)); // 小于
System.out.println("a == b = " + (a == b)); // 等于
System.out.println("a != b = " + (a != b)); // 不等于
System.out.println("a >= b = " + (a >= b)); // 大于等于
System.out.println("a <= b = " + (a <= b)); // 小于等于
// 逻辑运算符(Logical Operators)
System.out.println("\n【逻辑运算符】");
boolean x = true;
boolean y = false;
System.out.println("x && y = " + (x && y)); // 与(AND):全真才为真
System.out.println("x || y = " + (x || y)); // 或(OR):一真则为真
System.out.println("!x = " + (!x)); // 非(NOT):取反
// 逻辑运算符的短路特性演示
int num = 5;
if (num > 10 && someMethod()) {
System.out.println("不会执行,num > 10 为 false,短路");
}
if (num < 10 || someMethod()) {
System.out.println("不会执行,num < 10 为 true,短路");
}
}
// 用于演示逻辑运算符的短路特性
static boolean someMethod() {
System.out.println("someMethod() 被调用");
return true;
}
}
//输出结果
【算术运算符】
a + b = 13
a - b = 7
a * b = 30
a / b = 3
a % b = 1
c / d = 3.3333333333333335
【关系运算符】
a > b = true
a < b = false
a == b = false
a != b = true
a >= b = true
a <= b = false
【逻辑运算符】
x && y = false
x || y = true
!x = false
不会执行,num < 10 为 true,短路
运算符 | 说明 | 示例 |
---|---|---|
+ |
加法 | a + b |
- |
减法 | a - b |
* |
乘法 | a * b |
/ |
除法 | a / b (整数除法会截断小数) |
% |
取模(余数) | a % b |
整数除法:10 / 3 = 3
(不保留小数)。
浮点数除法:10.0 / 3.0 ≈ 3.333...
。
取模运算:正负号取决于被除数(如 -10 % 3 = -1
)。
运算符 | 说明 | 示例 |
---|---|---|
> |
大于 | a > b |
< |
小于 | a < b |
== |
等于 | a == b |
!= |
不等于 | a != b |
>= |
大于等于 | a >= b |
<= |
小于等于 | a <= b |
只能用于基本数据类型(如 int
、double
)。
对象之间比较不能用 ==
,应使用 .equals()
方法。
返回值为布尔类型(true
或 false
)。
运算符 | 说明 | 示例 | 运算规则 |
---|---|---|---|
&& |
与(AND) | x && y (全真才为真) |
当且仅当x 和y 均为true 时,结果为true 否则结果为 false |
|| |
或(OR) | x || y (有真即为真) |
当x 或y 中至少一个为true 时,结果为true 仅当 x 和y 均为false 时,结果为false |
! |
非(NOT) | !x (取反) |
若x 为true ,则结果为false 若 x 为false ,则结果为true |
&&
:如果第一个条件为 false
,后面的条件不会执行(防止异常)。
||
:如果第一个条件为 true
,后面的条件不会执行(提高效率)。
if (obj != null && obj.isValid()) { ... } // 防止空指针异常
Java 中运算符有优先级,例如:
算术运算符(*
, /
, %
) > 加减运算符
关系运算符(>
, <
, ==
) > 逻辑运算符
括号 ()
可以改变优先级。
建议:在复杂表达式中使用括号提高可读性,例如:
boolean result = (a + b) > (c * d); // 更清晰
类型 | 包含运算符 | 用途 |
---|---|---|
算术运算符 | + , - , * , / , % |
执行数学运算,支持整数、浮点数 |
关系运算符 | > , < , == , != , >= , <= |
比较两个值的大小或相等性,返回布尔值(true / false ) |
逻辑运算符 | && 、||、 ! |
用于组合多个条件进行逻辑判断,返回布尔值(true /false ) |
避免混淆 =
和 ==
:
=
是赋值操作符,==
是比较操作符。
使用括号明确逻辑顺序:
例如:(a > b) && (c < d)
。
逻辑运算符的短路特性可用于优化和安全检查:
如防止空指针异常、减少无效计算。
条件语句:if-else
和switch
。switch
语句适用于多分支判断,JDK 7 后支持String
类型。
//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 season = "summer";
switch (season) {
case "spring":
System.out.println("春天来了");
break;
case "summer":
System.out.println("夏天来了");
break;
case "autumn":
System.out.println("秋天来了");
break;
case "winter":
System.out.println("冬天来了");
break;
default:
System.out.println("未知季节");
}
// 输出:夏天来了
循环语句:for
、while
、do-while
。for
循环常用于已知循环次数的场景,while
和do-while
则适用于未知循环次数的情况,区别在于do-while
至少执行一次循环体。
// for循环示例:打印 1 到 10 的数字
for (int i = 1; i <= 10; i++) {
System.out.print(i + " ");
}
// 输出:1 2 3 4 5 6 7 8 9 10
//while循环示例
int count = 0;
while (count < 5) {
System.out.println("当前计数:" + count);
count++;
}
// 输出:
// 当前计数:0
// 当前计数:1
// 当前计数:2
// 当前计数:3
// 当前计数:4
//do-while循环示例
int number = 0;
do {
System.out.println("请输入一个正整数:");
// 假设用户输入的是 5
number = 5;
} while (number <= 0);
// 输出:
// 请输入一个正整数:
语句类型 | 适用场景 | 是否必须执行一次 |
---|---|---|
for |
已知循环次数(如遍历数组) | 否 |
while |
未知循环次数,先判断再执行 | 否 |
do-while |
未知循环次数,先执行一次再判断 | 是 |
if-else |
条件分支判断(2~3个选项) | 否 |
switch |
多分支判断(4个以上选项,或使用 String) | 否 |
跳转语句:break
用于跳出当前循环或switch
语句,continue
用于跳过本次循环的剩余代码,直接进入下一次循环。
for (int i = 1; i <= 20; i++) {
if (i > 10) {
break; // 超过10就停止循环
}
if (i % 2 == 0) {
continue; // 跳过偶数
}
System.out.print(i + " ");
}
// 输出:1 3 5 7 9
特性 | break |
continue |
---|---|---|
作用 | 退出当前循环或 switch |
跳过当前循环的剩余部分,继续下一次循环 |
使用位置 | for 、while 、do-while 、switch |
for 、while 、do-while |
是否终止循环 | 是 | 否 |
是否影响外层循环 | 否(除非使用标签) | 否 |
常见用途 | 提前退出循环、避免无效操作 | 跳过特定条件、优化逻辑流程 |
通过第一章 Java 基础语法的学习,我们掌握了变量与常量的定义、运算符的使用规则、循环与条件判断的逻辑控制,以及线程同步和简单并发编程的基础概念。这些内容构成了 Java 编程的核心框架,为后续深入学习面向对象编程、集合框架、JVM 底层原理等打下了坚实基础。在实践中,我们应注重代码规范、逻辑清晰,并通过调试工具和异常处理机制提升程序健壮性。下一阶段可尝试结合小项目巩固所学,逐步探索更复杂的开发场景,迈向真正的 Java 开发之路。
您的支持是我持续创作的动力:
❤️ 点赞:如果这个项目对您有所启发,请多多点点赞支持一下
收藏:完整项目源码已开源,有需要收藏自取
关注:订阅我的专栏,不错过后续更多优质内容