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 Java2. 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
boolean7. 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
L11. float
单精度小数:
java
float price = 19.9F;需要加:
text
F12. double
双精度小数:
java
double price = 19.99;Java 中小数默认通常是:
text
double13. 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
年龄:1817. 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
true18. 字符串比较
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.020. 强制类型转换
例如:
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.333333333333333523. 自增与自减
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
true27. ||
逻辑或:
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
435. 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
1041. 修改数组
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 Tom47. 返回值
使用:
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
3048. 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 来说,仅仅会写 if、for 和数组还只是语法入门。
真正重要的分界点是理解:
text
类 + 对象 + 封装 + 继承 + 多态掌握这一部分以后,才算真正进入 Java 的核心。