Java:看起来像 C 语言,听着像 J 一下,打上去如同喝 Java(咖啡),三分钟了解三点:

  • C(ross)平台
  • O(bject)导向
  • A(lready) ready(生态成熟)

1️⃣ Java 概述与环境搭建

路径说明
JDK开发工具包,内含 javacjavadocjd 等
JRE运行时环境,单独部署可执行 .jar
JVM虚拟机,执掌 .class

# 验证安装

java -version

javac -version

TIP:若你想减肥到 JDK 19,记得把 JAVA_HOME 指向新安装路径,别再用旧's Q寒冬`。


2️⃣ 基础语法(粗口版)

2.1 基本数据类型

关键字体积默认说明
byte1 B0最小可用于存储 walker
int4 B0经济型的整数,足以装多少人都行
long8 B0L大量如亿年的统计
float4 B0.0f仅 7 位有效数字,千万别在金融里用
double8 B0.0d15 位有效,精度能让你心动
char2 B'\u0000'存一字符,不管你想装谁
boolean1 Bfalse真或假,别再打  与  的表情包

注意float 与 double 如同 相机 和 照相机,想清晰就得多点位数,float 怪兽般地省内存。

2.2 引用类型

  • class对象模板,一次装行星,上亿行的代码逼你功勋服务
  • interface:行为规范,约定好了 不吃饭不成朋友
  • array:一组同类的容器,你若要把一百只龙卷风装下,先弄好容器

2.3 变量、常量 & 命名

int age = 20; // 变量

final double PI = 3.14159; // 常量
规范示例
类名StudentInfo
方法/变量getName
常量MAX_VALUE

玩笑:常量不改也能 fail —— 失误射杀风险急上升。

2.4 类型转换

  • 自动提升int → double
  • 强制转换double → int(会丢精度)
  • char 与 int 互通(Unicode)

2.5 运算符

类别运算符说明
算术+ - * / %传统四则,整除截断
赋值= += -= *= /=省事
自增/自减++ --前后缀说不出谁先
逻辑`&&
`&^ ~ << >> >>>`

<< 与 >> 就是 左移 与 右移 的 含义是把自己左移/右移 n 位 <(兮)>
在图像处理、加密、哈希里见长。


3️⃣ 流程控制

3.1 条件结构

if (score >= 90) {
    System.out.println("优秀");
} else if (score >= 60) {
    System.out.println("及格");
} else {
    System.out.println("不及格");
}
  • switch 也支持 String 与 enum
  • 穿透现象:忘 break 就会连着跑,像走 上坡跑到滑梯

3.2 循环结构

循环语义典型场景
while条件在前检查队列是否空
do...while先执行后判断计算不等的绝招
for经典计数遍历索引
for-each集合遍历for (String s : list) {}

示例

for (int i = 0; i < 5; i++) {
    if (i == 3) continue;
    if (i == 4) break;   // 跑5即可
}

4️⃣ 方法(函数)

4.1 定义与调用

public static int add(int a, int b) {
    return a + b;
}

4.2 参数传递

  • 基本类型:复制值
  • 引用类型:复制引用(堆地址)

冷知识:传引用不等同 this 复制;修改对象属性影响原对象。

4.3 方法重载(Overloading)

规则说明
同名参数不同 (类型/数量)
调用时编译期决定

5️⃣ 数组

int[] arr1 = {1,2,3};

int[][] grid = new int[3][4];
  • arr.length 访问长度
  • Arrays.sort(arr) 排序
  • Arrays.toString(arr) 可读打印

二进制 与 数组 俩又格格不入但可以交融:
int[] binary = {0,1,1,0}


6️⃣ 面向对象(简洁版本)

6.1 封装

class Student {
    private String name;
    public void setName(String name) { this.name = name; }
    public String getName() { return name; }
}

6.2 继承 & 重写

class Animal { void eat() {} }

class Dog extends Animal { void bark() {} }
  • ** super**:访问父类
  • ** this**:当前对象

6.3 多态

Animal a = new Dog();
a.eat();  // 调用 Dog 重写方法

小技巧:多态只对方法生效,属性直接按声明访问。

6.4 抽象类 & 接口

abstract class Shape { abstract void draw(); }

interface Flyable { void fly(); }

JDK8+:接口可带 defaultstatic


7️⃣ 常用工具类(quicklook)

典型用途备注
Wrapper ClassIntegerDouble 等)自动装箱/拆箱int ↔ Integer
String文本处理不可变
StringBuilder/StringBuffer对字符串增删改线程安全即可
Math四则/三角/随机等Math.random() 产生 [0,1)
日期时间 (java.time)LocalDateLocalDateTime2024 版 java.time.format.DateTimeFormatter

例子

StringBuilder sb = new StringBuilder("Hello");

sb.append(" World");

System.out.println(sb);

8️⃣ 集合框架小结

组合底层特点
ListArrayList数组读快 写慢
LinkedList链表插删快 读慢
Vector同步数组线程安全但慢
SetHashSet哈希表唯一无序
LinkedHashSet哈希+链表保序
TreeSet红黑树排序唯一
MapHashMap同上无序
LinkedHashMap有序循环一次
TreeMap红黑树键排序

一句话java.util.* 接口就像员工手册,你可以灵活挑选 ArrayList 或 LinkedList 决定工作方式。


9️⃣ 异常机制(删乱八股)

try {
    int r = 10 / 0;
} catch (ArithmeticException e) {
    e.printStackTrace();
} finally {
    System.out.println("结束");
}
  • 自定义异常
class MyException extends Exception {
    MyException(String msg) { super(msg); }
}

提示:
throw new MyException("不行");
throws MyException 放到方法签名,标记 你会抛异常


🔟 多线程基础

创建线程

class MyThread extends Thread {
    @Override public void run() { System.out.println("线程跑中…"); }
}
new MyThread().start();

或 Lambda:

new Thread(() -> System.out.println("Lambda 线程")).start();

常用线程方法

方法作用
sleep(ms)暂停
join()等待
yield()让渡

同步与通信

  • synchronized 对象锁
  • wait() / notify() / notifyAll()

笑点:连线程都需要“争路”竞争,说明你写的代码真的很抢夺资源。


1️⃣一卡通(关键字/修饰符速记)

关键字用途
static类级别
final不可变/不可继承/重写
abstract抽象
this当前实例
super父实例
transient序列化跳过
volatile可见性保障
instanceof类型检查

2️⃣ 小细节深层人檄

主题说明
equals() vs hashCode()对象相等需同步哈希
String vs StringBuilder互补:不变vs可变
final vs finally修饰 vs 最后执行

最后提醒
代码里往往蕴含哲学不可变是安全的,可变是灵活的。用对了生产力翻倍,搞错了,坑也翻倍。


结语
本文仅为 JavaSE 小白 的速记版,望你在面向对象的 宇宙里 找到自己的星座。
踏上学习之路,别停;写完代码,别忘检查 Main.java。祝你 HotFix 成功,InfiniteLoop 干掉,OutOfMemoryError 远离。
代码今天写,笑话你领导明天提!

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