Java 入门两节课学习体会:从基础语法到运算符实战复盘
Java入门两节课学习体会:从基础语法到运算符实战复盘
这段时间上完了Java入门的前两节课,彻底告别了对编程一无所知的状态。从最基础的HelloWorld程序起步,一步步学习了变量定义、数据类型转换、代码块作用域、自增自减运算、逻辑运算、复合赋值、位运算与移位运算等核心知识点。
起初我以为Java基础语法简单、无需深究,但跟着老师敲完所有课堂案例、调试完每一段代码后,才发现入门语法里藏着超多易错点和细节坑。很多看似简单的代码,背后都有固定的运行规则,一旦概念模糊,就会出现编译报错、运行结果失真等问题。
本篇博客是我前两节课的完整学习复盘,整合了课堂全部实战案例,以初学者视角记录知识点、踩坑经历、运算规律和学习感悟,方便后续复习巩固,也给刚入门Java的小伙伴提供参考。
一、初识Java:最简单的代码,最核心的程序骨架
第一节课我们从Java入门经典的 HelloWorld 程序开始,这是我写的第一段完整Java代码。虽然只有短短几行,却让我记住了Java程序的固定结构:类 + main入口方法 + 输出语句。
同时我也get到了Java的基础编码规范:严格区分大小写、所有符号必须是英文半角、语句末尾必须加分号、public类名必须和文件名一致。最开始我因为中英文符号混用、单词拼写错误(word写成world、args写成agrs)频频报错,也慢慢养成了严谨编码的习惯。
二、数据类型强制转换:弄懂大小转换与数值溢出
这是我入门后遇到的第一个重难点。Java的数据类型有严格的优先级和取值范围,int大范围类型转byte小范围类型,必须手动强制转换,这是编译器的硬性规则。
通过两个对比案例,我彻底理解了强制转换的两种情况:
1. 数值在范围内:无精度丢失
当int数值在byte的取值范围(-128~127)内时,强制转换不会出错,数值完全保留。
public class Example01 {
public static void main(String[] args){
int num = 4;
byte b = (byte) num;
System.out.println(b);
}
}
运行结果:4,结果正常,无任何偏差。
2. 数值超出范围:出现数值溢出(重点踩坑)
这是我本节课最大的收获!原本以为强制转换只是简单截取数字,实际底层是二进制高位截断,只保留低8位,会直接导致数值失真、数据丢失。
public class Example02 {
public static void main(String[] args){
byte a;
int b = 298;
a=(byte) b;
System.out.println("b="+b);
System.out.println("a="+a);
}
}
运行结果:
b=298、a=42
明明赋值298,最终输出42,彻底打破了我的固有认知。也让我记住:开发中严禁随意将大数值强制转为小类型,极易出现隐藏BUG。
三、变量作用域:变量不是全局通用,出块即失效
之前我误以为定义的变量可以在代码任意位置使用,通过Example04案例,我彻底搞懂了Java局部变量的作用域规则,这也是新手高频易错点。
public class Example04 {
public static void main(String[] args){
int x =12;
{
int y = 96;
System.out.println("x is "+x);
System.out.println("y is "+y);
}
int y =x;
System.out.println("x is "+x);
}
}
学习总结:
- 变量仅在当前大括号{}代码块内有效,出块立即销毁;
- 内层代码块可以访问外层变量,外层无法访问内层变量;
- 不同作用域可以定义同名变量,相互独立、互不冲突。
这个知识点看似简单,却是后续循环、判断代码不报错的基础,非常关键。
四、自增运算与逻辑短路:吃透运算底层规则
第二节课的运算符知识点是重中之重,也是考试和面试的高频考点。尤其是自增自减、短路逻辑运算,语法简单但陷阱极多。
1. 前置、后置自增自减
核心口诀我已经牢牢记住:后置先运算后自增,前置先自增后运算,自减规则完全一致。
简单案例快速理解核心逻辑:
public class Example05 {
public static void main(String[] args){
int a = 1;
int b = 2;
int x = a + b++;
System.out.println("b = "+b);
System.out.println("x = "+x);
}
}
运行结果:b=3,x=3。
拆解:b++先取出原值2参与运算,运算结束后b再自增1,完美印证了后置自增的规则。
而进阶案例IncDecTest,整合了前置、后置自增自减的组合运算,让我彻底熟练了复杂场景下的运算逻辑,不再混淆。
2. 短路逻辑运算符&&的特性
这是本节课最惊艳的知识点,我第一次知道Java运算会有“短路”机制,能优化代码执行效率。
public class Example06 {
public static void main (String[] args){
int x = 0,y = 0,z = 0;
boolean a,b;
a = x > 0 && y++ > 1;
System.out.println(a);
System.out.println("y = "+y);
b = x > 0 && z++ > 1;
System.out.println(b);
System.out.println("z = "+z);
}
}
运行结果y和z始终为0,原因就是:&&短路与,前置条件为false时,后续代码直接不执行。同时我也区分开了 &非短路与 和 &&短路与 的区别,开发中优先使用短路与,效率更高。
五、全套运算符实战:夯实Java运算基础
两节课的最后,我们集中学习了Java所有高频运算符,包含算术运算、浮点运算、布尔逻辑运算、复合赋值、位运算、移位运算,通过多组实战案例,我彻底打通了运算符的知识体系。
1. 整型与浮点算术运算
通过BasicMathOp1案例,我分清了整型和浮点运算的核心区别:int除法直接舍去小数,double浮点运算保留精度,解决了我之前运算结果偏差的疑惑。
public class BasicMathOp1 {
public static void main (String[] args){
System.out.println("Integer Arithmetic is:");
int a = 1 + 3;
int b = a * 4;
int c = b / 5;
int d = c - a;
int e = -d;
double da = 1 + 1;
double db = da * 3;
double dc = db / 4;
double dd = dc - a;
double de = -dd;
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
System.out.println("d = " + d);
System.out.println("e = " + e);
System.out.println("Floating Point Arithmetic is : ");
System.out.println("da = " + da);
System.out.println("db = " + db);
System.out.println("dc = " + dc);
System.out.println("dd = " + dd);
System.out.println("de = " + de);
}
}
2. 完整布尔逻辑运算
BoolLogicTest案例整合了或、与、异或、非、组合逻辑运算,让我熟记规则:一真或为真、一假与为假、不同异或为真、取反真假互换。
public class BoolLogicTest {
public static void main(String[] args){
boolean la = true;
boolean lb = false;
boolean lc = la | lb;
boolean ld = la & lb;
boolean le = la ^ lb;
boolean lf = (!la & lb) | (la & !lb);
boolean lg = !la;
System.out.println(" la = "+la);
System.out.println(" lb = "+lb);
System.out.println(" la | lb = "+lc);
System.out.println(" la & lb = "+ld);
System.out.println(" la ^ lb = "+le);
System.out.println(" (!la & lb) | (la & !lb) = "+lf);
System.out.println(" !la = "+lg);
}
}
3. 进阶自增自减综合案例
public class IncDecTest {
public static void main(String[] args){
int a1 =1949;
int b1 =2022;
int c1;
int d1;
int e1;
int e2;
c1 = ++b1;
d1 = a1++;
c1++;
e1 = b1--;
e2 = --b1;
System.out.println("a1 = "+a1);
System.out.println("b1 = "+b1);
System.out.println("c1 = "+c1);
System.out.println("d1 = "+d1);
System.out.println("e1 = "+e1);
System.out.println("e2 = "+e2);
}
}
4. 复合赋值运算案例
public class QpEqualsTest {
public static void main(String[] args){
int a1 = 2;
int b1 = 4;
int c1 = 5;
a1 += 3;
b1 *= 6;
c1 += a1 * b1;
c1 %= 7;
System.out.println("a1 = "+a1);
System.out.println("b1 = "+b1);
System.out.println("c1 = "+c1);
}
}
5. 位运算与移位运算综合案例
public class TestA {
public static void main (String[] args){
int a = 121;
int b = 2;
int c = 0;
c = a + b;
System.out.println("c = a + b= "+c);
c += a;
System.out.println("c += a = "+c);
c -= a;
System.out.println("c -= a = "+c);
a = 500;
c = 3;
c %= a;
System.out.println("c %= a = "+c);
c &= a;
c |= a;
System.out.println("c |= a = "+c);
c ^= a;
System.out.println("c ^= a = "+c);
c >>= 1;
System.out.println("c >>= 1 ="+c);
c <<= 1;
System.out.println("c <<= 1 ="+c);
}
}
我了解到位运算底层效率极高,也是Java底层开发的核心运算方式,同时掌握了左移乘2、右移除2的高效数值计算技巧。
六、两节课学习总结与心得体会
从零基础入门到现在吃透基础语法与运算符,短短两节课的学习,让我对Java编程有了全新的认知,也总结出了属于自己的新手学习感悟:
1. Java基础无小事,细节决定成败:大小写、中英文符号、分号、变量作用域,每一个小细节出错都会导致程序报错,编程必须足够严谨细心。
2. 切忌死记硬背,实操才是王道:所有语法规则、运算规律,单纯看书听课看不懂,只有亲手敲代码、看运行结果、分析报错原因,才能真正理解底层逻辑。
3. 区分相似知识点,规避隐形坑点:前置/后置自增、短路/非短路运算、整型/浮点运算、强制类型转换溢出,这些相似知识点极易混淆,必须通过案例对比记忆。
4. 基础是进阶的基石:数据类型、变量、运算符是Java所有代码的基础,后续的分支、循环、数组、方法都是在这些知识点上延伸而来,学好基础才能走得更远。
七、后续学习规划
接下来我会继续深耕Java基础,反复复盘本次所有案例,熟练掌握所有运算符和语法规则,彻底杜绝新手基础报错。同时提前预习分支语句、循环结构,循序渐进、稳步进阶,一步步从编程小白成长为能够独立编写代码的开发者。

浙公网安备 33010602011771号