前言

作为一名Java开发者,打好基础是迈向高薪的第一步。无论你是刚接触编程的小白,还是想巩固基础的老手,本文都将带你系统梳理Java的核心基础知识。全文涵盖数据类型、运算符、控制流程、数组、面向对象、异常处理等关键模块,并附有代码示例。建议收藏,随时查阅!


一、Java简介与平台特性

Java是一种面向对象跨平台的高级编程语言,由Sun Microsystems(现Oracle)于1995年发布。其核心优势是“一次编写,到处运行”,这得益于Java虚拟机(JVM)机制——Java源代码被编译为字节码(.class文件),由JVM在不同操作系统上解释执行。

主要特性

  • 简单易学:语法接近C/C++,但去掉了指针、多重继承等复杂特性。

  • 自动内存管理:垃圾回收器(GC)自动回收不再使用的对象。

  • 丰富的API:涵盖集合、IO、网络、多线程等常用工具库。


二、搭建开发环境

  1. 下载JDK(Java Development Kit)
    推荐使用LTS版本(如Java 8、11、17)。Oracle官网或OpenJDK均可。

  2. 配置环境变量

    • JAVA_HOME:指向JDK安装目录

    • PATH:添加 %JAVA_HOME%\bin

  3. 验证安装

    java -version
    javac -version

💡 IDE推荐:初学者可使用Eclipse或IntelliJ IDEA Community版,也可以先用文本编辑器+命令行感受编译过程。


三、Java程序的基本结构

// 文件名必须与类名一致:HelloWorld.java
public class HelloWorld {
    // main方法是程序入口,写法固定
    public static void main(String[] args) {
        System.out.println("Hello, Java!");
    }
}

编译与运行

javac HelloWorld.java   # 生成 HelloWorld.class
java HelloWorld         # 运行

四、数据类型与变量

Java是强类型语言,每个变量必须先声明类型才能使用。

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

类型 关键字 占用字节 取值范围
整型 byte 1 -128 ~ 127
short 2 -32768 ~ 32767
int 4 约 ±21亿
long 8 很大(后缀L)
浮点 float 4 后缀f
double 8 默认浮点类型
字符 char 2 0~65535(Unicode)
布尔 boolean 1(理论) true / false

代码示例

int age = 25;
double price = 19.99;
char grade = 'A';
boolean isPass = true;
long bigNum = 10000000000L;  // 注意L后缀
float f = 3.14f;             // 注意f后缀

2. 引用数据类型

  • 类(如String)、接口、数组、枚举等。

  • 引用类型的变量存储的是对象的内存地址,默认为null

String name = "张三";   // String是引用类型
int[] scores = {90, 85, 88};

3. 类型转换

  • 自动类型转换(小→大):int → long → float → double

  • 强制类型转换(大→小):可能丢失精度,需显式书写。

int a = 100;
long b = a;            // 自动转换
double d = 3.14;
int i = (int)d;        // 强制转换,结果为3

五、运算符

1. 算术运算符

+ - * / %(取模)
注意:整数除法会截断小数部分。

2. 关系运算符

== != < > <= >= 结果均为boolean

3. 逻辑运算符

&&(短路与)、||(短路或)、!(非)

4. 赋值与扩展运算符

= += -= *= /= %=

5. 自增自减

i++(先使用后自增)、++i(先自增后使用)

6. 三元运算符

条件 ? 表达式1 : 表达式2

java

int max = (a > b) ? a : b;

六、控制流程语句

1. 条件分支

if-else

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

switch(支持byte/short/int/char/String/枚举):

switch (day) {
    case 1:
        System.out.println("周一");
        break;
    default:
        System.out.println("其他");
}

2. 循环结构

for循环

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

增强for(遍历数组/集合):

int[] arr = {1,2,3};
for (int num : arr) {
    System.out.println(num);
}

while / do-while

int i = 0;
while (i < 3) {
    System.out.println(i++);
}

跳转关键字break(退出循环)、continue(跳过本次循环)。


七、数组

数组是存储相同类型数据的容器,长度固定。

声明与初始化

// 方式一:声明并分配空间
int[] nums = new int[5];      // 元素默认为0

// 方式二:直接赋值
int[] scores = {90, 85, 88};

// 方式三:new + 初始化
int[] arr = new int[]{1,2,3};

访问与遍历

int first = scores[0];        // 索引从0开始
scores[1] = 100;              // 修改
int len = scores.length;      // 获取长度

