写在前面
“Java还值得学吗?”(灵魂拷问)作为连续12年霸榜TIOBE编程语言前三的选手,我可以负责任地告诉你:值!(拍胸脯)从企业级应用到安卓开发,从大数据到物联网,Java的身影无处不在。不过别急着下IDE!今天咱们就用最接地气的方式,盘一盘Java基础那些事儿~
一、HelloWorld的哲学
1.1 第一个程序(仪式感要有)
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello Java 2024!");
}
}
敲黑板!这里藏着三个Java铁律:
- 类名必须和文件名一致(否则编译器掀桌警告)
- main方法是程序入口(程序界的旋转门)
- 分号不能少(程序员最熟悉的陌生人)
1.2 编译与执行
javac HelloWorld.java
→ 生成.class字节码java HelloWorld
→ JVM启动!
(注意!第二步不要带.class后缀,这个坑我当年掉过三次!)
二、变量世界的生存法则
2.1 八大基本数据类型(原始居民)
类型 | 内存空间 | 默认值 | 举个栗子 |
---|---|---|---|
byte | 1字节 | 0 | byte age = 25; |
short | 2字节 | 0 | short price=999; |
int | 4字节 | 0 | int distance=384400;(地月距离) |
long | 8字节 | 0L | long stars=10000000000L;(别漏L!) |
float | 4字节 | 0.0f | float pi=3.14f; |
double | 8字节 | 0.0 | double atom=1e-10; |
char | 2字节 | ‘\u0000’ | char c=‘汉’; |
boolean | 1位 | false | boolean isJavaFun=true; |
(重点预警!)类型转换两大原则:
- 小转大 → 自动转换(int转long美滋滋)
- 大转小 → 强制转换(double转int会砍小数,血泪教训!)
2.2 引用类型(对象大佬)
String name = "Java酱"; // String是特殊引用类型
Date today = new Date(); // new操作符召唤对象
重要区别:基本类型存值,引用类型存地址!(内存结构图在脑中浮现)
三、程序控制流的骚操作
3.1 选择结构
if-else 三连击:
if(score >= 90) {
System.out.println("SSR!");
} else if(score >= 60) {
System.out.println("保底成功");
} else {
System.out.println("非酋附体");
}
switch 新特性(JDK14+):
String day = "Monday";
switch(day) {
case "Monday" -> System.out.println("摸鱼启动");
case "Friday" -> System.out.println("狂喜");
default -> System.out.println("日常搬砖");
}
(看到->符号了吗?这是switch表达式的新姿势!)
3.2 循环结构
for循环 魔鬼细节:
for(int i=0; i<10; i++) { // 经典三段式
if(i == 5) continue; // 跳过5
if(i == 8) break; // 提前结束
System.out.print(i+" ");
}
// 输出:0 1 2 3 4 6 7
增强for循环(foreach):
String[] languages = {"Java", "Python", "C++"};
for(String lang : languages) {
System.out.println(lang);
}
(遍历集合神器,但不能修改元素哦!)
四、面向对象三大支柱
4.1 封装(保险箱哲学)
public class BankAccount {
private double balance; // 私有化
public void deposit(double amount) {
if(amount > 0) {
balance += amount;
}
}
// getter方法(保护数据)
public double getBalance() {
return balance;
}
}
(划重点!不是所有字段都需要getter/setter,根据业务需求来)
4.2 继承(家族血脉)
class Animal {
void eat() {
System.out.println("干饭中...");
}
}
class Cat extends Animal {
void meow() {
System.out.println("喵呜~");
}
}
继承三原则:
- 子类拥有父类非private成员
- 只能单继承(Java拒绝菱形继承!)
- 构造方法不被继承(得自己调用super())
4.3 多态(七十二变)
Animal myCat = new Cat(); // 向上转型
myCat.eat(); // 调用子类重写方法
// myCat.meow(); ← 编译报错!(父类引用看不到子类特有方法)
(多态的精髓:编译看左边,运行看右边)
五、异常处理生存指南
5.1 try-catch-finally 三部曲
try {
File file = new File("secret.txt");
Scanner scanner = new Scanner(file);
} catch (FileNotFoundException e) {
System.out.println("文件失踪!");
e.printStackTrace();
} finally {
System.out.println("无论如何都要执行!");
}
5.2 异常分类图鉴
(脑补图片)
- Checked Exception:必须处理的(比如IOException)
- Unchecked Exception:RuntimeException及其子类
- Error:系统级错误(程序员不用管)
(重要技巧!)try-with-resources 自动关流:
try(FileInputStream fis = new FileInputStream("data.txt")) {
// 自动关闭资源
} catch(IOException e) {
// 异常处理
}
六、2024新特性尝鲜
6.1 文本块(告别拼接地狱)
String json = """
{
"name": "Java",
"age": 28,
"feature": ["跨平台", "面向对象"]
}
""";
(三重引号太香了!再也不用写恶心的+号拼接了)
6.2 Record类(POJO终结者)
public record User(String username, String email) {}
// 自动生成:构造方法、equals、hashCode、toString
(适合纯数据传输类,但不能继承哦!)
避坑指南(血泪经验)
- ==和equals():基本类型比值,引用类型比地址(字符串比较要用equals!)
- 字符串拼接:循环内用+拼接 → 性能灾难!(StringBuilder了解一下)
- 静态方法陷阱:不能调用非静态成员(新手常犯的null指针重灾区)
- 浮点数比较:0.1+0.2 ≠ 0.3(二进制表示问题,用BigDecimal解决)
学习路线图(私藏干货)
- 基础语法 → 2. 面向对象 → 3. 集合框架 → 4. IO流 → 5. 多线程 → 6. 网络编程 → 7. 新特性
(每个阶段建议做小项目巩固,比如计算器、通讯录管理)
最后送大家一句话:“学Java就像谈恋爱,开始可能被它的严谨吓到,但相处久了就会爱上它的靠谱!” 🚀