java入门教程

2 阅读7分钟

1. 编写代码

新建文本文件,命名为 HelloWorld.java文件名必须与 public 类名完全一致):

java

运行

// 单行注释
/*
  多行注释
*/
public class HelloWorld {
    // 程序入口:固定格式,不可修改
    public static void main(String[] args) {
        // 输出语句:控制台打印文字
        System.out.println("Hello, Java! 你好,世界!");
    }
}

2. 编译与运行

  1. 打开 CMD,进入文件所在目录:

    bash

    运行

    cd D:\Java\code
    
  2. 编译(.java → .class 字节码):

    bash

    运行

    javac HelloWorld.java
    
  3. 运行(JVM 执行 .class):

    bash

    运行

    java HelloWorld
    
  4. 输出:

    plaintext

    Hello, Java! 你好,世界!
    

3. 核心语法说明

  • public class HelloWorld:定义公共类,文件名必须一致。
  • public static void main(String[] args)程序入口方法,JVM 从此开始执行。
  • System.out.println("..."):控制台打印并换行。
  • Java 严格区分大小写,语句以 ; 结尾。

三、Java 基础语法(核心)

1. 标识符与关键字

  • 标识符(命名规则):

    • 字母、数字、下划线 _、美元符 $ 组成。
    • 不能以数字开头,不能用关键字。
    • 见名知意:agestudentName(驼峰命名)。
  • 关键字:Java 预留的特殊单词(如 publicclassstaticint),不能用作变量名。

2. 数据类型(强类型语言)

(1)基本数据类型(8 种)

表格

类型关键字大小取值范围示例
字节型byte1 字节-128 ~ 127byte b=100;
短整型short2 字节-32768 ~ 32767short s=200;
整型int4 字节-2³¹ ~ 2³¹-1int age=25;
长整型long8 字节-2⁶³ ~ 2⁶³-1long l=1000L;(加 L)
单精度float4 字节6~7 位小数float f=3.14F;(加 F)
双精度double8 字节15 位小数double pi=3.14159;
字符型char2 字节单个字符 / Unicodechar c='A';
布尔型boolean1 位true / falseboolean flag=true;

(2)引用数据类型

  • 类(String、自定义类)、接口、数组、枚举等。
  • 示例:String name="张三";(字符串用双引号)。

3. 变量与常量

  • 变量:存储数据的容器,先声明后使用

    java

    运行

    // 声明 + 赋值
    int num;       // 声明
    num=10;        // 赋值
    int score=90;  // 声明并赋值
    
  • 常量:值不可修改,用 final 修饰。

    java

    运行

    final double PI=3.1415926;
    

4. 运算符

  1. 算术+-*/%(取余)、++--

  2. 赋值=+=-=*=/=

  3. 比较==!=><>=<=(结果为 boolean)

  4. 逻辑&&(与)、||(或)、!(非)

  5. 三元条件 ? 表达式1 : 表达式2

    java

    运行

    int max = a>b ? a : b;
    

5. 控制语句

(1)条件判断

  • if-else

    java

    运行

    int score=85;
    if(score>=90){
        System.out.println("优秀");
    }else if(score>=60){
        System.out.println("及格");
    }else{
        System.out.println("不及格");
    }
    
  • switch(匹配常量:int、char、String、枚举)

    java

    运行

    String day="周一";
    switch(day){
        case "周一": System.out.println("上班"); break;
        case "周日": System.out.println("休息"); break;
        default: System.out.println("其他");
    }
    

(2)循环结构

  • for 循环(最常用)

    java

    运行

    // 打印 1~10
    for(int i=1; i<=10; i++){
        System.out.println(i);
    }
    
  • while 循环

    java

    运行

    int i=1;
    while(i<=10){
        System.out.println(i);
        i++;
    }
    
  • do-while(先执行一次,再判断)

    java

    运行

    int i=1;
    do{
        System.out.println(i);
        i++;
    }while(i<=10);
    
  • break:跳出循环;continue:跳过本次循环

