Java 基础知识大全(必看经典) 从零到入土级详解

“学Java就像吃火锅,刚开始烫嘴,越吃越上瘾!” —— 某位头发日渐稀疏的程序员

一、Java为什么这么香?🌶️

1.1 祖师爷的馈赠

1995年James Gosling团队搞出Java时,绝对没想到这玩意能火到今天!(现在连咖啡机都跑Java了你敢信?)三大核心特性必须刻烟吸肺:

  • 跨平台运行:一次编写到处报错?不!是到处运行!靠的是JVM虚拟机(后面细聊)
  • 面向对象:万物皆对象!连你的相亲对象都是new出来的(扎心了)
  • 自动内存管理:再也不用像C++那样手动delete了,GC垃圾回收机制真香!

1.2 JDK/JRE/JVM 的关系

这三个字母经常把人绕晕,其实就像包子铺:

  • JVM:蒸笼(能装包子)
  • JRE:蒸笼+包子(能运行)
  • JDK:蒸笼+包子+面粉+擀面杖(能开发)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

二、手把手搭环境 🔧

2.1 JDK安装(超详细版)

  1. 官网下载最新JDK(认准oracle.com,别下到葫芦娃!)
  2. 双击安装,路径建议C:\Java\jdk-21\(别装C盘根目录!系统炸了别找我)
  3. 配置环境变量(超级重点!!!)
    JAVA_HOME = C:\Java\jdk-21
    Path += %JAVA_HOME%\bin
    
  4. 验证安装:命令行输入java -version,看到版本号就算成功!

2.2 IDE选哪个?

  • IntelliJ IDEA:公认最强,社区版免费(学生党狂喜)
  • Eclipse:老牌经典,插件多但有点卡
  • VS Code:轻量级选手,适合小项目

个人建议:新手直接用IDEA,别折腾!等你会HelloWorld了再研究其他

三、语法基础(手把手环节)✍️

3.1 第一个程序

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello 秃头世界!"); 
    }
}

运行结果:

Hello 秃头世界!

重点解析:

  • class名必须和文件名一致!(不然直接报错)
  • main方法是程序入口,格式固定
  • System.out.println是最常用的输出语句(后面还会教printf格式化输出)

3.2 数据类型八股文

类型内存范围
byte1字节-128 ~ 127
short2字节-32768 ~ 32767
int4字节-21亿 ~ 21亿(最常用)
long8字节超大数(要加L后缀)
float4字节小数(要加f后缀)
double8字节常规小数(默认)
char2字节Unicode字符
boolean1位true/false

易错点:

long bigNum = 10000000000L; // 必须加L!
float pi = 3.14f;          // 必须加f!

四、面向对象(OOP)三大特征 🧱

4.1 封装(Encapsulation)

把数据和方法包在类里,就像把钱包装进保险箱:

public class Person {
    private String name; // 私有字段
    
    // 对外暴露的get/set方法
    public String getName() {
        return name + "先生"; // 还能加点骚操作
    }
    
    public void setName(String name) {
        if(name.length() > 10) {
            throw new IllegalArgumentException("名字太长了!");
        }
        this.name = name;
    }
}

4.2 继承(Inheritance)

子类自动获得父类的属性和方法:

class Animal {
    void eat() {
        System.out.println("干饭中...");
    }
}

class Cat extends Animal {
    void meow() {
        System.out.println("喵~");
    }
}

// 使用
Cat kitty = new Cat();
kitty.eat();  // 来自父类
kitty.meow(); // 自己的方法

4.3 多态(Polymorphism)

同一个方法在不同子类中有不同实现:

Animal[] animals = new Animal[]{new Cat(), new Dog()};
for (Animal a : animals) {
    a.eat(); // 自动调用具体子类的方法
}

多态是设计模式的基础,理解后看框架源码会轻松很多!

五、异常处理(救命指南)🚑

5.1 try-catch-finally

try {
    FileInputStream fis = new FileInputStream("test.txt");
} catch (FileNotFoundException e) {
    System.out.println("文件没找到啊哥!");
    e.printStackTrace();
} finally {
    System.out.println("无论是否异常,这里都会执行");
}

5.2 常见异常类型

  • NullPointerException:空指针(新人杀手No.1)
  • ArrayIndexOutOfBoundsException:数组越界
  • ClassCastException:类型转换错误
  • IOException:IO操作异常

最佳实践:

  • 不要用try-catch包裹正常逻辑!
  • 早抛出,晚捕获
  • 自定义异常继承Exception

六、小项目实战:坦克大战 🎮

6.1 核心类设计

class Tank {
    private int x, y; // 坐标
    private int direction; // 方向
    private int speed = 2; // 移动速度
    
    public void move() {
        switch(direction) {
            case 0: y -= speed; break; // 上
            case 1: x += speed; break; // 右
            case 2: y += speed; break; // 下
            case 3: x -= speed; break; // 左
        }
    }
    
    public void fire() {
        Bullet bullet = new Bullet(x, y, direction);
        bullets.add(bullet);
    }
}

6.2 碰撞检测

boolean isCollided(Tank t1, Tank t2) {
    return Math.abs(t1.x - t2.x) < 40 && 
           Math.abs(t1.y - t2.y) < 40;
}

这个项目虽然小,但涵盖了面向对象、集合操作、事件处理等核心知识!

七、面试高频题解析 💼

7.1 String vs StringBuilder

  • String:不可变,每次修改都生成新对象(适合少量操作)
  • StringBuilder:可变,线程不安全但高效(适合频繁拼接)
String s = "";
for(int i=0; i<10000; i++) {
    s += i; // 疯狂创建新对象!性能杀手!
}

// 改用
StringBuilder sb = new StringBuilder();
for(int i=0; i<10000; i++) {
    sb.append(i); 
}

7.2 HashMap原理

  • 数组+链表/红黑树结构
  • 初始容量16,负载因子0.75
  • 哈希冲突用链表法解决
  • JDK8后链表长度>8转红黑树

经典问题:为什么重写equals必须重写hashCode?

  • 保证相同对象哈希值相同
  • 防止HashMap等集合出现逻辑错误

看到这里的都是勇士!Java基础就像盖房子的地基,虽然枯燥但决定了你能建多高。遇到问题多敲代码少空想,记住:

“代码不会骗人,bug总是你的!” —— 某位调试了6小时的程序员

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值