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

教材学习内容总结

1.构造方法决定类生成对象的方式

用this将已存在的参数的值指定给此参数。

用new建立新的实例。

class Clothes {

String color;

char size;

new Clothes(String color,char size){

  this.color = color;

  this.size = size;

}

}

在上述的例子中,new建立了一个新的Clothes实例,相当于是C语言中的结构体。用this.将color和size参数的值指定给color和size参数,简单来说,string类型的color和char类型的size参数在设定时是不带值的,要用this.将数据color和size指定给color这个参数和size这个参数。有的时候,加上this是为了区分同名的参数和数据成员。

2. 打包器

自动装箱

Integer wrapper = 10;

自动拆箱

int foo = wrapper;

所谓装箱、拆箱,其实就是数据储存中对空间的占有。装箱即数据存入地址之后参与运算,这期间地址中的数不会发生改变,也就是只读的状态;拆箱就类似与改变文件的只读模式,可以改变地址中的值,或者说这个值从地址中被拆走,改变的值重新存入原来的地址。如运算时的自动装箱与拆箱。

Integer i = 10;

System.out.println(i+10);

System.out.println(i++);

运算时,先对i拆箱,进行加法运算之后再自动装箱。

3. 浅拷贝与深拷贝

在有指针的情况下,浅拷贝只是增加了一个指针指向已经存在的内存,而深拷贝就是增加一个指针并且申请一个新的内存,使这个增加的指针指向这个新的内存。也就是说,浅拷贝是用的已存在的内存,深拷贝是新建一个内存再把东西拷到新的内存里,后者在释放内存的时候不会出现释放同一内存的错误。

4. 封装与SRP原则

封装(Encapsulation)实际上使用方法(Method)将类的数据隐藏起来,控制用户对类的修改和访问数据的程度,隐藏对象细节,将对象当作黑箱进行操作

封装就是将一个函数打包,不让其他用户看到其中的细节,但可以调用其中的对象进行操作。书上上说道:“在说明案例的时候,都会假设两个以上的开发者”,将函数进行封装也便于合作伙伴之间的交流。封装的主要目的是隐藏细节,用户调用封装中的函数,却不了解函数的细节,这对保护私有数据很重要。

SRP原则即单一职责原则:

决不要有一个以上的理由修改一个类。

对象提供单一职责的高度封装,对象的改变仅仅依赖于单一职责的改变。

也就是说,每个封装内部的函数也只能在这一封装里通过特定的方法进行修改。

5. 类语法细节

public修饰权限,说明对象公开可用;

private用在成员变量前,声明成员表示为类私有;

重载构造函数:参数类型或个数不同,可以定义多个构造函数。

this()代表调用了另一个构造函数,调用的函数视自变量类型和个数而定。

类名.static成员,static方法或区块中不能出现this关键字。声明为static的成员,不会让个别对象拥有,而是属于类。

可以用import static进行偷懒。但要注意名称冲突问题。

上周考试错题总结

  • 错题1 CH03 填空:~0b1011的十进制值是(-12)

  • 错题2 CH03 判断:byte a=3;byte b=4; 那么 a+b的类型也是byte.(X)

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

  • 错题4 运行p69 Odd.class的命令为(java cc.openhome.Odd)。

  • 错题5 P64 Shift.java中第三个printf的输出结果是”2的2次方:4”。(X)

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20
第二周 300/500 2/4 18/38
第三周 500/1000 3/7 22/60
第四周 300/1300 2/9 30/90

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。

耗时估计的公式

:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

参考资料

最新文章

  1. Linux网络编程(简单的时间获取服务器)
  2. E-R图的基础练习
  3. jquery插件-自定义select
  4. Angular - - $sce 和 $sceDelegate
  5. 解决 MySQL 分页数据错乱重复
  6. 批量数据复制SqlBulkCopy使用经验点滴(特别是超时处理)
  7. 深入了解View(一)—— measure測量流程分析
  8. U3D学习13-数据存储
  9. 第 8 章 容器网络 - 057 - macvlan 网络隔离和连通
  10. mass种子模块看完了
  11. JS中Float类型加减乘除
  12. 微信小程序之跨界面传参
  13. POJ2229 Sumsets
  14. TXMLDocument use case (Delphi)
  15. css border-bottom(指定下边线的样式、宽度及颜色)
  16. What if you are involved in an automobile accident in the US
  17. 902. Numbers At Most N Given Digit Set
  18. IntelliJ IDEA使用心得之非Maven项目篇
  19. pxe自动安装
  20. Mac brew安装MongoDB

热门文章

  1. Ubuntu16.04使用所遇问题记录
  2. CodeForces 91A Newspaper Headline
  3. CentOS查看线程、硬盘、内存、cpu、网卡
  4. 虚拟机Centos安装docker小记
  5. JavaScript:回调模式(Callback Pattern) (转载)
  6. IP黑白名单
  7. java中常见的math方法
  8. 陈正冲老师讲c语言之内存的申请malloc() 和释放free()
  9. iOS数据存储类型 及 堆(heap)和栈(stack)
  10. SecureCRT连接主机时(串口/网络),无法从键盘输入