Skip to content

Java 基础语法

Java 是一种面向对象的编程语言,具有跨平台、稳定、生态完善等特点。

Java 程序通常运行在 JVM(Java Virtual Machine,Java 虚拟机)上。

可以简单理解为:

text
Java 源代码

编译

字节码 .class

JVM 运行

Java 常用于:

text
后端开发
Android 开发
企业级应用
大型系统

1. 第一个 Java 程序

创建文件:

text
Hello.java

代码:

java
public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello Java");
    }
}

运行结果:

text
Hello Java

2. main 方法

Java 程序常见入口:

java
public static void main(String[] args) {
}

可以先简单理解为:

text
程序从这里开始执行

其中:

text
public
static
void
main
String[] args

分别代表不同含义。

初学阶段不需要一次全部理解,先记住标准写法即可。


3. 输出语句

最常用:

java
System.out.println("Hello");

输出后自动换行。

例如:

java
System.out.println("Java");
System.out.println("Hello");

结果:

text
Java
Hello

如果使用:

java
System.out.print("Hello");
System.out.print("Java");

结果:

text
HelloJava

区别:

text
println → 输出后换行
print   → 输出后不换行

变量

4. 变量基本语法

Java 声明变量时需要指定数据类型。

基本格式:

java
数据类型 变量名 = 值;

例如:

java
int age = 18;

其中:

text
int → 数据类型
age → 变量名
18  → 变量值

5. 修改变量

java
int age = 18;

age = 20;

注意:

修改变量时不需要再次写数据类型。

错误:

java
int age = 18;

int age = 20;

同一个作用域中不能重复声明同名变量。


6. 常量

使用:

java
final

定义常量。

例如:

java
final double PI = 3.14159;

之后不能重新赋值:

java
PI = 3.14;

会报错。

常量名通常使用大写:

java
final int MAX_SIZE = 100;

基本数据类型

Java 有 8 种基本数据类型。

text
byte
short
int
long
float
double
char
boolean

7. byte

整数类型:

java
byte age = 18;

范围比较小。


8. short

java
short number = 1000;

9. int

Java 中最常用的整数类型:

java
int age = 18;

例如:

java
int score = 100;
int year = 2026;

10. long

用于较大的整数:

java
long population = 8000000000L;

通常在数值末尾加:

text
L

11. float

单精度小数:

java
float price = 19.9F;

需要加:

text
F

12. double

双精度小数:

java
double price = 19.99;

Java 中小数默认通常是:

text
double

13. char

保存单个字符:

java
char grade = 'A';

注意:

text
char 使用单引号
String 使用双引号

例如:

java
char letter = 'A';

String text = "Hello";

14. boolean

布尔类型:

java
boolean isLogin = true;
boolean isAdmin = false;

只有两个值:

text
true
false

引用类型

15. String

字符串:

java
String name = "Tom";

例如:

java
String language = "Java";

String 不是基本数据类型,而是引用类型。


16. 字符串拼接

使用:

java
+

例如:

java
String name = "Tom";
int age = 18;

System.out.println("姓名:" + name);
System.out.println("年龄:" + age);

输出:

text
姓名:Tom
年龄:18

17. String 常见方法

获取长度:

java
String text = "Hello";

System.out.println(text.length());

结果:

text
5

转换大写:

java
text.toUpperCase();

转换小写:

java
text.toLowerCase();

判断是否相等:

java
String a = "Java";
String b = "Java";

System.out.println(a.equals(b));

结果:

text
true

18. 字符串比较

Java 中不要使用:

java
==

判断字符串内容是否相同。

推荐:

java
a.equals(b)

例如:

java
String a = new String("Java");
String b = new String("Java");

System.out.println(a.equals(b));

结果:

text
true

可以简单记:

text
==       → 比较引用或基本类型值
equals() → 常用于比较对象内容

类型转换

19. 自动类型转换

范围较小的类型可以自动转换到范围较大的类型。

例如:

java
int number = 100;

double value = number;

结果:

text
100.0

20. 强制类型转换

例如:

java
double number = 10.8;

int value = (int) number;

结果:

text
10

小数部分会被舍弃。

基本格式:

java
(目标类型) 值

运算符

21. 算术运算符

常见:

text
+  加
-  减
*  乘
/  除
%  取余

例如:

java
int a = 10;
int b = 3;

