Thinking In Java 学习笔记 1-5 章

第1章 对象导论编程

本章主要讲OOP的思想及一些OOP基本概念数组

一、抽象过程:万物都是对象,对象具备状态、行为和标识。对象拥有属性和方法,以及在内存中的惟一地址。并发

二、每一个对象都有一个接口:经过接口给对象发送消息请求来控制和操做对象,这里的接口是指对象的方法。函数

三、每一个对象都提供服务:将对象想象成服务提供者,调用对象提供的服务来实现某一目的。spa

四、被隐藏的具体实现:对象对外界只提供服务接口,而隐藏内部的实现细节,经过关键字(public、private、protected)来设定边界。对象

五、复用具体实现:新建的类能够复用建立好的类实现更加复杂的功能。继承

六、继承:导出类能够拥有父类全部的特性。接口

七、多态:不一样子类能够不一样的方式实现基类的方法。生命周期

八、单根继承:OOP的全部类都继承自Object。内存

九、容器:对象的集合List、Map、Set,参数化类型ArrayList<String>实现正确的转型

十、对象的建立和生命周期:Java采用动态内存分配方式,new一个对象存储在堆中,由于是动态分配管理因此建立时间将远远大于直接在堆栈(C++存储在此)中建立空间的时间,动态分配能够带来更大的灵活性,C++须要经过编程方式来销毁对象否则可能会致使内存泄漏,Java经过垃圾回收器自动内存释放。

十一、异常处理:Java内置了异常处理机制。

十二、并发:Java的并发内置于语言中。

1三、Java与Internate。

第2章 一切都是对象

一、用引用操纵对象。

二、对象都由new 来建立,存储数据的5个地方 寄存器(不能认为控制)、堆栈(RAM区)、堆(RAM区,全部的Java对象都存于此)、常量存储(程序代码内部)、非RAM存储(存储存活于程序以外的数据)。

三、Java类的基本成员会自动设置默认值。

四、类建立的全部对象的Static字段只分配一个内存。

 

第3章 Java操做符

一、==和!=比较的是对象的引用

Integer n1=new Integer(47);//new 的就是对象

Integer n2=new Integer(47);

System.out.println(n1==n2);  //false

System.out.println(n1!=n2);  //true

比较两个对象的实际内容是否相同用equals(),这个方法不适用与基本类型,基本类型用==和!=便可

System.out.println(n1.equals(n2));  //true

下一种情形:

class Value{

  int i;

}

Value v1=new Value();

Value v2=new Value();

v1.i=v2.i=100;

System.out.println(v1.equals(v2));  //false

因为equals默认行为是比较引用,因此这句输出的是false,上例中基本类型Interger的equals方法是覆盖过的,因此输出的是true。

第4章 控制执行流程

一、

if-else

while

do-while :至少执行一次do的内容

for

Foreach:for(String s : str)  str是一个String数组

 

二、标签:Java须要使用标签的惟一理由是由于有循环嵌套,而想从多层嵌套中break或Continue

标签的语法: label:  标签后面跟有冒号的标识符

Outer:    //定义标签

while(true){

 

  while(true){

    i++;

    if(i==3)

      continue Outer;    // 带标签的continue会到达标签的位置,并从新进入紧接在那个标签后的循环。

    if(i==5)

      break Outer;  //带标签的break会中断并跳出标签所指的循环。

  }

...

}

 

三、Switch的参数必须是int或char的整数值或者enum值。

第5章 初始化与清理

一、用构造函数确保初始化:与类同名且没有返回值

二、初始化顺序:自动初始化将在调用构造器以前,按类中变量定义的前后顺序

三、可变参数:Object......args

四、枚举:enum.values(),enum.ordinal() 获取声明顺序

相关文章
相关标签/搜索