文章归档
沿着时间,重读写下的痕迹。
-
封装
钩子:你的对象在"裸奔" 接着上篇的 Student 类,现在写个"破坏者": Student s = new Student("张三", 18); s.age = -100; // 编译通过,运行不报错 s.name = null; // 名字也能直接抹掉 一个对象,年龄 -1
-
this 关键字
钩子 先看一段很多新手写过的代码: class Student { String name; void setName(String name) { name = name; // 想给字段赋值 } } 编译通过,运行不报错,但什么都没发生——对象的
-
构造方法
钩子 上篇末尾留了个悬念:new 的第 2 步"执行初始化"到底是什么? 先看一个真实痛点:用上篇的写法,造一个学生要三行——new、赋 name、赋 age。造 100 个学生就是 300 行,而且谁都有可能忘了赋值,于是"我叫null"满天飞。 能不能让对象一出生就把名字带好?能,这就是构造方法
-
类和对象
钩子 上篇用外卖订单认识了对象,但那是我写好给你的。今天开始,你自己写类、自己造对象——这是你第一次从"用 Java"变成"写 Java"。 写完这篇,String、int[] 这些天天用的东西在你眼里会突然变透明:哦,原来你们就是这么造出来的。 01 写第一个类:图纸长这样 class Stude
-
一切皆对象
钩子 从今天起进入新模块:面向对象。 这个词你肯定听过,八个字版本叫"一切皆对象"。听着像玄学,其实一点都不玄——这篇文章我用一份外卖订单讲清楚它,顺便还两笔前面欠下的债: main 方法前面那个 static,到底是干嘛的? args 为什么是 String[] 类型,而不是 String? 还有
-
数组
钩子 任务:存一个班 100 个人的成绩。 int score1; int score2; int score3; ... 写到第 20 个你自己就崩了。变量适合存"一个"数据,装"一批"同类型数据,Java 给的工具是:数组。 顺便预告一下,今天还是你和新朋友见面的日子——ArrayIndexOu
-
方法与重载
钩子 你天天写 System.out.println(...),有没有想过一个问题:为什么 int 能打印,double 能打印,字符串能打印,连数组都能打印? 难道 JDK 的工程师给每种类型都写了一个 println?还真差不多——但它们全都叫同一个名字。Java 是怎么分清的?答案就是今天的主
-
循环for 和 while 怎么选?
钩子 给你个任务:打印 1 到 100。 复制 100 行 System.out.println 也行,就是交完这份代码,你可能会被自己劝退。而循环只要 3 行: for (int i = 1; i <= 100; i++) { System.out.println(i); } 循环是程序
-
流程控制:if-else 与 switch
钩子 先看一个任务:给成绩定等级,90 以上优秀,80-89 良好,60-79 及格,60 以下不及格。 用 if-else 写,四层判断,没毛病。但现在需求变了——再判断"是否全班前 10"、"是否单科状元",if-else 一层层套下去,三天后你自己都不想看第二眼。 这不是你写得烂,是工具选错了
-
运算符与 i++ 的坑
钩子:i = i++ 之后,输出还是 10 接着看今天的代码,别运行,先猜输出: public class Demo { public static void main(String[] args) { int i = 10; i = i++;