20145301第三周学习总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20145301第三周学习总结相关的知识,希望对你有一定的参考价值。
20145301第三周学习总结
教材学习内容总结
第四章
4.1 类与对象
- 对象(Object):存在的具体实体,具有明确的状态和行为
- 类(Class):具有相同属性和行为的一组对象的集合,用于组合各个对象所共有操作和属性的一种机制
- 从类看对象:类定义可以视为一个具有类似特性与共同行为的对象的模板,可用来产生对象
- 从对象看类:类的产生,是从少数实例,推广到大量相似实例的抽象化过程(abstraction)
- 类是对象的设计图,对象是类的实例,生成对象要先定义类
4.2 基本类型包装
- Long、Integer、double、float、boolean等类是所谓打包器,主要目的是提供对象实例作为“壳”,价格基本类型打包在对象中,可以将基本类型答案做对象操作。
- 自动装箱拆箱可以使程序更简洁,在运算时编译程序会自动拆箱。
- 如果数值超出类的范围,就会建立新的实例,用‘==‘做比较易出错,若想比较数值应用equals()。
4.3 数组对象
- java中的数组和C语言有一些不同之处。一般声明数组是在类型关键词后如‘int[] score‘,定义的时候不必规定数组长度,指出单个数值时需要在‘[]‘里标明序号,若想知道数组长度则需要用length属性,若是二维数组则需要用‘cords.length‘得知列数,再由‘cords[x].length‘得知行数。
- 使用‘new‘建立数组后每个索引元素会有初始值,可以用‘java.util.Arrays‘的‘fill()‘方法更改默认值。
- ‘int[] scores2=scores1‘并不是数组复制,只是把‘scores1‘的参考对象也给‘scores2‘做参考对象。所以要复制数组需要用到for循环新建数组,或者直接使用‘System.arraycopy()‘方法/‘Arrays.copyOf()‘方法。
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的代码编译不通过,截图如下:
解决过程
已完成代码托管。 截图如下:
其他
实用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第三周学习总结的主要内容,如果未能解决你的问题,请参考以下文章