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

Java类加载和static修饰符

2016-01-25 23:08 302 查看

Java类加载和static修饰符

类加载和几个常见关键字

也许你经常使用static,可是你是否思考过它的意义。

1. static关键字

顾名思义,static(静态的)修饰符。

被static修饰的变量和方法是不会被实例化的,在类加载的时候,只在内存中保留一份,以后再调用,还是会拿到这个内存地址,永远不会产生新的了。

static在安卓中常被用在内部类上,内部类会持有外部类的强引用,导致外部类不能被释放,对于android的各大组件,会出现内存泄露的。

2. final关键字

顾名思义,final(最终的)修饰符。

被final修饰的类不能被继承,被修饰的方法不能override,被修饰的变量只能初始化一起。

总之就是常量的意思,感觉是为了防止手滑。

3. new关键字

实例化,在内存中为被实例化的类分配内存,返回引用地址(指针),然后一个对象就产生了,然后就要面向对象了。被static关键字修饰的变量不会被实例化指的是在这个过程中,类中被static修饰的变量不会产生新的引用地址,是一个安静的美女子。

有些地方也许理解的不到位。

4. 类加载

public class Demo{
//①
public static int a = 1;
//②
public static int b;
//③
static{
a = b;
}
//④
public Demo(){
b = 2;
System.out.println("a = " + a);
}

}


结果: a = 0 ;

类加载时初始化顺序是①②初始化静态变量,③静态代码初始化,④构造方法。所以b被赋值为2之前就被赋值给了a,而当时b的值为0,所以最后控制台输出结果为0;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java android