您的位置:首页 > 编程语言 > Java开发

[笔记]java-初始化,数组

2012-11-15 15:51 113 查看
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
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: