Java关键字static、final使用小结Z… 分类: Android开发 2014-05-30 10:58 66人阅读 评论(0) 收藏
static
对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。对于实例变量,没创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。
2. static代码块
3. static方法
********
static的数据或方法,属于整个类的而不是属于某个对象的,是不会和类的任何对象实例联系到一起。所以子类和父类之间可以存在同名的static方法名,这里不涉及重载。所以不能把任何方法体内的变量声明为static,例如:
fun() {
}
其实理解static是只有一个存储地方,而使用时直接使用,不需要创建对象,就能明白以上的注意事项。
另外,一般的类是没有static的,只有内部类可以加上static来表示嵌套类。
final
1. final变量
2. final方法
注意,类中所有的private方法都被隐含是final的。由于无法取用private方法,则也无法重载之。
3. final类
-----------------
特别要注意一个问题:
看个例子:
import
java.util.ArrayList;
public class TestStaticFinal {
private static
final String strStaticFinalVar
= "aaa";
private static String
strStaticVar = null;
private final String
strFinalVar = null;
private static
final int intStaticFinalVar =
0;
private static
final Integer
integerStaticFinalVar = new Integer(8);
private static
final ArrayList
alStaticFinalVar = new ArrayList();
private void test()
{
System.out.println("-------------值处理前----------");
System.out.println("strStaticFinalVar=" +
strStaticFinalVar + "");
System.out.println("strStaticVar=" +
strStaticVar + "");
System.out.println("strFinalVar=" +
strFinalVar + "");
System.out.println("intStaticFinalVar=" +
intStaticFinalVar + "");
System.out.println("integerStaticFinalVar="
+ integerStaticFinalVar + "");
System.out.println("alStaticFinalVar=" +
alStaticFinalVar + "");
//strStaticFinalVar="哈哈哈哈";//错误,final表示终态,不可以改变变量本身.
strStaticVar
= "哈哈哈哈";
//正确,static表示类变量,值可以改变.
//strFinalVar="呵呵呵呵"; //错误,
final表示终态,在定义的时候就要初值(哪怕给个null),一旦给定后就不可再更改。
public class TestStaticFinal {