6. 数组

  • 声明与初始化:

    java

    运行

    // 方式1
    int[] arr=new int[5]; // 长度5,默认值0
    arr[0]=10; arr[1]=20;
    // 方式2
    int[] nums={1,2,3,4,5};
    
  • 遍历:

    java

    运行

    for(int i=0; i<nums.length; i++){
        System.out.println(nums[i]);
    }
    // 增强for
    for(int num : nums){
        System.out.println(num);
    }
    

四、面向对象编程(OOP)—— Java 核心

1. 类与对象

  • :抽象模板(属性 + 行为)
  • 对象:类的具体实例(new 出来)

示例:定义 Student 类

java

运行

// 类
public class Student {
    // 成员变量(属性)
    String name;
    int age;

    // 成员方法(行为)
    public void study(){
        System.out.println(name+"在学习");
    }
}

// 测试类
public class Test {
    public static void main(String[] args) {
        // 创建对象
        Student s=new Student();
        // 赋值
        s.name="张三";
        s.age=20;
        // 调用方法
        s.study(); // 输出:张三在学习
    }
}

2. 构造方法

  • 用于创建对象并初始化,方法名与类名相同,无返回值。

java

运行

public class Student {
    String name;
    int age;

    // 无参构造(默认存在)
    public Student(){}

    // 有参构造
    public Student(String name, int age){
        this.name=name; // this:当前对象
        this.age=age;
    }

    public void study(){
        System.out.println(name+"在学习");
    }
}

// 使用
Student s=new Student("李四",21);
s.study();

3. 三大特性

(1)封装

  • 私有化属性private),提供 get/set 方法访问。

java

运行

public class Person {
    // 私有属性
    private String name;
    private int age;

    // get/set
    public String getName(){ return name; }
    public void setName(String name){ this.name=name; }

    public int getAge(){ return age; }
    public void setAge(int age){
        if(age>0 && age<120){
            this.age=age;
        }else{
            System.out.println("年龄非法");
        }
    }
}

(2)继承

  • extends:子类继承父类,获得父类属性与方法,单继承

java

运行

// 父类
public class Animal {
    public void eat(){
        System.out.println("动物吃东西");
    }
}

// 子类
public class Dog extends Animal {
    // 重写方法
    @Override
    public void eat(){
        System.out.println("狗吃骨头");
    }
    // 子类特有方法
    public void bark(){
        System.out.println("汪汪汪");
    }
}

// 使用
Dog dog=new Dog();
dog.eat(); // 狗吃骨头
dog.bark();

(3)多态

  • 父类引用指向子类对象,方法重写实现多态。

java

运行

Animal an=new Dog();
an.eat(); // 狗吃骨头(调用子类重写方法)

4. 常用关键字

  • private:私有,仅本类可见

  • public:公共,所有类可见

  • protected:同包、子类可见

  • static:静态(属于类,不属于对象)

    • 静态变量:static int count;
    • 静态方法:public static void method(){}(直接用类名调用)
  • final

    • 类:不能被继承
    • 方法:不能被重写
    • 变量:常量(不能修改)

五、Java 核心 API(常用类)

1. String(字符串)

  • 不可变对象,常用方法:

java

运行

String s="Hello Java";
s.length();       // 长度
s.equals("abc");  // 比较内容
s.charAt(0);      // 获取第0个字符
s.substring(0,5); // 截取[0,5)
s.indexOf("Java");// 查找索引
s.split(" ");     // 分割

2. 集合框架(替代数组)

  • ArrayList(动态数组,最常用)

java

运行

import java.util.ArrayList;

public class ListTest {
    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<>();
        list.add("张三");
        list.add("李四");
        list.get(0);    // 获取
        list.size();    // 长度
        list.remove(0); // 删除
        // 遍历
        for(String s : list){
            System.out.println(s);
        }
    }
}
  • HashMap(键值对)

java

运行

import java.util.HashMap;