System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);
System.out.println(a % b);

22. 整数除法

Java 中:

java
10 / 3

如果两边都是整数:

java
int result = 10 / 3;

结果:

text
3

如果希望得到小数:

java
double result = 10.0 / 3;

结果类似:

text
3.3333333333333335

23. 自增与自减

java
int number = 10;

number++;

等价于:

java
number = number + 1;

自减:

java
number--;

24. 赋值运算符

java
int number = 10;

常见简写:

java
number += 5;
number -= 5;
number *= 2;
number /= 2;

例如:

java
int score = 80;

score += 10;

System.out.println(score);

结果:

text
90

比较运算符

25. 常见比较运算符

text
==
!=
>
<
>=
<=

例如:

java
int age = 20;

System.out.println(age >= 18);

结果:

text
true

逻辑运算符

26. &&

逻辑与:

java
int age = 20;
boolean hasTicket = true;

if (age >= 18 && hasTicket) {
    System.out.println("允许进入");
}

两个条件都为真时:

text
true

27. ||

逻辑或:

java
boolean isAdmin = false;
boolean isOwner = true;

System.out.println(isAdmin || isOwner);

只要一个条件成立即可。


28. !

逻辑非:

java
boolean isLogin = true;

System.out.println(!isLogin);

结果:

text
false

条件判断

29. if

基本格式:

java
if (条件) {
    代码;
}

例如:

java
int age = 20;

if (age >= 18) {
    System.out.println("成年人");
}

30. if...else

java
int age = 16;

if (age >= 18) {
    System.out.println("成年人");
} else {
    System.out.println("未成年人");
}

31. if...else if...else

java
int score = 85;

if (score >= 90) {
    System.out.println("优秀");
} else if (score >= 60) {
    System.out.println("及格");
} else {
    System.out.println("不及格");
}

32. 三元运算符

基本格式:

text
条件 ? 值1 : 值2

例如:

java
int age = 20;

String result = age >= 18 ? "成年人" : "未成年人";

System.out.println(result);

switch

33. switch 基本语法

java
int day = 2;

switch (day) {
    case 1:
        System.out.println("星期一");
        break;

    case 2:
        System.out.println("星期二");
        break;

    case 3:
        System.out.println("星期三");
        break;

    default:
        System.out.println("未知");
}

break 表示结束当前分支。


循环

34. for 循环

基本格式:

java
for (初始化; 条件; 更新) {
    代码;
}

例如:

java
for (int i = 0; i < 5; i++) {
    System.out.println(i);
}

输出:

text
0
1
2
3
4

35. while 循环

java
int i = 0;

while (i < 5) {
    System.out.println(i);

    i++;
}

36. do...while

java
int i = 0;

do {
    System.out.println(i);

    i++;
} while (i < 5);

特点:

text
至少执行一次

37. break

结束循环:

java
for (int i = 0; i < 10; i++) {
    if (i == 5) {
        break;
    }

    System.out.println(i);
}

38. continue

跳过当前循环:

java
for (int i = 0; i < 5; i++) {
    if (i == 2) {
        continue;
    }

    System.out.println(i);
}

输出:

text
0
1
3
4

数组

39. 创建数组

方式一:

java
int[] numbers = {10, 20, 30};

方式二:

java
int[] numbers = new int[3];

40. 访问数组元素

数组下标从:

text
0

开始。

例如:

java
int[] numbers = {10, 20, 30};

System.out.println(numbers[0]);

结果:

text
10

41. 修改数组

java
int[] numbers = {10, 20, 30};

numbers[0] = 100;

42. 数组长度

使用:

java
.length

例如:

java
int[] numbers = {10, 20, 30};

System.out.println(numbers.length);

结果:

text
3

注意:

text
数组 length → 属性
String length() → 方法

43. 遍历数组

普通 for

java
int[] numbers = {10, 20, 30};

for (int i = 0; i < numbers.length; i++) {
    System.out.println(numbers[i]);
}

44. 增强 for 循环

也叫:

text
for-each

例如:

java
int[] numbers = {10, 20, 30};

for (int number : numbers) {
    System.out.println(number);
}

可以理解:

text
依次把数组中的元素取出来

方法

45. 定义方法

例如:

java
public static void hello() {
    System.out.println("Hello");
}

调用:

java
hello();

46. 方法参数

