zoukankan      html  css  js  c++  java
  • 20182334 2019-2020-1 《数据结构与面向对象程序设计》第二、三周学习总结

    20182334 2019-2020-1 《数据结构与面向对象程序设计》第二、三周学习总结

    教材学习内容总结

    第二章

    在整个第二章的学习中,于上学期学的C语言大相径庭,差别不大,所以用C语言的逻辑来理解Java,同样也可以理解的通,这一章来说,相对容易。

    • 学习了Java简单的输入输出、自增自减、数据转换等基本内容。
    • 接触关于 类 这一定义并上机实践进行运用,例如Scanner。
    • 通过学习数据转换,明白所谓加宽转换是最安全的,通常不会丢失任何信息,所谓缩窄转换可能既丢失数量级也丢失精度。

    第三章

    在整个第三章的学习过程中,难度慢慢的上来了,但还是同C语言的逻辑。本章开始涉及到类的很多方面,例如String、Math、NumberFormat、DecimalFormat等,每种类有其自身的特点,无论哪种类都能感觉到Java的神奇,无论哪种都有各自的作用。

    • 学习创建类和对象,例如很重要的String类,在类中的各种命令,例如大小写的更换,字符串的连接,取规定区间内的字符等等。
    • 了解import声明,使用完全限定的引用。
    • 学习Random类,如何构造随机数,学习在不同的区间内构造类型不同的随机数。
    • 认识Math类,Math类的所有方法都是静态的,在用到数学公式或者数学方法时,需要Math.* 来继续编程。
    • 格式化输出:有两种格式化输出,一种是NumberFormat类,一种是DecimalFormat类,前者可以利用一些命令将数字转化为百分比或者转化为美元表示,具体问题具体分析。后者是保留三位小数(0.###),通过DecimalFormat类格式化后可以将多余的小数省去,更加简洁明了。

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

    • 问题1:不明白为什么输出的时候必须要scan.nextInt或者scan.nextDouble 。
    • 问题1解决方案:上网搜索查到scan仅仅是个标签,在我理解来说scan是调用的意思,因为每次用到类时,总会在前面定义个

    Scanner scan = new Scanner(System.in)


    之后每次输出会用到scan,这个scan就是从这里调出来,然后发挥作用。

    • 问题2:不明白nextInt或者nextDouble 后面的单词首字母为啥会大写。
    • 问题2解决方案:同样查阅资料和浏览其他人的博客,得到的回答是:为了区分next和int或者double,有利于阅读。
    • 问题3:不知道在String类时如何输入字符串。
    • 问题3解决方案:询问结对伙伴,其解决办法是:scan.nextLine ,这里出现了新的单词,也被赋予了新的意义,nextLine是输入String类时必备的,也算是规定。
    • 问题4:在random类里,前面的定义是:

    Random aaa = new Random();


    在生成随机数所需要的代码是:


    num = aaa.nextInt();


    这里有两种方式,一种是在括号里写数字,一种是在括号外乘数字,分不清两者有什么区别。

    • 问题4解决方案:在看 此(https://www.cnblogs.com/xiehang/p/9822060.html
      ) 的博客后,明白一种是用math类的随机数,一种是直接的随机数。

    • 问题5:在使用格式化时,DecimalFormat类为什么必须是(0.###)?

    • 问题5解决方案:在自己上机实验后发现,###只是表示保留三位,当我只输入一个#时,发现结果只保留一位小数了,瞬间解决了自己的问题。

    • 问题6:在String类这块,concat是用来连接字符串的,但我不明白concat是否只能像书上写的那样连接必须打出来的字符串,不知道能不能连接一个定义出来的字符串,通过变量连接起来。

    • 问题6解决方案:在参考了结对伙伴的代码后,我发现自己的问题出在了char这里,然后立刻改正:


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

    • 问题1:在class后面的文件名那里,仍然会存在P3.2类似的点

    • 问题1解决方案:后来多次编译不成,仔细翻课本,发现是文件名的问题,不能用.,立马纠正

    • 问题2:在需要用Scanner输入时,常常忘记用import声明

    • 问题2解决方案:多次编译不过,反复检查,发现import没有加,立刻加上,

    代码托管

    上周考试错题总结

    1. 错题1: Which properties are true of String objects?
      • A .Their lengths never change
      • B .The shortest string has zero length
      • C .Individual characters within a String may be changed using the replace method
      • D .The index of the first character in a string is one
      • E .Only A and B are true
    • 原因:有一部分原因是因为自己英语太差,看不懂题,从题上来说,一旦创建了字符串,字符串的长度是不会变的,最短的字符串是没有字符,所以长度为0,所以答案选E。
    1. 错题2:The names of the wrapper classes are just the names of the primitive data types, but with an initial capital letter.
    • 原因:对于大多数包装器类都是正确的,但是对于int (Integer)和char (Character)则是错误的。
    1. 错题3:All the methods in the Math class are declared to be static.
    • 原因:所有通过数学方法的都是静态。
    1. 错题4:These two ways of setting up a String yield identical results:

    a) String string = new String("123.45");

    b) String string = "" + 123.45;

    • 原因:当用于将字符串与数字组合时,Java理解+运算符,这意味着应该将数字转换为数字字符串,然后进行连接。所以是正确的。
    1. 错题5:Consider the following enumeration

    enum Speed { FAST, MEDIUM, SLOW };
    A .The ordinal value of MEDIUM is 2
    B .The ordinal value of SLOW is 1
    C .The name of the Speed enumeration whose ordinal value is zero is FAST
    D .The name of the Speed enumeration whose ordinal value is one is SLOW
    E .None of the above

    • 原因:枚举的序数值从0开始,按从左到右升序排列。所以,Speed.FAST。序数()是零,速度,中等。序数()是1,并且是Speed.SLOW。序数()是2。
    1. 错题6:An API is
      A .an Abstract Programming Interface
      B .an Application Programmer's Interface
      C .an Application Programming Interface
      D .an Abstract Programmer's Interface
      E .an Absolute Programming Interface
    • 原因:Application Programming Interface
    1. 错题7:Of the following types, which one cannot store a numeric value? (在下列数据类型中,哪一个不能存储一个数值型数据?)
      A .int
      B .byte
      C .float
      D .char
      E .all of these can store numeric values(以上所有类型都可以存储数值型数据)
    • 原因:int和byte用于存储整数,float用于存储实数或浮点值(带小数点的值)。char存储单个字符,包括字母、标点符号和数字。然而,存储数字“5”不同于存储数字5。
    1. 错题8:Given the following assignment statement, which of the following answers is true regarding the order that the operators will be applied based on operator precedence?

    a = (b + c) * d / e - f; (下面给定的赋值语句中,基于运算符优先级,对于将被执行操作的顺序,哪一个答案是正确的?)
    A ., /, +, -
    B .
    , +, /, -
    C .+, *, /, -
    D .+, /, *, -
    E .+, -, *, /

    • 原因:优先顺序是()中的任何运算符,然后是和/(从左到右),然后是+和-(从左到右)。因此,+是第一个,因为它在()中,然后是,然后是/因为在/的左边,最后是-。和/具有相同的优先级,但从左到右求值。+和-也是一样的。

    结对及互评

    结对照片 :


    点评过的同学博客和代码

    • 本周结对学习情况
      • 20182321

      • 结对照片

      • 结对学习内容

        • String类的连接、在区间内取数字或字符。
        • 讨论课后题及老师布置的程序,同时讨论本周的实验内容。
        • 互相提问,排查对方不知道的知识盲区,看对方代码的错误
    • 上周博客互评情况

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

    这一周以来,收获颇多,能深刻体会到敲代码的不易,不论是书上的例题,还是课后的练习题,又或是程序练习,每当我敲完一个程序,都能感到进步了一点点。举个例子,书上关于String类和格式化方面的代码,我敲完之后,亲自检查了一遍,再观察运行结果,通过C语言的逻辑,慢慢发现原来自己的盲区开始越来越少,所以还是得多上机练习。又过了一周,这一周自己很忙碌,上一周给自己规划的任务,没有全部执行,很多东西还是一拖再拖,代码也是能敲多少就敲多少,并不很上心,下一周一定先把Java放到第一步,再做别的事。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 212/212 2/2 17/17
    第二周 132/344 2/4 17/34
    第三周 689/1033 1/5 23/67
    • 计划学习时间:20小时

    • 实际学习时间:23小时

    • 改进情况:比上周要多学了6个小时,敲代码慢慢顺手起来了,也感到慢慢开始难了。

    参考资料

  • 相关阅读:
    深入理解Auto Layout 第一弹
    Android UI测量、布局、绘制过程探究
    Android Measure 体系简单总结
    [译]Android view 测量布局和绘制的流程
    UI布局只关乎三件事情:尺寸、位置、组织
    ios 布局 素材 待整理
    NSAllowsArbitraryLoadsInWebContent NSAllowsArbitraryLoads
    UIStackView
    laravel 自定义常量方法
    laravel 增加不存在数据库的字段
  • 原文地址:https://www.cnblogs.com/cistineup/p/11569520.html
Copyright © 2011-2022 走看看