zoukankan      html  css  js  c++  java
  • 20155217 2016-2017-2 《Java程序设计》第3周学习总结

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

    教材学习内容总结

    第四章
    • 要产生对象必须先定义类,类定义时使用class关键词,建立实例要使用new关键词。

    • 参数名称与对象数据成员同名时,可以在数据成员前使用this区别。

    • java.util.Scanner中的nextInt()、next()、nextLine()。

    • java.math.BigDecimal类来得到想要的精确度。

    • =是用在指定参考名称参考某个对象,而==是用在比较两个参考名称是否参考同一对象。

    • 除了使用new创建基本类型打包器之外,还有了自动装箱功能。自动装箱和自动拆箱的功能实际上是编译程序蜜糖。

    • 数组在Java中就是对象,索引从0开始。有了增强式for循环语法,可用于循环取得数组元素。

    • 无论System.arraaycopy()还是Array.copyOf(),用在类类型声明的数组,都执行浅层复制。

    • 字符串本质是打包字符数组的对象,是java.lang.String类的实例。

    • 以""包括的字符串,只要内容相同,无论在程序代码中出现几次,JVM都只会建立一个String实例,并在字符串池中维护。想要比较字符串实际内容是否相同,要使用equals()。

    • 使用+连接字符串会产生新的String实例。

    • 部分代码运行截图

    第五章
    • 方法封装了操作对象的流程,封装的主要目的就是隐藏对象细节。封装取值方法的名称需要以get开头,之后接上首字母大写的单词。

    • 如果想在其他包的类程序代码中存取某包的类或对象成员,则该类或对象成员必须是公开成员,在java中要使用public声明。

    • 默认构造函数和重载构造函数。

    • 除了被声明为static的地方外,this关键词可以出现在类中的任何地方。this()代表调用了另一个构造函数。而被声明static的成员属于类。static方法中不能用非static数据或方法成员。

    • 对象数据成员被声明final,但没有明确使用=指定值,表示延迟对象成员值得指定。在构造函数执行流程中,一定要有对数据成员指定的动作。

    • 使用不定长度自变量时,方法上声明的不定长度参数必须是参数列的最后一个,使用两个以上的不定长度自变量也是不合法的。

    • 部分代码运行截图

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

    • 问题1:

      System.arraaycopy()和Array.copyOf()用在类类型声明的数组,都执行浅层复制的话,如何执行深层复制呢?

    • 问题1解决方案:

      如图:

    • 将c1每个索引参考对象复制,并分别指定给c2每个索引。而并不是像浅层复制那样仅仅只将c1参考的对象也给c2每个索引来参考。

    • 问题2:

      使用+连接字符串怎样达到可以更改字符串内容的?

    • 问题2解决方案:

      使用+连接字符串会产生新的String实例,而绝不是仅仅在参考字符串候附加内容。

      具体为先建立java.lang.StringBuilder对象,使用其append()方法来进行+左右两边字符串附加,最后再转换为toString()返回。

    • 问题3:

      如果局部生命了final关键字,表示设值后不能再变动,如final int x=10;但为什么final int x中x的默认初始值为0,其他地方仍能对x设值?

    • 问题3解决方案:

      对象数据成员被声明final,但没有明确使用=指定值,表示延迟对象成员值得指定。在构造函数执行流程中,一定要有对数据成员指定的动作,否则编译错误。

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

    • 问题1:
      按照课本敲如图所示的代码,运行之后发现和课本的执行结果细节处不相同。

    • 问题1解决方案:

    • 在Scanner scanner=new Scanner(System.in)之前添加了一个System.out.print("Input a number:")。

    • 本次代码使用的是do-while循环,循环条件是while(number!=0),所以像课本中没有出现number=0这种情况是不存在的。

    修改后的程序截图:

    代码托管

    • 代码提交过程截图:

    • 代码量截图:

    上周考试错题总结

    • ~0b1011的十进制数值()

      八位二进制:00001011
      每位取反得:11110100
      取反后补码:10001011+1=10001100
      十进制表示:-12

    • 在linux bash中查找两天前创建的java文件用()命令
      find -ctime 2 -name *.java

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

    这周通过自学第四章和第五章的内容,发现了许多java不同于c的地方,也清楚地感觉到学习困难程度的加深。同时,再一次发现java需要背过的代码又多又难记,如果不勤于练习并有目的地去背诵记忆,会落后得越来越远。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 5/5 1/4 20/20
    第二周 140/145 1/5 18/38
    第三周 330/451 1/6 16/54

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

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

    参考资料

  • 相关阅读:
    Flex布局
    【北京法院网上立案工作办法】
    欢迎注册北京法院电子诉讼平台账号
    授权书范本
    拷贝构造函数与移动构造函数
    力扣刷题计划-字符串-最长公共前缀
    多节点树结构
    WPF的TreeView添加鼠标双击事件MouseDoubleClick执行两次
    力扣刷题计划-动态规划-整数拆分
    Java解决字节流乱码问题
  • 原文地址:https://www.cnblogs.com/yangdi0420/p/6535483.html
Copyright © 2011-2022 走看看