HashMap<String,Integer> map=new HashMap<>();
map.put("张三",20);
map.get("张三"); // 20
map.containsKey("李四");

3. 异常处理

  • try-catch-finally:捕获并处理异常

java

运行

try{
    // 可能出错的代码
    int a=10/0;
}catch(ArithmeticException e){
    // 捕获异常
    System.out.println("除数不能为0");
    e.printStackTrace(); // 打印异常信息
}finally{
    // 无论是否异常,都会执行(释放资源)
    System.out.println("finally执行");
}

4. 输入输出(Scanner)

java

运行

import java.util.Scanner;

public class InputTest {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入姓名:");
        String name=sc.next();
        System.out.print("请输入年龄:");
        int age=sc.nextInt();
        System.out.println("姓名:"+name+",年龄:"+age);
        sc.close();
    }
}

六、入门实战:学生管理系统(简易)

java

运行

import java.util.ArrayList;
import java.util.Scanner;

// 学生类
class Student{
    private String id;
    private String name;
    private int age;

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

    // get/set
    public String getId() {return id;}
    public String getName() {return name;}
    public int getAge() {return age;}

    @Override
    public String toString() {
        return "学号:"+id+",姓名:"+name+",年龄:"+age;
    }
}

// 主类
public class StudentManager {
    private static ArrayList<Student> list=new ArrayList<>();
    private static Scanner sc=new Scanner(System.in);

    public static void main(String[] args) {
        while(true){
            System.out.println("===学生管理系统===");
            System.out.println("1. 添加学生");
            System.out.println("2. 查询所有");
            System.out.println("3. 删除学生");
            System.out.println("0. 退出");
            System.out.print("请选择:");
            int choice=sc.nextInt();
            switch(choice){
                case 1: addStudent(); break;
                case 2: findAll(); break;
                case 3: deleteStudent(); break;
                case 0: System.out.println("退出成功"); return;
                default: System.out.println("输入错误");
            }
        }
    }

    // 添加
    private static void addStudent(){
        System.out.print("输入学号:");
        String id=sc.next();
        System.out.print("输入姓名:");
        String name=sc.next();
        System.out.print("输入年龄:");
        int age=sc.nextInt();
        list.add(new Student(id,name,age));
        System.out.println("添加成功");
    }

    // 查询
    private static void findAll(){
        if(list.isEmpty()){
            System.out.println("无学生信息");
            return;
        }
        for(Student s : list){
            System.out.println(s);
        }
    }

    // 删除
    private static void deleteStudent(){
        System.out.print("输入要删除的学号:");
        String id=sc.next();
        for(int i=0; i<list.size(); i++){
            if(list.get(i).getId().equals(id)){
                list.remove(i);
                System.out.println("删除成功");
                return;
            }
        }
        System.out.println("学号不存在");
    }
}

七、学习路线与建议

  1. 第一阶段(1-2 周) :环境搭建 → 基础语法 → 数组 → 方法
  2. 第二阶段(2-3 周) :面向对象(类、对象、继承、多态、封装)
  3. 第三阶段(3-4 周) :常用 API(String、集合、异常、IO)
  4. 第四阶段:进阶(多线程、网络、数据库 JDBC、框架 SpringBoot)

学习建议

  • 多敲代码:看懂≠会写,每个知识点必须手动敲 3 遍以上。
  • 先理解再记忆:不要死记语法,理解原理更重要。
  • 做小项目:计算器、管理系统、猜数字游戏,巩固知识。
  • 看官方文档 + 经典书籍:《Java 核心技术卷 Ⅰ》《Head First Java》

八、常见问题

  1. 环境变量配置失败:检查路径是否正确、无中文、重启 CMD。
  2. 报错:找不到或无法加载主类:文件名与类名不一致、编译 / 运行命令错误。
  3. 空指针异常(NullPointerException) :对象未 new 就调用方法 / 属性。

需要我把这份教程整理成一份可直接复制的 Java 入门学习清单(按天规划 + 每日练习题),方便你循序渐进练