二维数组(锯齿数组)

int[][] matrix = new int[3][4];
matrix[0][1] = 5;

📌 注意:Java中的数组是对象,可通过new创建,存储在堆中。


八、面向对象编程(OOP)

Java是纯粹的面向对象语言,核心概念:对象封装继承多态

1. 类与对象

// 定义类
class Student {
    String name;      // 成员变量
    int age;
    
    void study() {    // 成员方法
        System.out.println(name + "正在学习");
    }
}

// 创建对象
Student s = new Student();
s.name = "小明";
s.study();

2. 封装(Encapsulation)

通过private隐藏属性,提供publicgetter/setter方法。

public class Person {
    private int age;
    
    public void setAge(int age) {
        if (age >= 0) this.age = age;
    }
    
    public int getAge() {
        return age;
    }
}

3. 构造方法

与类同名,无返回值,用于初始化对象。若未定义,编译器提供默认无参构造。

class Student {
    String name;
    Student(String n) {   // 有参构造
        name = n;
    }
}

4. 继承(extends)

子类继承父类的非私有成员,使用super调用父类构造或方法。

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

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

5. 多态(Polymorphism)

同一个方法在不同对象中表现出不同行为。条件:继承 + 方法重写 + 父类引用指向子类对象。

Animal a = new Dog();
a.eat();   // 调用的是Dog重写后的eat()

6. 方法重写(Override)与重载(Overload)

  • 重写:子类重新定义父类的方法(方法签名相同)。

  • 重载:同一个类中多个同名方法,参数列表不同。

7. 抽象类与接口

  • 抽象类:用abstract修饰,不能实例化,可包含抽象方法和普通方法。

  • 接口:用interface定义,方法默认public abstract,支持多实现。

interface Flyable {
    void fly();
}

class Bird implements Flyable {
    public void fly() {
        System.out.println("飞翔");
    }
}

8. 访问修饰符

修饰符 类内部 同包 子类 任何地方
private
默认
protected
public

九、常用工具类速览

1. String(不可变字符序列)

String s = "Hello";
int len = s.length();
String upper = s.toUpperCase();
boolean eq = s.equals("hello");   // 内容比较,勿用==

2. StringBuilder / StringBuffer(可变)

  • StringBuilder:线程不安全,效率高。

  • StringBuffer:线程安全,效率稍低。

3. 包装类

每个基本类型都有对应的包装类:int → Integerdouble → Double等。用于泛型、集合等需要对象的场景。

Integer i = 100;          // 自动装箱
int j = i;                // 自动拆箱
int num = Integer.parseInt("123");

4. 数学工具 Math

double max = Math.max(10, 20);
double rand = Math.random(); // [0,1)

十、异常处理

Java使用try-catch-finally捕获异常,分类:

  • 检查异常(如IOException):必须处理或声明。

  • 运行时异常(如NullPointerException):可选处理。

try {
    int[] arr = new int[2];
    arr[3] = 5;
} catch (ArrayIndexOutOfBoundsException e) {
    System.out.println("数组越界");
} finally {
    System.out.println("一定会执行");
}

自定义异常:继承ExceptionRuntimeException


十一、集合框架(初步)

常用集合接口:

  • List:有序可重复(ArrayList、LinkedList)

  • Set:无序不重复(HashSet、TreeSet)

  • Map:键值对(HashMap、TreeMap)

List<String> list = new ArrayList<>();
list.add("Java");
String item = list.get(0);

关于泛型、迭代器、Collections工具类,后续专题详解。


十二、总结与学习建议

本文覆盖了Java基础中的数据类型、流程控制、数组、面向对象、异常、常用类等核心内容。掌握这些,你已经具备了独立编写小型Java程序的能力。

下一步学什么?

  • Java进阶:多线程、网络编程、IO流、反射、注解

  • 数据库:JDBC

  • Web开发:Servlet、JSP、Spring框架

学习建议

  1. 多敲代码:只看不练等于零,每个示例都动手运行。

  2. 画内存图:理解堆栈、引用传递,对面向对象至关重要。

  3. 遇到bug先看异常栈:学会独立解决问题。

  4. 坚持写博客:输出是最好的输入。

希望这篇博客能成为你Java学习路上的好伙伴。如果觉得有用,欢迎点赞、收藏、评论!也欢迎关注我,后续会持续输出更多技术干货。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