郝博雅

导航

20155205 2016-2017-2 《Java程序设计》第3周学习总结

20155205 2016-2017-2 《Java程序设计》第3周学习总结

教材学习内容总结

第四章

  • 定义类的两种方法(new和this的用法)


    只要有一个类定义,编译程序就会产生一个.class文档。上例中,实际上会产生Field.class和Clothes.class两个文档。
  • 如果要求精确度,那就要小心使用浮点数,而且别用==直接比较浮点数运算结果。别用==或!=来比较两个对象实质内容值是否相同(因为==与!=是比较对象参考)。
  • Java中有两大类型系统,即基本类型与类类型。
  • =用来把某个名牌绑到某个对象,==用来比较这两个名牌是否绑到同一对象。这里和c语言不同,==不能直接用来比较两个数值是否相等。
  • p93页关于null的错误情况,会出现 NullPointerException。 null 代表一个特殊对象,任何类声明的参考名称都可以参考至null,表示该名称没有参考至任何对象实体。
  • 学习到了增强式for循环语法:
for(int score :scores) {
            System.out.printf("学生分数:%d %n", scores);
        }
for(int[] row :cords)
        {
            for(int value :row)
            {
                System.out.printf("%2d",value);
            }
}
  • 以""包括的字符串,只要内容相同,无论在程序代码中出现几次,JVM都只会建立一个String实例,并在字符串池中维护。p120第7题。

第五章

  • 如果想存取对象的数据成员,可以通过“.”运算符加上数据成员名称。
  • 声明为private的成员表示为类私有,用户无法在其他类的程序代码中直接存取。而声明为public的成员则与之相反。
  • 在没有撰写任何构造函数时,可以以无变量方式调用构造函数:
Some some = new Some()
  • this()调用只能出现在构造函数的第一行。

教材学习中的问题和解决过程

  • 问题1:p119第4题为什么结果是执行时显示20?
  • 问题1解决方案:根据p99中图4.5,可以看到这里和c语言不同,一维数组作为对象同时被score1和score2参考,因此更改了 score2的数组索引对象,score1索引对象的值也就变了。
  • 问题2:关于建立了几个实例的问题。p120,6、7、8题。
  • 问题2解决方案:只要数组的索引都参考至null,那么就只有0个实例;以""包括的字符串,只要内容相同,无论在程序代码中出现几次,JVM都只会建立一个String实例,并在字符串池中维护。
  • 问题3:p113中"Ja"+"va"就是"Java",为什么不算是产生了新的实例?根据p111所说,使用+会产生新的String实例。
  • 问题3解决方案:查找资料后,觉得这个说法可以让我理解。

代码调试中的问题和解决过程

  • 问题1:在iterm中执行程序最后会出现%,如图


但在IDEA中不会出现这样的情况,如图

  • 问题1解决方案:在输出后面加了%n,便出现下图中的情况,暂时还不知道为什么会出现%。
  • 问题2:在p136的调用版本中,想调用Integer却出现下图情况。

  • 问题2解决方案:原来是自己在写程序时将第二个Method错写成Metod!这种错误虽然小,但是能造成致命的一击,以后决不能再犯此类错误!

代码托管

  • 代码提交过程截图:
    • 运行 git log --pretty=format:"%h - %an, %cd : %s" 并截图


  • 代码量截图:
    • 运行 find src -name "*.java" | xargs cat | grep -v ^$ | wc -l 并截图

上周考试错题总结

  • Linux Bash中,查找当前目录中前天创建的Java文件的命令是
(find . –name *.java -ctime 2)

总结 :-name *.java是查找Java文件的命令,注意题中查找目录为当前目录,因此是“.”。

  • ~0b1011的十进制值是(-12)。

总结 :计算机存放数据时是00001011,取反后是11110100,因为计算机存储的是补码,因此找到从右向左第一个1,之后除了符号为挨个儿取反,得到10001100,即-12。

其他(感悟、思考等,可选)

这一周的代码量提高了不少,但同时也感觉很多东西之前只是浅层次的了解,要达到真正的理解需要自己花费很多功夫。同时我觉得看完一章的内容后做一下课后练习题对自己的提高有很大帮助,感觉能一下子找到重点。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 16/16 1/1 12/12
第二周 124/140 1/2 19/31
第三周 641/781 1/3 26/57 代码量的增加

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

参考资料

posted on 2017-03-12 15:12  郝博雅  阅读(208)  评论(2编辑  收藏  举报