Java 语法
介绍
Java语法是学习Java编程的基础。掌握好Java的语法规则,能帮助你编写出正确、高效的Java程序。作为一种强类型、面向对象的编程语言,Java拥有清晰的语法结构,这也是它受欢迎的原因之一。本文将全面介绍Java的基本语法,帮助初学者快速入门。
基本结构
Java 程序的基本结构
一个简单的Java程序包含以下几个部分:
java
// 导入需要的包
import java.util.Scanner;
// 类定义
public class HelloWorld {
// 主方法
public static void main(String[] args) {
// 代码语句
System.out.println("Hello, World!");
}
}
运行结果:
Hello, World!
提示
Java程序的文件名必须与公共类的名称相同,并以.java
为扩展名。上例中,文件名应为HelloWorld.java
。
注释
Java支持三种注释方式:
java
// 单行注释
/*
多行注释
可以跨越多行
*/
/**
* 文档注释
* 用于生成Java文档
* @author 作者名
*/
标识符和关键字
标识符
标识符是用来命名变量、类、方法等程序元素的名称。Java标识符遵循以下规则:
- 由字母、数字、下划线(_)和美元符号($)组成
- 必须以字母、下划线或美元符号开头
- 区分大小写
- 不能使用Java关键字
有效的标识符示例:
java
userName
_value
$price
user123
无效的标识符示例:
java
123user // 以数字开头
user-name // 包含非法字符
class // 使用了关键字
关键字
关键字是Java语言预定义的,有特殊含义的标识符。例如:
abstract assert boolean break byte
case catch char class const
continue default do double else
enum extends final finally float
for goto if implements import
instanceof int interface long native
new package private protected public
return short static strictfp super
switch synchronized this throw throws
transient try void volatile while
数据类型
Java有两大类数据类型:
- 基本数据类型(8种)
- 引用数据类型
基本数据类型
类型 | 大小 | 范围 | 默认值 |
---|---|---|---|
byte | 1字节 | -128到127 | 0 |
short | 2字节 | -32,768到32,767 | 0 |
int | 4字节 | -2^31到2^31-1 | 0 |
long | 8字节 | -2^63到2^63-1 | 0L |
float | 4字节 | 约±3.40282347E+38F | 0.0F |
double | 8字节 | 约±1.79769313486231570E+308 | 0.0D |
char | 2字节 | 0到65,535 | '\u0000' |
boolean | - | true或false | false |
示例:
java
byte b = 100;
short s = 1000;
int i = 10000;
long l = 100000L; // L表示长整型
float f = 3.14F; // F表示浮点型
double d = 3.14159;
char c = 'A';
boolean flag = true;
引用数据类型
引用数据类型包括:
- 类(Class)
- 接口(Interface)
- 数组(Array)
例如:
java
String str = "Hello"; // String是类
int[] numbers = {1, 2, 3}; // 数组
变量
变量是存储数据的容器。在Java中,变量必须在使用前声明。
变量声明与初始化
java
// 声明
int number;
// 初始化
number = 100;
// 声明并初始化
int age = 25;
变量的作用域
Java变量的作用域取决于它在程序中的位置:
java
public class ScopeExample {
int instanceVar = 10; // 实例变量
static int staticVar = 20; // 静态变量
public void method() {
int localVar = 30; // 局部变量
System.out.println(localVar);
}
public static void main(String[] args) {
int blockVar = 40; // 块级变量
{
int innerBlockVar = 50; // 内部块级变量
System.out.println(innerBlockVar);
}
// innerBlockVar在这里不可访问
}
}
运算符
Java提供了多种运算符:
算术运算符
java
int a = 10;
int b = 5;
System.out.println("a + b = " + (a + b)); // 15
System.out.println("a - b = " + (a - b)); // 5
System.out.println("a * b = " + (a * b)); // 50
System.out.println("a / b = " + (a / b)); // 2
System.out.println("a % b = " + (a % b)); // 0
System.out.println("++a = " + (++a)); // 11
System.out.println("b-- = " + (b--)); // 5,先使用再减1
比较运算符
java
int x = 10;
int y = 5;
System.out.println("x == y : " + (x == y)); // false
System.out.println("x != y : " + (x != y)); // true
System.out.println("x > y : " + (x > y)); // true
System.out.println("x < y : " + (x < y)); // false
System.out.println("x >= y : " + (x >= y)); // true
System.out.println("x <= y : " + (x <= y)); // false
逻辑运算符
java
boolean a = true;
boolean b = false;
System.out.println("a && b = " + (a && b)); // false (与)
System.out.println("a || b = " + (a || b)); // true (或)
System.out.println("!a = " + (!a)); // false (非)
赋值运算符
java
int a = 10;
a += 5; // 相当于 a = a + 5
System.out.println("a = " + a); // 15
int b = 10;
b *= 2; // 相当于 b = b * 2
System.out.println("b = " + b); // 20
控制流语句
条件语句
if语句
java
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语句
java
int day = 3;
String dayName;
switch (day) {
case 1:
dayName = "星期一";
break;
case 2:
dayName = "星期二";
break;
case 3:
dayName = "星期三";
break;
case 4:
dayName = "星期四";
break;
case 5:
dayName = "星期五";
break;
case 6:
dayName = "星期六";
break;
case 7:
dayName = "星期日";
break;
default:
dayName = "无效日期";
}
System.out.println(dayName);
运行结果:
星期三
循环语句
for循环
java
for (int i = 1; i <= 5; i++) {
System.out.println("计数: " + i);
}
运行结果:
计数: 1
计数: 2
计数: 3
计数: 4
计数: 5
while循环
java
int i = 1;
while (i <= 5) {
System.out.println("计数: " + i);
i++;
}
运行结果与for循环相同。
do-while循环
java
int i = 1;
do {
System.out.println("计数: " + i);
i++;
} while (i <= 5);
运行结果与for循环相同。
跳转语句
break语句
java
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break; // 当i等于5时跳出循环
}
System.out.println("i = " + i);
}
运行结果:
i = 1
i = 2
i = 3
i = 4
continue语句
java
for (int i = 1; i <= 5; i++) {
if (i == 3) {
continue; // 当i等于3时跳过该次迭代
}
System.out.println("i = " + i);
}
运行结果:
i = 1
i = 2
i = 4
i = 5
字符串处理
Java中的字符串是String
类的对象:
java
String greeting = "Hello";
String name = "Alice";
// 字符串连接
String message = greeting + ", " + name + "!";
System.out.println(message); // 输出: Hello, Alice!
// 字符串长度
System.out.println("字符串长度: " + message.length()); // 14
// 字符串方法
System.out.println("转大写: " + message.toUpperCase());
System.out.println("转小写: " + message.toLowerCase());
System.out.println("替换: " + message.replace("Hello", "Hi"));
System.out.println("子字符串: " + message.substring(0, 5));
System.out.println("包含'Alice'? " + message.contains("Alice"));
数组
数组是存储同一类型数据的容器:
声明和初始化数组
java
// 声明并分配内存
int[] numbers = new int[5];
// 初始化元素
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;
numbers[3] = 40;
numbers[4] = 50;
// 声明并初始化
int[] scores = {95, 85, 75, 65, 55};
// 访问数组元素
System.out.println("第一个元素: " + scores[0]); // 95
System.out.println("数组长度: " + scores.length); // 5
遍历数组
java
int[] numbers = {10, 20, 30, 40, 50};
// 使用for循环
for (int i = 0; i < numbers.length; i++) {
System.out.println("索引 " + i + ": " + numbers[i]);
}
// 使用for-each循环
for (int num : numbers) {
System.out.println("值: " + num);
}
实际案例:学生成绩计算系统
下面通过一个实际案例来综合运用Java语法知识:
java
import java.util.Scanner;
public class StudentGradeSystem {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 接收学生数量
System.out.print("请输入学生人数: ");
int studentCount = scanner.nextInt();
// 创建数组存储学生姓名和成绩
String[] names = new String[studentCount];
double[] scores = new double[studentCount];
// 输入学生信息
for (int i = 0; i < studentCount; i++) {
System.out.print("请输入第" + (i + 1) + "个学生的姓名: ");
names[i] = scanner.next();
System.out.print("请输入" + names[i] + "的成绩: ");
scores[i] = scanner.nextDouble();
}
// 计算总分和平均分
double totalScore = 0;
double highestScore = scores[0];
String topStudent = names[0];
for (int i = 0; i < studentCount; i++) {
totalScore += scores[i];
if (scores[i] > highestScore) {
highestScore = scores[i];
topStudent = names[i];
}
}
double averageScore = totalScore / studentCount;
// 显示结果
System.out.println("\n===== 成绩统计 =====");
System.out.println("总分: " + totalScore);
System.out.println("平均分: " + averageScore);
System.out.println("最高分: " + highestScore + " (学生: " + topStudent + ")");
System.out.println("\n===== 学生成绩单 =====");
for (int i = 0; i < studentCount; i++) {
System.out.print(names[i] + ": " + scores[i]);
if (scores[i] >= 90) {
System.out.println(" (优秀)");
} else if (scores[i] >= 80) {
System.out.println(" (良好)");
} else if (scores[i] >= 60) {
System.out.println(" (及格)");
} else {
System.out.println(" (不及格)");
}
}
scanner.close();
}
}
运行示例(用户输入部分以斜体显示):
请输入学生人数: 3
请输入第1个学生的姓名: 张三
请输入张三的成绩: 85
请输入第2个学生的姓名: 李四
请输入李四的成绩: 92
请输入第3个学生的姓名: 王五
请输入王五的成绩: 78
===== 成绩统计 =====
总分: 255.0
平均分: 85.0
最高分: 92.0 (学生: 李四)
===== 学生成绩单 =====
张三: 85.0 (良好)
李四: 92.0 (优秀)
王五: 78.0 (及格)
总结
本文全面介绍了Java语言的基本语法,包括:
- Java程序的基本结构
- 注释、标识符和关键字
- 数据类型(基本类型和引用类型)
- 变量声明和作用域
- 各种运算符
- 控制流语句(条件、循环、跳转)
- 字符串处理
- 数组使用
理解这些基础知识对于Java编程至关重要。作为初学者,建议通过不断的练习来巩固这些语法规则,从简单的程序开始,逐步挑战更复杂的应用。
练习题
为了巩固所学知识,请尝试完成以下练习:
- 编写程序,计算1到100的所有偶数之和。
- 创建一个程序,判断输入的年份是否为闰年。
- 编写一个程序,找出整数数组中的最大值和最小值。
- 创建一个简单的计算器程序,支持加、减、乘、除四种运算。
- 编写程序,将字符串反转(例如,"Hello"变成"olleH")。
参考资源
如果你想进一步学习Java语法,可以参考以下资源:
- Oracle官方Java教程
- 《Java编程思想》(Thinking in Java)
- 《Head First Java》
- Codecademy的Java课程
- Java API文档
提示
学习编程最有效的方式是"边学边做"。通过实际编写代码,你会更快地掌握Java语法规则。