Just a little smile ^ ^

yoyo_zeng

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

public class xxx{

//data初始化,或者在{}初始化

//method

//static method,data初始化,或者在{}初始化

}

this关键字

垃圾收集器:释放由new分配的内存,

一旦垃圾收集器准备好释放对象占用的存储空间,它首先调用 finalize(),而且只有在下 一次垃圾收集过程中,才会真正回收对象的内存。所以如果使用 finalize(),就可以在垃圾收集期间进行一 些重要的清除或清扫工作。 finalize()主要用来释放调用c/c++中的内存和观察垃圾收集的过程。 

java 不允许我们创建本地(局部)对象——无论如何都要使用 new 

 

制定初始化:

类似C++的“构建器初始模块列表"

//那些自变量不可是尚未初始化的其他类成员。因此,下面这样做是合法 的:
class CInit {
 int i = f(); 
int j = g(i); //...
}
//但下面这样做是非法的:
class CInit {
 int j = g(i); 
int i = f(); //...
}
class Mug { Mug(int marker) {
System.out.println("Mug(" + marker + ")"); }
void f(int marker) { System.out.println("f(" + marker + ")");
}
}
public class Mugs { Mug c1; Mug c2;
{ //块初始化 c1
= new Mug(1); c2 = new Mug(2); System.out.println("c1 & c2 initialized"); }
Mugs() { System.out.println(
"Mugs()"); } public static void main(String[] args) { System.out.println("Inside main()"); Mugs x = new Mugs(); } } ///:

 

class Counter {
int i;
Counter() { i = 7; } 

 

}//那么 i 首先会初始化成零,然后变成 7 

 

static 初始化: data同非static,

如果它属于一个基本类型(主类型),而且未对其 初始化,就会自动获得自己的标准基本类型初始值;如果它是指向一个对象的句柄,那么除非新建一个对 象,并将句柄同它连接起来,否则就会得到一个空值(NULL) 

初始化的顺序是首先static(如果它们尚未由前一次对象创建过程初始化),接着是非static 对象

明确进行的静态初始化 ,“static构建从句”(有时也叫作“静态 块”):

class Spoon { 
static int i;
 static {
    i = 47; }
}

这段代码仅执行一次——首次生成那个类的一个对象时,或者首次访问属于那个类的一个 static 成员时 (即便从未生成过那个类的对象)

 

基本数据类型的数组元素会自动初始化成“空” 值(对于数值,空值就是零;对于char,它是null;而对于boolean,它却是false) 

数组可以赋值,相当于别名

public class Arrays {
public static void main(String[] args) {

Integer[] a = { new Integer(1), new Integer(2), new Integer(3),}; //包含对象的数组
f(new Object[] {
new Integer(47), new VarArgs(), //动态分配
new Float(3.14), new Double(11.11) });
f(new Object[] {"one", "two", "three" });
f(new Object[] {new A(), new A(), new A()});
Integer[][] a4 = {
{ new Integer(1), new Integer(2)}, { new Integer(3), new Integer(4)}, { new Integer(5), new Integer(6)},
};//多维数组

int[] a1 = { 1, 2, 3, 4, 5 }; int[] a2;
a2 = a1;
for(int i = 0; i < a2.length; i++)
a2[i]++;
for(int i = 0; i < a1.length; i++)
prt("a1[" + i + "] = " + a1[i]); }
static void prt(String s) { System.out.println(s);
}
static void f(Object[] x) {
for(int i = 0; i < x.length; i++) System.out.println(x[i]);
}
} ///:~
run:
a1[0] = 2
a1[1] = 3
a1[2] = 4
a1[3] = 5
a1[4] = 6

 

初始化顺序:

基类static初始化->子类static初始化->基类非static初始化->基类init->子类非static初始化->子类init

public class JavaApplication2 {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        test2 teademo = new test2();
    }
}
class test1{
    static {
        System.out.println("static test1");
    }
      {
        System.out.println("no static test1");
    }
      public test1(){
          System.out.println("init test1");
      }
}
class test2 extends test1{
    static {
        System.out.println("static test2");
    }
      {
        System.out.println("no static test2");
    }
      public test2(){
          System.out.println("init test2");
      }
run:
static test1
static test2
no static test1
init test1
no static test2
init test2
}

 

posted on 2012-11-15 15:51  yoyo_zeng  阅读(264)  评论(0编辑  收藏  举报