《Java编程思想》笔记

《Java编程思想》笔记

《Java编程思想》笔记_第1张图片

第一章 对象导论

1、对象的特性:
Smaltalk的五个特性:
万物皆对象
程序是对象的集合,他们通过发送消息来告知彼此需要做的
每个对象都具有类型
某一个特定类型的所有对象都可以接受同样的消息

2、Java使用了三个关键字public、private、protected访问控制。
第一个存在原因就是让客户端程序员无法触及他们不应该触及的部分。
第二个存在原因就是类库创建者可以改变类内部的工作方式而不用担心会影响到客户端程序员。

第二章 一切都是对象

1、对象存储的地方
(1)寄存器
(2)堆栈:堆栈指针向下移动,分配新的内存,向上移动,则释放内存。
(3)堆:一种通用内存池,用于存放所有的java对象。
(4)常量存储:直接存放在代码内部,安全。
(5)非RAM存储:数据存活在程序之外。

2、基本类型(8种)
高精度数字
BigInteger:支持任意精度的整数。
BigDecimal:支持任何精度的定点数,用于货币计算。

第三章 操作符

1、对象比较使用==,比较的是对象的引用。对象比较使用equals()比较对象的内容是否相等。基本数据类型使用==。

2、浮点型转成整型值时,总是对该数字执行截尾。

第四章 控制执行流程

1、控制语句包括if-else,while,do-while,for,return,switch,goto不支持。

第五章 初始化与清理

1.构造器:
(1)默认构造器。
(2)自定义定义构造器。

2、重载

3、this:
将当前对象的引用传递给其他方法使用。

4、垃圾回收器:
java的对象并非总是被垃圾回收。使用垃圾回收器的唯一原因是为了回收程序不在使用的内存。

第六章 访问权限控制

1.、从最大权限到最小权限依次为:public,protected,默认,private。

第七章 复用类

final关键字的使用场景:
一个永不改变的编译时常量。
一个在运行时被初始化的值,而你不需要它被改变。
final修饰方法:
把方法锁定,以防任何继承类修改它的含义。
final修饰类:
不能被继承。

第八章 多态

1、构造器相当于static方法,只不过该static声明是隐式的,子类调用构造器前,要先调用父类的构造器。
2、多态的作用是消除类型之间的耦合关系。

第九章 接口

1、抽象类和抽象方法:
包含抽象方法的类叫做抽象类,如果一个类包含一个或多个抽象方法,该类必须被限定为抽象的,(否则编译器会报错)。
2、interface这个关键字产生一个完全抽象的类,它根本没有提供任何具体实现。
3、一个类只能继承一个基类,但能实现多个接口,接口可以继承接口,并且可以多继承。

第十章 内部类

可以将一个类的定义放在另一个类得定义内部,这就是内部类

1、内部类拥有对其外围类所有元素的访问权。

2、使用.this与.new:创建一个内部类对象。

3、匿名内部类:

在匿名内部类,没有类的名字。

6.嵌套类:
1、定义:

如果不需要内部类对象与其外围类对象之间有联系,那么可以将内部类声明为static,这通常称为嵌套类。

2、嵌套类,意味着:
要创建嵌套类的对象,并不需要其外围类的对象
不能从嵌套类的对象中访问非静态的外围类对象

3、为什么需要内部类:
内部类使得多重继承的解决方案变得完整。

4、闭包与回调:
闭包是一个可调用的对象,它记录了一些信息,这些信息来自于创建它的作用域。内部类是面向对象的闭包,它不仅包含外围类对象(创建内部类的作用域)的信息,还自动拥有一个指向外围类对象的引用,在此作用域内,内部类有权限操作所有的成员,包括private成员。

第十一章 持有对象

1、泛型和类型安全的容器
在<>可以放多个类型,不止一个。

2、List
LinkedList:基于链表,中间插入删除快,按位置查找慢
ArrayList:基于数组,中间插入删除慢、按位置查找快

