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

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

    教材学习内容总结

    第四章

    • BigDecimal提供有plus()、substract()、multiply()、divide()进行加、减、乘、除等运算。

    • “=”与“==”在两大类型系统下的区别:

    基本类型:=是将值复制给变量,==是比较两个变量储存的值是否相同;

    类类型:=用在指定参考名称参考某个对象,==比较两个参考名是否参考同一对象。(!=是比较两个名称是否没参考同一对象)

    • 运算时的自动装箱与拆箱:
         
          eg.System.out.println(i+10);     //10先装箱,对i先拆箱,在进行加法运算
             System.out.println(i++);      //先对i拆箱再递增
    
    
    • null:任何类声明的参考名称都可以参考至null,这个名称没有参考至任何对象实体

    • 数组复制System.arraycopy() 的五个参数分别是来源数组、来源起始索引、目的数组、目的起始索引、复制长度。

    • 比较对象实质内容是否相同使用equals()

    第五章

    • 构造函数:构造函数是与类名称声明返回类型的方法。

    • 使用new创建Some对象时,a与text分别先初始为0与null。

    • static

    声明为static的变量称为静态变量或类变量。可以直接通过类名引用静态变量,也可以通过实例名来引用静态变量。

    声明为static的方法称为静态方法或类方法。静态方法可以直接调用静态方法,访问静态变量,但是不能直接访问实例变量和实例方法。静态方法中不能使用this关键字,因为静态方法不属于任何一个实例。静态方法不能被子类的静态方法覆盖。

    • 方法重载就是方法名称重复,加载参数不同。

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

    • 问题一:P102 IntegerArray.java得的结果是

    虽然与书上答案一样,但我并不理解为什么前三个答案是 null。

    在重读代码后, 发现第一次循环输出并没有输入值

    
    for(Integer score : scores) {
    System.out.println(score);
    }
    
    

    所以给出的答案参考至null,而接着的循环有输入数值,第二次循环输出的值就是代码中给出的值。

    • 问题二:
      没有理解下面代码中(int score :scores )的作用及意义
    for(int score : scores) {
        System.out.print("学生分数:%d %n",score);
    }
    
    • P96中说明这个程序取得scores数组第一个元素,指定给score变量后执行循环体,接着取第二个元素,指定给score变量后执行循环体,以此类推。。。

    • 问题三:在学习数组对象这一块时,发现java的数组与c语言的有不同,例如,java中的的多维数组基本上都是由一维数组组成。

    为了了解两者的不同,我查阅了资料
    Java中数组与c语言中数组的比较

    两者在四个方面有不同:①数组的定义②数组的初始化③数组操作的不同④数组作参数的不同

    • 问题四:public、private的区别

    • 解决:

    
    public:
    
    是一个公开类。具有最大的访问权限,可以访问任何一个在classpath下的类、接口、异常等。
    
    
    private:
    
    访问权限仅限于类的内部,表示为私有,用户无法在其他类的程序代码中直接存取。
    
    
    • 问题五:第三章学习了使用import的偷懒技术,第五章中还介绍了import static,两者都可以偷懒,但不能太过偷懒,要注意名称是否会冲突。

    • 解决: import和import static的区别

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

    • 问题一:P98 Score2

    我的代码结果如下:

    • 解决方案:下图中第一个输出时,我将"%2d"误输为"2%d",因此结果这个答案。

    • 问题二:P109 Average.java如下图所示,结果是NaN

    • 解决方案:
      先查询了NaN是什么

    NaN是Not a Number的缩写。用于处理计算中出现的错误情况.在IEEE浮点数算术标准(IEEE 754)中定义,表示一些特殊数值(无穷与非数值(NaN)),为许多CPU与浮点运算器所采用

    然后,加入存储数字的代码,运行代码。

    代码托管

    • 代码提交过程截图:

    • 代码量截图:

    **注:图中的总代码量只有第二、三周的代码量

    上周考试错题总结

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

    ①查找创建的java文件——(find xxx.java).

    ②与时间相关的命令参数:

    命令 含义
    -atime 最后访问时间
    -ctime 创建时间
    -mtime 最后修改时间
    • 2.判断:教材P51,第8 题 ,执行命令 java –cp classes cc.openhome.Main 和cd classes; java cc.openhome.Main;cd .. 等价。(OK)

    • 6.填空:~0b1011的十进制值是(-12)

    计算机的一个byte为8位,1011存放为00001011,取反后得11110100,因为最高位为1,所以该数为负数,因此该数各位取反,末位加一后得10001100,即-12.

    • 13.填空 :0x10%9 的结果是( 7 )

    • 14.填空 :0x10&9 的结果是(0)

    将十六进制的10转为二进制:0001_0000。将9转为:0000_0001。两者经过‘&’的运算得到的结果为0000_0000,即0.

    • 15.填空:Java中方法中的变量叫(局部变量)

    其他

    这一周学习了第四、五章内容,与上周相比,学习的难度,需要敲打的代码都大大提高了。在学习的过程中,发现自己在在打代码时,打完就会忘,记忆不牢固,同时也反映出了,我在学习java上还需要更多的练习,因为会有一个遗忘的过程和重复练习的过程,所以我认为接下来的学习过程中,只能选择多练。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 15篇 400小时
    第一周 9/9 1/1 20/20
    第二周 162/ 171 1/2 25/45 学习java的基础语法
    第三周 380/ 551 1/3 25/70 学习java对象及封装
    • 计划学习时间:20小时

    • 实际学习时间:25小时

    • 改进情况:这周学习的是对象及封装,由于是两章的内容,并且是新接触的知识,所以理解较吃力,花的时间也较多。

    参考资料

  • 相关阅读:
    Ubuntu18.04配置静态ip遇到的报错
    devilbox(二):连接数据库
    DBeaver
    prometheus-operator 详细总结(helm一键安装)
    如何创建私有 CA 并签发证书
    kong如何记录(nginx代理后)真实ip
    节点亲和性添加
    alertmanager详解
    subprocess.call和subprocess.Popen
    dockerfile-ENTRYPOINT 和CMD配合,以及他们的区别
  • 原文地址:https://www.cnblogs.com/fyhtvxq/p/6538406.html
Copyright © 2011-2022 走看看