KyrieChao

Java 零基础入门:从 Hello World 到核心语法

2026-03-09

欢迎来到 Java 学习笔记的第一篇!在本系列中,我们将从零开始,一步步掌握 Java 的核心语法。
不跳过任何基础,从最简单的 System.out.println 讲起,带你真正理解输开发中必备的知识。

1. 环境准备

首先,确保你已经安装了 Java 8 或更高版本。

java --version
# java 17.0.16 2025-07-15 LTS

2. 创建项目

使用 javac 编译你的第一个 Java 程序:

用JetBrains IDEA创建一个Java项目(first-demo),并创建一个名为Main.java的文件。

first-demo/
├── src
│    └── Main.java           # 入口类
└── out/                     # 编译输出(自动创建)

3. 编写代码

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

4. 编译与运行

  • 可以点击JetBrains IDEA的Current File 打印台即可出现Hello, Java!

  • 也可以使用命令行编译和运行:

# 编译
javac src/Main.java -d out

# 运行
java -cp out Main

5. 运行结果

Hello, Java!

6. 数据类型与变量

Java 是强类型语言,每个变量必须先声明类型。数据类型分为基本类型(8种)和引用类型(数组、类、接口等)。

6.1 完整示例

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        // 整数类型(从小到大)
        byte score = 90;               //  8 bit  -128 ~ 127
        short height = 170;            // 16 bit -32768 ~ 32767
        int age = 25;                  // 32 bit  ±21 亿(最常用)
        long population = 1_000_000L;  // 64 bit  ±9×10¹⁸

        // 浮点类型
        float weight = 68.5f;          // 32 bit,必须加 f
        double price = 19.99;          // 64 bit(默认,精度更高)

        // 字符与布尔
        char grade = 'A';              // 16 bit,单引号,存一个字符
        boolean isStudent = true;      // true 或 false

        // 引用类型
        String name = "Alice";         // 字符串,双引号,final class
        int[] arr = {1, 2, 3, 4, 5};   // 数组,引用类型

        // 特殊表示法
        int bin = 0b1010;              // 二进制(0b 开头)
        int hex = 0xFF;                // 十六进制(0x 开头)
        double pi = 3.141_592_653;     // 下划线分隔,提升可读性
        String emoji = "\uD83D\uDE04"; // Unicode 表情 😄
        char chinese = '中';           // 支持中文

        // var 类型推断(Java 10+)
        var message = "Hello";         // 编译器推断为 String

        // 打印输出
        System.out.println("Score: " + score);
        System.out.println("Height: " + height);
        System.out.println("Age: " + age);
        System.out.println("Population: " + population);
        System.out.println("Weight: " + weight);
        System.out.println("Price: " + price);
        System.out.println("Grade: " + grade);
        System.out.println("Is Student: " + isStudent);
        System.out.println("Name: " + name);
        System.out.println("Array: " + Arrays.toString(arr)); // 注意这里
        System.out.println("Binary 0b1010 = " + bin);
        System.out.println("Hex 0xFF = " + hex);
        System.out.println("Pi = " + pi);
        System.out.println("Emoji: " + emoji);
        System.out.println("Chinese: " + chinese);
        System.out.println("Var: " + message);
    }
}

6.2 关键点总结

类型 大小 范围/说明 注意
byte 8 bit -128 ~ 127 文件流、节省内存
short 16 bit -32768 ~ 32767 很少用
int 32 bit ±21亿 整数默认类型
long 64 bit 很大 赋值加 L
float 32 bit 6~7位精度 赋值加 f
double 64 bit 15~16位精度 浮点默认类型
char 16 bit 0 ~ 65535 单引号,存 Unicode
boolean 1 bit true/false 不能转整数

6.3 常见坑

// ❌ 错误:整数默认是 int,超出范围要加 L
long big = 3000000000;     // 编译错误!30亿超过 int 范围
long big = 3000000000L;    // ✅ 正确

// ❌ 错误:浮点默认是 double,不能直接赋给 float
float f = 3.14;            // 编译错误!
float f = 3.14f;           // ✅ 正确

// ❌ 错误:char 用双引号
char c = "A";              // 编译错误!String 不能赋给 char
char c = 'A';              // ✅ 正确

// ⚠️ 注意:数组直接打印是地址
System.out.println(arr);   // [I@6d06d69c(地址)
System.out.println(Arrays.toString(arr)); // [1, 2, 3, 4, 5] ✅

7. 类型转换

7.1 自动转换(小 → 大)

byte b = 10;
int i = b;          // ✅ 自动转,没问题
double d = i;       // ✅ 自动转,没问题

7.2 强制转换(大 → 小)

double d = 3.99;
int i = (int) d;    // ✅ 强制转,i = 3(小数直接丢掉!)

int big = 130;
byte small = (byte) big;  // ⚠️ 溢出!结果是 -126

7.3 字符串与其他类型互转

// 任意类型 → String
String s1 = String.valueOf(123);    // "123"
String s2 = 123 + "";               // "123"(偷懒写法)

// String → 数字
int num = Integer.parseInt("123");           // 123
double d = Double.parseDouble("3.14");       // 3.14

// 注意:格式不对会抛异常
int error = Integer.parseInt("abc");         // ❌ NumberFormatException

8. 常量与命名规范

// 常量:final 修饰,全大写,单词间下划线分隔
final double PI = 3.14159;
final int MAX_SIZE = 100;

// 变量命名:小驼峰
int studentAge = 20;
String userName = "Tom";

// 类名:大驼峰(Main, StudentInfo)
// 方法名:小驼峰(getName, printInfo)
// 包名:全小写(com.example.demo)