3、迭代器
Iterator:
(1)使用方法Iterator()返回一个Iterator
(2)使用next()获得序列中的下一个元素
(3)使用hashNext()检查序列中是否还有元素
(4)使用remove()将迭代器新近返回的元素删除

4、java容器包括collection,map

第十二章 通过异常处理错误

Java的基本理念是"结构不佳的代码不能运行"

1、创建自定义异常:
继承Exception

2、Exception是与编程有关的所有异常类的基类。

3、Error用来表示编译时和系统错误,Exception是可以抛出的基本类型。

第十三章 字符串

字符串操作是计算机程序设计中最常见的行为。

1、字符串操作有不可变的String,重载"+",StringBuilder,StringBuffer。

2、字符串格式化输出%s,format()。

3、正则表达式学习

第十四章 类型信息

1、java识别对象和类的信息的2种方式。
传统的"RTTI"
反射机制
运行时类型识别(RTTI, Run-Time Type Identification)
2、类字面常量
static final先于static代码块。
3、泛化的class引用
newInstance()也是用来创建新的对象。
4、instanceof与Class的等价性
instanceof保持了类的概念,它指的是“你是这个类吗,或者你是这个类的派生类吗?”而如果用==比较实际的Class对象,就没有考虑继承——它或者是这个确切的类型,或者不是。

第十五章 泛型

1.泛型的定义:
泛型这个术语的意思是:适用于许多许多的类型。即实现了参数化类型的概念。

2、元组:
它是将一组对象直接打包存储于其中的一个单一对象,这个对象允许读取其中元素,但是不允许向其中存放新的对象(这个概念也称为数据传送对象或信使)。
3、泛型方法:
public void f(T x){ }

第十六章 数组

1、数组与其它种类的容器之间有三方面的区别:效率,类型,保存基本类型的能力。

2、数组查找速度非常快

第十七章 容器深入研究

List,Map,Set的底层实现源码。

第十八章 Java I/O系统

1、File类的输入输出流
读取字节:InputStream,Reader
写入字节:OutputStream,Writer

2、压缩
压缩类的基类:DeflaterOutputStream
解压缩的基类:InflaterInputStream

第十九章 枚举类型

1、enum:定义常量,相当于public static final。
2、除了不能继承一个enum之外,我们基本上可以将enum看做一个常规的类。
3、enum里面不能有重复,相当于set,但是不能存取。

第二十章 注解

1、三种标准注解:@Override,@Deprecated,@SuppressWarnings。
2、四种元注解(专职负责注解其他的注解):@Target,@Retention,@Documented,@Inherited

第二十一章 并发

1.并发的多面性:
用并发解决的问题大体上可以分为“速度”和“设计可管理性”两种。
2、java的线程机制是抢占式的。
3、建议使用runnable接口,因为单继承,继承thread过于局限,接口还可以继承。
4、start()方法被用来启动新创建的线程。
5、实现线程的方式:
(1)实现runnable接口。
(2)使用Thread类。
(3)Executor(执行器):单个的Executor被用来创建和管理系统中的所有任务。(调用线程池)
6、解决共享资源
锁 synchronized 。
7、线程状态
一个线程可以出于以下四种状态之一
(1)新建
(2)就绪
(3)阻塞
(4)死亡
8、任务进入阻塞状态的原因:
1.通过调用sleep(milliseconds)使线程进入休眠状态。
2.调用wait()使线程挂起。
3.任务在等待某个输入/输出完成。
4.任务试图在某个对象上调用其同步控制方法,但是对象锁不可用(等待锁)。

9、当以下四个条件同时满足时,就会发生死锁:
1.互斥条件。任务使用的资源中至少有一个是不能共享的。
2.至少有一个任务它必须持有一个资源且正在等待获取一个当前被识别的任务持有的资源。
3.资源不能被抢占,任务必须把资源释放当作普通事件。
4.必须有循环等待。

第二十二章 图形化界面

JAVA使用Swing库来设计界面,现在项目大部分是网页。不过暂时用不到Java图形化界面。

你可能感兴趣的:(终身学习)