java
public static void hello(String name) {
    System.out.println("Hello " + name);
}

调用:

java
hello("Tom");

输出:

text
Hello Tom

47. 返回值

使用:

java
return

例如:

java
public static int add(int a, int b) {
    return a + b;
}

调用:

java
int result = add(10, 20);

System.out.println(result);

结果:

text
30

48. void

如果方法不返回任何结果:

java
public static void hello() {
    System.out.println("Hello");
}

使用:

text
void

表示:

text
没有返回值

方法重载

49. 方法重载

同一个类中可以出现同名方法,只要参数不同。

例如:

java
public static int add(int a, int b) {
    return a + b;
}

public static double add(double a, double b) {
    return a + b;
}

调用:

java
add(10, 20);

add(10.5, 20.5);

Java 会根据参数决定调用哪个方法。

这种方式叫:

text
方法重载

类与对象

50. 创建类

Java 是面向对象语言。

例如:

java
class Student {
    String name;
    int age;
}

这个:

text
Student

就是一个类。

可以把类理解为:

text
对象的模板

51. 创建对象

java
Student student = new Student();

其中:

text
Student → 类型
student → 对象变量
new Student() → 创建对象

52. 访问属性

java
Student student = new Student();

student.name = "Tom";
student.age = 18;

System.out.println(student.name);
System.out.println(student.age);

53. 类中的方法

java
class Student {
    String name;
    int age;

    void introduce() {
        System.out.println(
            "我叫 " + name + ",今年 " + age + " 岁"
        );
    }
}

使用:

java
Student student = new Student();

student.name = "Tom";
student.age = 18;

student.introduce();

构造方法

54. 构造方法

构造方法用于创建对象时初始化数据。

例如:

java
class Student {
    String name;
    int age;

    Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

创建对象:

java
Student student = new Student("Tom", 18);

55. this

this 表示当前对象。

例如:

java
Student(String name, int age) {
    this.name = name;
    this.age = age;
}

这里:

text
this.name → 当前对象的 name 属性
name      → 方法参数

封装

56. private

通常不会直接把对象属性全部公开。

例如:

java
class Student {
    private String name;
    private int age;
}

private 表示:

text
只能在当前类内部访问

57. getter

读取属性:

java
public String getName() {
    return name;
}

58. setter

修改属性:

java
public void setName(String name) {
    this.name = name;
}

完整示例:

java
class Student {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

使用:

java
Student student = new Student();

student.setName("Tom");

System.out.println(student.getName());

继承

59. extends

Java 使用:

text
extends

实现继承。

例如:

java
class Animal {
    void eat() {
        System.out.println("正在吃东西");
    }
}

定义子类:

java
class Dog extends Animal {
    void bark() {
        System.out.println("汪汪");
    }
}

使用:

java
Dog dog = new Dog();

dog.eat();
dog.bark();

Dog 可以使用从 Animal 继承的方法。


方法重写

60. Override

子类可以重新实现父类的方法。

例如:

java
class Animal {
    void speak() {
        System.out.println("动物发出声音");
    }
}

子类:

java
class Dog extends Animal {
    @Override
    void speak() {
        System.out.println("汪汪");
    }
}

调用:

java
Dog dog = new Dog();

dog.speak();

结果:

text
汪汪

多态

61. 多态基础

例如:

java
Animal animal = new Dog();

变量类型:

text
Animal

实际对象:

text
Dog

如果调用被重写的方法:

java
animal.speak();

会执行:

text
Dog 中重写后的 speak()

这就是 Java 多态的重要体现之一。


接口

62. interface

接口可以定义一组行为。

例如:

java
interface Flyable {
    void fly();
}

实现接口:

java
class Bird implements Flyable {
    @Override
    public void fly() {
        System.out.println("鸟正在飞");
    }
}

其中:

text
implements

表示实现接口。


异常处理

63. try...catch

程序运行过程中可能出现异常。

例如:

java
try {
    int result = 10 / 0;

    System.out.println(result);
} catch (ArithmeticException e) {
    System.out.println("发生算术异常");
}

可以防止程序因为异常直接中断。


64. finally

java
try {
    System.out.println("执行代码");
} catch (Exception e) {
    System.out.println("发生异常");
} finally {
    System.out.println("最终执行");
}

finally 中的代码通常都会执行。


集合

65. ArrayList

数组长度固定。

如果需要动态增加和删除元素,可以使用:

text
ArrayList

首先导入:

java
import java.util.ArrayList;

创建:

java
ArrayList<String> languages = new ArrayList<>();

添加:

java
languages.add("Java");
languages.add("Python");

读取:

java
System.out.println(languages.get(0));

修改:

java
languages.set(0, "C");

删除:

java
languages.remove(0);

获取长度:

java
languages.size();

66. 遍历 ArrayList

java
for (String language : languages) {
    System.out.println(language);
}

67. HashMap

用于保存:

text
键 → 值

数据。

导入:

java
import java.util.HashMap;

创建:

java
HashMap<String, Integer> scores = new HashMap<>();

添加:

java
scores.put("Tom", 90);
scores.put("Jack", 85);

获取:

java
System.out.println(scores.get("Tom"));

结果:

text
90

用户输入

68. Scanner

Java 中可以使用:

text
Scanner

读取终端输入。

导入:

java
import java.util.Scanner;

例如:

java
Scanner scanner = new Scanner(System.in);

System.out.print("请输入姓名:");

String name = scanner.nextLine();

System.out.println("你好," + name);

69. 输入整数

java
Scanner scanner = new Scanner(System.in);

System.out.print("请输入年龄:");

int age = scanner.nextInt();

System.out.println(age);

70. package

Java 可以使用包管理类。

例如:

java
package com.example;

可以简单理解为:

text
对 Java 类进行分类和组织

实际项目中经常看到:

text
com.example.project

类似的包名。


import

71. 导入类

例如使用 Scanner

java
import java.util.Scanner;

使用 ArrayList

java
import java.util.ArrayList;

使用 HashMap

java
import java.util.HashMap;

注释

72. 单行注释

java
// 这是单行注释

73. 多行注释

java
/*
    这是
    多行注释
*/

74. 文档注释

Java 还支持:

java
/**
 * 这是文档注释
 */

常用于类和方法说明。


一个完整的小例子

java
import java.util.ArrayList;

public class Main {

