Java基础语法详解
Java是一种面向对象的编程语言,具有简单、可移植、安全等特性。
1. Java程序基本结构
一个最简单的Java程序结构如下:
// 定义类
public class HelloWorld {
// 主方法,程序入口
public static void main(String[] args) {
// 输出语句
System.out.println("Hello, World!");
}
}
public class HelloWorld
:定义一个公开类,类名必须与文件名一致(HelloWorld.java)public static void main(String[] args)
:主方法,Java程序的入口点System.out.println()
:标准输出语句
2. 基本语法规则
- 大小写敏感:Java区分大小写,
Hello
和hello
是不同的标识符 - 类名:首字母大写,采用驼峰命名法,如
MyFirstClass
- 方法名:首字母小写,驼峰命名法,如
myMethodName()
- 源文件名:必须与public类名相同,扩展名为
.java
- 主方法:
public static void main(String[] args)
是Java程序的固定入口点
3. 注释
Java支持三种注释方式:
// 单行注释
/*
多行注释
可以跨越多行
*/
/**
* 文档注释
* 用于生成API文档
*/
4. 变量与数据类型
4.1 基本数据类型
Java有8种基本数据类型:
类型 | 关键字 | 大小 | 范围/示例 |
---|---|---|---|
字节型 | byte | 1字节 | -128 到 127 |
短整型 | short | 2字节 | -32,768 到 32,767 |
整型 | int | 4字节 | -2^31 到 2^31-1 |
长整型 | long | 8字节 | -2^63 到 2^63-1 |
单精度 | float | 4字节 | 3.4e-038 到 3.4e+038 |
双精度 | double | 8字节 | 1.7e-308 到 1.7e+308 |
字符型 | char | 2字节 | Unicode字符,如’A’ |
布尔型 | boolean | 1位 | true 或 false |
4.2 变量声明与初始化
// 声明变量
int age;
double salary;
char grade;
// 初始化变量
age = 25;
salary = 50000.50;
grade = 'A';
// 声明并初始化
String name = "John Doe";
boolean isActive = true;
4.3常量
使用final
关键字声明常量:
final double PI = 3.14159;
final int MAX_VALUE = 100;
5. 运算符
5.1 算术运算符
int a = 10, b = 20;
int sum = a + b; // 加法
int diff = a - b; // 减法
int product = a * b; // 乘法
int quotient = b / a; // 除法
int remainder = b % a; // 取模
5.2 关系运算符
boolean isEqual = (a == b); // 等于
boolean notEqual = (a != b); // 不等于
boolean greater = (a > b); // 大于
boolean less = (a < b); // 小于
5.3 逻辑运算符
boolean andResult = (true && false); // 逻辑与
boolean orResult = (true || false); // 逻辑或
boolean notResult = !true; // 逻辑非
5.4 赋值运算符
int x = 10;
x += 5; // 等同于 x = x + 5
x -= 3; // 等同于 x = x - 3
x *= 2; // 等同于 x = x * 2
6. 控制流语句
6.1 条件语句
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语句
int day = 3;
String dayName;
switch (day) {
case 1:
dayName = "星期一";
break;
case 2:
dayName = "星期二";
break;
// ...其他case
default:
dayName = "无效天数";
}
6.2 循环语句
for循环
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
while循环
int count = 0;
while (count < 5) {
System.out.println(count);
count++;
}
do-while循环
int num = 1;
do {
System.out.println(num);
num++;
} while (num <= 5);
6.3 跳转语句
// break语句
for (int i = 0; i < 10; i++) {
if (i == 5) {
break; // 跳出循环
}
System.out.println(i);
}
// continue语句
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
continue; // 跳过本次循环
}
System.out.println(i);
}
7. 数组
7.1 一维数组
// 声明数组
int[] numbers;
// 初始化数组
numbers = new int[5]; // 大小为5的数组
// 声明并初始化
int[] primes = {2, 3, 5, 7, 11};
// 访问数组元素
System.out.println(primes[0]); // 输出2
// 遍历数组
for (int i = 0; i < primes.length; i++) {
System.out.println(primes[i]);
}
// 增强for循环
for (int prime : primes) {
System.out.println(prime);
}
7.2 多维数组
// 二维数组
int[][] matrix = new int[3][3];
// 初始化二维数组
int[][] grid = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// 访问二维数组元素
System.out.println(grid[1][2]); // 输出6
8. 方法(函数)
8.1 方法定义
// 无返回值方法
public static void greet(String name) {
System.out.println("Hello, " + name + "!");
}
// 有返回值方法
public static int add(int a, int b) {
return a + b;
}
// 方法重载
public static double add(double a, double b) {
return a + b;
}
8.2 方法调用
greet("Alice"); // 调用无返回值方法
int sum = add(5, 3); // 调用有返回值方法
double result = add(2.5, 3.7); // 调用重载方法
9. 面向对象基础
9.1 类与对象
// 定义类
public class Person {
// 字段(属性)
String name;
int age;
// 方法
public void introduce() {
System.out.println("我叫" + name + ",今年" + age + "岁。");
}
}
// 创建对象
Person person1 = new Person();
person1.name = "张三";
person1.age = 25;
person1.introduce();
9.2 构造方法
public class Person {
String name;
int age;
// 构造方法
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 方法...
}
// 使用构造方法创建对象
Person person2 = new Person("李四", 30);
9.3 封装
public class BankAccount {
private double balance; // 私有字段
// 公有方法访问私有字段
public double getBalance() {
return balance;
}
public void deposit(double amount) {
if (amount > 0) {
balance += amount;
}
}
public void withdraw(double amount) {
if (amount > 0 && amount <= balance) {
balance -= amount;
}
}
}
10. 字符串处理
Java中的字符串是String
类的对象:
// 字符串创建
String str1 = "Hello";
String str2 = new String("World");
// 字符串连接
String greeting = str1 + " " + str2;
// 字符串长度
int len = greeting.length();
// 字符串比较
boolean isEqual = str1.equals("Hello"); // 推荐
boolean isSame = (str1 == "Hello"); // 不推荐,比较引用
// 常用方法
String sub = greeting.substring(0, 5); // 子串
String upper = greeting.toUpperCase(); // 转大写
String trimmed = " hello ".trim(); // 去空格
11. 输入输出
11.1 标准输入输出
import java.util.Scanner;
public class InputExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入您的名字: ");
String name = scanner.nextLine();
System.out.print("请输入您的年龄: ");
int age = scanner.nextInt();
System.out.println("你好," + name + "! 你今年" + age + "岁。");
scanner.close();
}
}
11.2 格式化输出
double pi = Math.PI;
System.out.printf("PI的值是: %.2f%n", pi); // 输出: PI的值是: 3.14
int number = 123;
System.out.printf("十进制: %d, 八进制: %o, 十六进制: %x%n", number, number, number);
12. 异常处理
try {
// 可能抛出异常的代码
int result = 10 / 0;
} catch (ArithmeticException e) {
// 处理特定异常
System.out.println("除数不能为零");
} catch (Exception e) {
// 处理其他异常
System.out.println("发生错误: " + e.getMessage());
} finally {
// 无论是否发生异常都会执行的代码
System.out.println("执行完成");
}