20155226 2016-2017-2 《Java程序设计》第3周学习总结
20155226 2016-2017-2 《Java程序设计》第3周学习总结
教材学习内容总结
- 认识对象
类类型 Java可区分为基本类型和类类型两大类型系统,其中类类型也称为参考类型。sun就是一个类类型变量,类类型变量指向的是对象。
类与对象 类与对象的关系:要产生对象必须先定义类,类是对象的设计图,对象是类的实例。我觉得在视频中对类与对象关系的描述更加形象,它说类是对现实生活中事物的描述,而对象就是这类事物,它是实实在在存在的个体。
类在定义时要使用关键词class,而具体对象就是对应java在堆内存中用new建立的实体。 在Java中,为个别对象的数据成员指定值的方式是:对象.对象成员 在一个java文档中可以有多个类,当类只需要描述一个事物,而不需要独立运行的时候,是不用写主函数的.
- 标准类API
java.util.Scanner类:java.util.Scanner的nextInt()方法会看看标准输入中,有没有输入下一个字符串,有的话会尝试将之剖析为int类型,其它的nextByte()、nextShort()等作用都类似。如果直接取得上一个字符串,则使用next(),如果想取得用户输入的整行文字,则使用nextLine(),总而言之Scanner类大大简化了Java的输入。 java.math.BigDecimal类:使用分数与指数来表示浮点数,这样就导致无法精确的进行运算,从而造成运算上的误差,且不能用==直接比较浮点数运算结果,所以我们可以使用BigDecimal类来得到想要的精确度。
- 对象指定与相等性
在基本类型中,=是将值复制给变量,而是比较两个变量储存的值是否相同。如果是在操作对象时,=是用在指定参考名称参考某个对象,而是用在比较两个参考名称是否参考同一对象。 equals是逻辑上相等,equals()和==是不一样的。
- 基本类型包装
为了让Java 基本类型像对象一样操作,可以使用Long、Integer、Double、Float、Boolean、Byte等类来打包基本类型,这些类就是所谓的打包器。
- 数组对象
数组在Java中就是对象,Java会检查数组的边界,一旦越界就会抛出ArrayIndexOutOfBoundsException的错误,所以在Java中,数组一旦建立,其长度就已经固定了,这一点也是和C语言所不同的地方。 在Java中可以使用System.arraycopy()的方法来进行数组值的复制,它会使用原生方式复制每个索引元素,比使用循环更快。在JDK6以上的版本中,还有个更方便的Arrays.copyOf()的方法,能够帮你建立新的数组。无论System.arraycopy()还是Arrays.copyOf(),用在类类型声明的数组时,都是执行浅层复制。
- 字符串对象
字符串本质是打包字符数组的对象,是java.lang.String类的实例。 要想比较字符串实际字符内容是否相同,不能使用==,要用equals(),这一点前面也提到了。 字符串对象一旦建立,就无法更改对象中的内容,使用+会产生新的String实例,不要将+用在重复性的连接场合。 使用javac指令没有指定-encoding选项时,会使用操作系统默认编码。
-
对象封装
-
封装 封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式,其目的主要就是隐藏对象细节,将对象当作黑箱进行操作。
-
this关键字 this代表其所在函数所属对象的引用,简而言之就是this代本类对象的引用,当在函数内需要用到调用该函数的对象时,我们就可以使用this。
-
this()代表了调用另一个构造函数,至于调用哪个构造函数,则视调用this()时给的自变量类型与个数而定。
-
static关键字 static用于修饰成员,被声明为static的成员,不会让个别对象拥有,而是属于类。 在static方法中不能出现this关键字,static方法中不能用非static数据或方法成员。import static语法是为了偷懒,但要注意名称冲突的问题。
-
教材学习中的问题和解决过程
- 本周出现了很多比较难分清比较难懂的概念,比如类与对象;面向对象与面向过程;经过看书加代码理解现在已经能分清了,在学习总结中有描述。
代码调试中的问题和解决过程
本周按书上给的代码敲的,比较顺利。
代码托管
- 代码量截图:
上周考试错题总结
* ~0b1011的十进制数值()
八位二进制:00001011
每位取反得:11110100
取反后补码:10001011+1=10001100
十进制表示:-12
-
在linux bash中查找两天前创建的java文件用()命令
find -ctime 2 -name *.java
其他(感悟、思考等,可选)
本周学习内容较多,概念也比较难懂,压力是挺大的,代码量由于上周较少,本周也加大了代码量。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 5/5 | 1/1 | 10/10 | |
第二周 | 75/80 | 1/2 | 15/25 | |
第三周 | 253/328 | 1/3 | 25/50 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:20小时
-
实际学习时间:25小时
-
改进情况:
-
有进步。