首先本书的作者是从c++转java的,所以很多的比较都是针对这两门语言的比较.文章的排版是根据书中的目录进行划分的,并用了一定的缩进来方便阅读.
2.1 用引用操作对象
2.2 必须由你来创建所有对象
为什么java中的数组更加安全?
答:java确保数组会被初始化(对null的引用),而且不能在它的范围之外被访问。这种范围检查,是以每个数组上少量的内存开销
和运行时的下标检查为代价的。比如说String a[4],当访问a[5]时,java首先会进行范围检查,只有通过了范围检查才能继续访问,而 在c或c++中这种访问内存块之外数据的操作讲会产生致命错误。
Null
当创建了一个引用时,该引用会被自动初始化为一个特殊值null,如果试图使用一个还是null的引用,运行时将会报错,而这种检查是
在使用之前进行了,更加安全。
2.3 永远不需要销毁对象
内存泄露;
java有一个gc,用来监视用new创建的所有对象,并辨别那些不会被引用的对象,并释放。
一旦垃圾收集器准备好释放无用对象占用的存储空间,它首先调用那些对象的finalize()方法,然后才真正回收对象的内存。
2.4 创建新的数据类型:类
若类的某个成员是基本数据类型,即使没有初始化,java也会确保它有一个初始值
boolean | false
char | '/u0000'
short | 0
int | 0
.....
而在c中int x,x将会是一个随机值
2.5 方法、参数和返回值
static的方法是针对类调用的,并不依赖于对象的存在。
static自动对每个类来说都只有一份存储空间,非static字段则是对每个对象都有一份空间
向对象发送消息
a.f():a是对象,消息是f()
形参传递的都是对象的引用,基本数据类型除外
2.6 java程序
每个java文件都默认导入java.lang包