java编程思想笔记-1
初始化与清理
构造器与重载方法
-
基本类型重载的类型自动提升:byte->short->int->long->float->double,还有char->int。
-
重载方法的区分:参数个数,参数类型,以及参数顺序。
-
如果你已经定义了一个构造器,编译器就不会帮你自动创建默认构造器。
-
构造器中可以用this最多调用一个构造器,且必须将构造器放在最起始处,否则编译器会报错。同时编译器禁止在其他方法中调用构造器。
-
可变参数列表function(Obeject... args):参数传递可以为0到n个
垃圾回收
-
finalize()不能用作通用的清理方法,因为垃圾回收不一定被执行,只有等到相应存储空间用完时才会释放对象占用空间。
-
java并未提供析构函数或相似的概念,要做类似的清理工作必须自己手动创建一个执行清理工作的普通方法,并明确的调用它们。
-
java虚拟机采用一种自适应的垃圾回收技术:自适应的,分代的,停止-复制,标记-清扫。其中自适应是指停止-复制与标记-清扫自动切换,分代的是指内存分配以块为单位,其引用代数表明其存活,对象较大会占用单独的块,它不会被复制,而是增加引用代数。
静态块与初始化
-
static方法的内部不能调用非静态方法。
-
java类成员变量会自动初始化,基本类型都会赋给相应初值,如果是对象引用则赋为null。
-
java可以在定类成员变量时直接为其赋值,而C++不可以。
-
初始化顺序,变量定义的先后顺序决定了初始化顺序,但先初始化变量,再初始化方法。另外,先初始化静态对象,再初始化静态方法。
-
静态块:static {},非静态块(实例初始化):{}。
数组初始化
-
可以用new创建基本类型数组,eg: int[] a=new int[4],但是不能用new创建基本类型数据。数组中元素会自动初始化为空值(对于数字和字符,就是0,对于布尔型,是false)。
-
数组是一个非基本类型对象,所以如果in[] a; 那么此时a为null;非基本类型数组(即数组元素为非基本类型),那么其中的元素就为一个引用,初始化为null。如果为基本类型数组(即数组元素为基本类型),那么初始化为0或者false。
-
数组初始化列表的最后一个逗号是可选的。eg:int[] a={1,2,3,}与{1,2,3}均可