20253900 李昕韦实验感受

实验感受

这两周的 Java 程序设计课,老师分别讲解了 Java 语法基础与方法两部分内容。和预想中纯记语法的课不同,老师总用历史故事和日常例子引入知识点,比如用愚公移山拆解编程的三大结构,用李冰积薪烧山讲方法的本质,理解起来比死背概念轻松很多。

第一讲语法基础,核心其实是建立编程思维,而不是背关键字。老师说编程的根本就是顺序、分支、循环,哪怕愚公移山这么大的工程,拆解开也就是 “子子孙孙无穷匮” 的循环,加上 “山平则止” 的结束条件。课上梳理了 Java 程序从编写到运行的五个阶段:编辑、编译、加载、校验、执行,以前只知道写完代码点运行,这回才搞懂字节码、类加载器这些中间环节。基础语法里,标识符命名规范、八种基本数据类型、运算符优先级都是入门内容,但真正踩过坑才印象深刻。比如变量作用域的 “同名屏蔽”,我一开始在类里定义了静态变量 value=1,main 方法里又定义了 int value=2,想当然觉得会输出 1,运行后才知道方法内的局部变量会屏蔽成员变量。浮点数精度问题最出乎我意料,照着课件跑测试代码,0.05 加 0.01 居然输出 0.060000000000000005,后来用 BigDecimal 类且用字符串作为参数构造,才算出精确结果,也明白了为什么涉及金额的计算都不能直接用 double。输入部分学了 JOptionPane 弹框和 Scanner 控制台两种,平时写练习题用 Scanner 更顺手。

第二讲方法,开篇那句 “是懒人造就了方法” 印象特别深。以前写代码总喜欢全堆在 main 函数里,几百行代码找个功能要翻半天,现在把重复逻辑抽成独立方法,代码一下子清晰了很多。课上讲了方法的定义格式、静态方法的调用方式,还有方法重载 —— 只要方法名相同、参数列表不同就构成重载,和返回值类型没关系。可变参数是第一次接触,写法灵活,本质其实是数组。递归是这章的难点,我写阶乘递归的时候,一开始漏写了 n==1 的终止条件,运行直接报栈溢出错误,加上终止条件后才跑通: public static int factorial (int n) { if (n == 1) return 1; return n * factorial (n-1); } 但 n 到 13 的时候 int 就溢出了,换成 BigInteger 类才能算出 50 的阶乘。对比递推的循环写法,递归代码更简洁,但数据量大了容易出问题。另外还试了随机数生成,用 Math.random () 模拟掷骰子,跑 6000 次的话,六个面的次数基本都在一千左右波动,和课件里的结果差不多。

这两章学下来最大的感受是,编程最重要的不是敲代码的速度,是先把问题拆明白,把重复的逻辑抽象成方法。接下来我打算把课上所有动手动脑的题目都整理一遍,攒成自己的代码片段,以后写程序的时候能直接复用。

posted @ 2026-10-08 13:11  dustcell  阅读(6)  评论(0)    收藏  举报