20145301第三周学习总结

20145301第三周学习总结

教材学习内容总结

第四章

4.1 类与对象

  • 对象(Object):存在的具体实体,具有明确的状态和行为
  • 类(Class):具有相同属性和行为的一组对象的集合,用于组合各个对象所共有操作和属性的一种机制
  • 从类看对象:类定义可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象
  • 从对象看类:类的产生,是从少数实例,推广到大量相似实例的抽象化过程(abstraction)
  • 类是对象的设计图,对象是类的实例,生成对象要先定义类20145301第三周学习总结_第1张图片20145301第三周学习总结_第2张图片

4.2 基本类型包装

  • Long、Integer、double、float、boolean等类是所谓打包器,主要目的是提供对象实例作为“壳”,价格基本类型打包在对象中,可以将基本类型答案做对象操作。
  • 自动装箱拆箱可以使程序更简洁,在运算时编译程序会自动拆箱。
  • 如果数值超出类的范围,就会建立新的实例,用'=='做比较易出错,若想比较数值应用equals()。

4.3 数组对象

  • java中的数组和C语言有不同之处。声明数组是在类型关键词后,如'int[] score'。定义的时候不必规定数组长度,指出单个数值时需要在'[]'里标明序号,如果想知道数组长度则需要用length属性。
  • 使用'new'建立数组后每个索引元素会有初始值,可以用'java.util.Arrays'的'fill()'方法更改默认值。
  • 'int[] score2=score1'并不是数组复制,只是把'score1'的参考对象也给'score2'做参考对象。
  • 20145301第三周学习总结_第3张图片

4.4 字符串对象

  • 字符串本质是打包字符数组的对象,是java.lang.String类的实例。
  • 要想比较字符串实际字符内容是否相同,不能使用==,要用equals()。
  • 使用javac指令没有指定-encoding选项时,会使用操作系统默认编码。

第五章

5.1 何谓封装

  • 初始流程 , 构造函数是与类名称同名的方法,不用声明返回类型;构造函数可多个,只需参数类型和个数有所区别,这称为重载构造函数;创建对象时,数据成员就会初始化,如果没有指定初始值,则会使用默认值初始化;如果撰写了对象初始区块,对象建立之后会先执行对象初始区块,接着才调用指定的构造函数。
  • 操作流程 , 在类中定义方法,如果不用返回值,方法名称前可以声明 void ;在java命名习惯中,方法名称首字母是小写,后面单词首字母大写;方法可定义多种,对于类似方法可定义相同名称,只要其参数的个数、类型有所区别;当定义取值的方法时,统一规定命名方式,以get开头,后加首字母大写的单词。
  • 内部数据 , 如果有些数据是类所私有的,在java中可以使用private 关键词定义,当没有提供方法存取 private 成员时,用户就不能进行存取,即封装了类私有数据,让用户无法直接存取,而必须通过所提供的操作方法,经过定义了的流程才有可能存取私有数据;private也可用在方法或构造函数声明上。
  • 封装目的 , 主要是隐藏对象细节,将对象当作黑箱进行操作。

5.2 类语法细节

  • public , 可在类、对象数据成员、方法、构造函数中使用。
  • private:权限修饰,类私有,用户无法在其他类代码中直接读取,而public则可以
  • this , 除了被声明为 static 的地方外,this 关键字可以出现在类的任何地方;
    在构造函数参数与对象数据成员同名时,可用 this 区别;  
    this()代表调用另一个构造函数,至于调用哪个构造函数,则视调用this()时给的自变量类型与个数而定。
  • final , 如果对象数据成员被声明为 final ,但没有明确使用=指定值,那表示延迟对象成员值得指定,在构造函数(每个)执行流程中,一定要有对该数据成员指定值的动作,否则编译错误。
  • static用于修饰成员(成员变量和成员函数),被声明为static的成员,不会让个别对象拥有,而是属于类。在static方法中不能出现this关键字,static方法中不能用非static数据或方法成员。
  • import static语法是为了偷懒,但要注意名称冲突的问题。

问题和解决过程

问题

  • 开源中国代码托管问题,我在Mac版上暂未找到一劳永逸的办法。
  • 其中一个有关import的代码编译不通过,截图如下:20145301第三周学习总结_第4张图片

解决过程

已完成代码托管。 截图如下:

20145301第三周学习总结_第5张图片

其他

实用API介绍,推荐给大家几个:

  • delimiter() 返回此 Scanner 当前正在用于匹配分隔符的 Pattern。
  • hasNext() 判断扫描器中当前扫描位置后是否还存在下一段。(原APIDoc的注释很扯淡)
  • hasNextLine() 如果在此扫描器的输入中存在另一行,则返回 true。
  • next() 查找并返回来自此扫描器的下一个完整标记。
  • nextLine() 此扫描器执行当前行,并返回跳过的输入信息。

    心得体会

          上周试卷的成绩让我十分意外,只得了十分,然而交卷时的我还是比较有把握的...这说明了一个问题。我的认知没有经过检验,有点自信过头了,这周我会吸取校训,做完课后题等要多于同学积极沟通交流,交换经验教训,同时修正自己自学的认知。这样才能真正学有所得,而不是简简单单的只按自己的理解来进行。这次的学习一定要避免这个问题。

学习进度条

目标  代码行数  博客量 学习时间 重要成长
目标 4000行 30篇 400小时 ----
第一周  100/4000  2/30 15/400 hello java
第二周 350/4000 3/30 40/400 流程控制
第三周 500/4000 4/40 50/400 类与对象、封装

参考资料

    • 《Java学习笔记》
    • 《Java学习笔记》学习指导
    • 毕向东java教学

你可能感兴趣的:(20145301第三周学习总结)