    public static void main(String[] args) {

        ArrayList<Student> students = new ArrayList<>();

        students.add(new Student("Tom", 18, 90));
        students.add(new Student("Jack", 20, 85));
        students.add(new Student("Alice", 19, 95));

        for (Student student : students) {

            student.introduce();

            if (student.getScore() >= 90) {
                System.out.println("成绩优秀");
            } else {
                System.out.println("继续努力");
            }

            System.out.println();
        }
    }
}

class Student {

    private String name;
    private int age;
    private int score;

    public Student(
        String name,
        int age,
        int score
    ) {
        this.name = name;
        this.age = age;
        this.score = score;
    }

    public void introduce() {
        System.out.println("姓名:" + name);
        System.out.println("年龄:" + age);
        System.out.println("成绩:" + score);
    }

    public int getScore() {
        return score;
    }
}

这个例子包含:

text

对象
构造方法
private
getter
ArrayList
for-each
if
方法

已经覆盖了很多 Java 基础知识。


Java 基础语法速查

功能Java
输出System.out.println()
整数int
小数double
字符char
布尔值boolean
字符串String
常量final
条件判断if...else
多分支switch
循环for
循环while
方法method()
返回值return
数组int[]
数组长度.length
创建对象new
当前对象this
私有属性private
继承extends
实现接口implements
异常处理try...catch
动态数组ArrayList
键值集合HashMap
用户输入Scanner

总结

Java 基础可以先分成三个阶段。

第一阶段是语法基础:

text
变量
数据类型
运算符
条件判断
循环
数组
方法

第二阶段是面向对象:

text

对象
构造方法
this
封装
继承
多态
接口

第三阶段是常用 Java 能力:

text
异常
集合
Scanner

import

初学阶段最重要的是先熟练:

text
int
double
boolean
String

if
for
while

数组

方法

class
new
this

然后重点进入:

text
封装
继承
多态
接口
集合
异常

Java 最核心的学习路线可以理解为:

text
基础语法

方法

类与对象

面向对象

集合

异常

泛型

IO

多线程

数据库

Spring / Spring Boot

对于 Java 来说,仅仅会写 iffor 和数组还只是语法入门。

真正重要的分界点是理解:

text
类 + 对象 + 封装 + 继承 + 多态

掌握这一部分以后,才算真正进入 Java 的核心。