java第七周博客

it2024-07-12  43

java第七周

1.清理: 假定你的对象(并非使用 new)获得了一块"特殊"“的内存区域,由于垃圾回收器只知道释放那些经由new分配的内存,所以他不知道该如何释放该对象的这块"特殊"内存.为了应对这种情况,java允许在类中定义一个名为finalize()的方法。它的工作原理“假定”是这样的,一旦垃圾回收器准备好,释放对象占用的存储空间,将首先调用其finalize()方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。 java你的对象并非总是被垃圾回收 对象可能不被垃圾回收。 垃圾回收并不等于“析构”。 2.System.gc()用于强制进行终结动作。 3.成员初始化: 类的每个基本类型数据成员保证都会有一个初始值 char的默认初值为0,显示为空白。 类里定义一个对象时,如果不将其初始化,此引用就会获得一个特殊值null。 4.指定初始化: 数组初始化 方法1: int [ ] a; a=new int[10]; a[0]=3; 方法2: int [ ] c={2,3,4,5,6,7}; for(int i:c) {System.out.println(i+” ");} 对象初始化 Dog [ ] b=new Dog[ 10]; b[0]=new Dog( ); Dog [ ]b={new Dog( ),new Dog( ),new Dog( )};//此句的[ ]里面必须为空,不能放任何数字 5.构造器初始化 无法阻止自动初始化的进行,他将在构造器被调用之前发生

Public class Counter{ int i; Counter(){i=7;} }//i首先会被置0,然后变成7

在类的内部,变量定义的先后顺序决定了初始化的顺序。即使变量定义散布于方法定义之间,它们仍然会在任何方法,(包括构造器)被调用之前得到初始化。

import static net.mindview.util.print.*; Class Window{ Window(int marker){Print("Window("+marker+")");} } Class House{ Window W1=new Window(1); House(){ print("House()"); W3=new Window(33); } Window W2=new Window(2); void f(){print ("f()");} Window W3=new Window(3); } public class OrderOfInitialization { public static void main(String[] args) {House h=new House(); h.f(); } }

Static关键字不能应用于局部变量,它只能作用于域

Class Dog{ String name; static int age;//age在静态存储区内,不在对象里 double prince; char sex;public Static void main(String [] args) {Dog d1 =new Dog()};

即使没有显示的使用static关键字,构造器实际上也是静态方法。因此,当首次创建类型为对象时(构造器可以看成静态方法),或者类的静态方法/静态域首次被访问时,JAVA解释器必须查类路径,以定位.class文件。 存储空间会被清空,这就自动将对象中的所有基本类型数据都设置成了默认值(对数字来说就是零对布尔型和字符型也相同),而引用则被设置成了null。 初始化顺序为:先静态,后非静态,最后构造器。1.静态(按定义顺序)2.普通成员3.普通代码.4父类构造器5.子类构造器。

最新回复(0)