作为一名有十年Java开发经验的工程师,我经常被问到"Java入门应该怎么学"。今天我想分享一个典型的Java学习第二天的知识框架,这是根据我带过的上百名新人总结出的高效学习路径。这个阶段的核心目标是建立对Java基础语法的系统认知,为后续面向对象编程打下坚实基础。
Java是强类型语言,变量声明时必须指定数据类型。我建议新手从这8种基本类型开始:
java复制// 整数类型
byte fileSize = 120; // 1字节,-128~127
short population = 30000; // 2字节
int age = 25; // 4字节(最常用)
long distance = 15000000000L; // 8字节(注意L后缀)
// 浮点类型
float price = 9.99f; // 4字节(注意f后缀)
double pi = 3.1415926; // 8字节(默认浮点类型)
// 字符和布尔
char grade = 'A'; // 2字节
boolean isPass = true; // 1位
关键经验:开发中遇到数值计算时,优先考虑int和double。byte/short虽然节省空间,但现代JVM优化后性能差异不大,可读性更重要。
自动类型转换(隐式)和强制转换(显式)是新手最容易出错的地方:
java复制// 自动转换(小->大)
int a = 100;
double b = a; // 正确
// 强制转换(大->小)
double c = 100.5;
int d = (int)c; // 得到100(截断非四舍五入)
常见问题:
java复制int x = 10 / 4; // 得2(整数除法)
double y = 10 / 4.0; // 得2.5(至少一个操作数是浮点)
// 取模运算
int mod1 = 10 % 3; // 1
int mod2 = -10 % 3; // -1(符号与被除数一致)
java复制int i = 1;
int j = i++; // j=1, i=2(先用后加)
int k = ++i; // k=3, i=3(先加后用)
实际开发建议:避免在复杂表达式中嵌套自增运算,容易引发难以察觉的bug。
java复制// 常规写法
if(score >= 90) {
grade = 'A';
} else if(score >= 80) {
grade = 'B';
} else {
grade = 'C';
}
// 使用三元运算符简化
grade = score >= 90 ? 'A' : score >= 80 ? 'B' : 'C';
Java 12+支持箭头表达式和返回值:
java复制String dayType = switch(day) {
case 1, 2, 3, 4, 5 -> "工作日";
case 6, 7 -> "周末";
default -> "无效日期";
};
java复制int[] arr = new int[3]; // 在堆中分配连续内存
arr[0] = 10; // 通过索引访问
内存结构:
code复制栈内存 堆内存
arr -> [10, 0, 0]
java复制import java.util.Arrays;
int[] nums = {3,1,4};
Arrays.sort(nums); // 排序
int index = Arrays.binarySearch(nums, 4); // 二分查找
int[] copy = Arrays.copyOf(nums, 5); // 扩容复制
我推荐的学习路线:
java复制String str = null;
// 错误写法
int length = str.length(); // 抛出NullPointerException
// 正确写法
if(str != null) {
length = str.length();
}
java复制int[] arr = new int[3];
// 错误写法
int val = arr[3]; // ArrayIndexOutOfBoundsException
// 正确写法
if(index >= 0 && index < arr.length) {
val = arr[index];
}
完成以下编程题:
这些练习涵盖了第二天所有核心知识点。我在带新人时发现,能独立完成这些练习的学员,后续学习面向对象时会顺利很多。记住,Java基础就像建房子的地基,看似简单却至关重要。