欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java学习--static和final 博客分类: java  

程序员文章站 2024-03-24 10:16:58
...

static 与变量、方法一起使用,表示是“静态”的。

1 静态变量属于类,不属于任何独立的对象,所以无需创建类的实例就可以访问静态变量。

2 静态方法是一种不能向对象实施操作的方法。因为静态方法不能操作对象,所以不能在静态方法中访问实例变量,只能访问自身类的静态变量。

3 一个类的静态方法只能访问静态变量;

4 一个类的静态方法不能够直接调用非静态方法;

5 如访问控制权限允许,静态变量和静态方法也可以通过对象来访问,但是不被推荐;

6 静态方法中不存在当前对象,因而不能使用 this,当然也不能使用 super;

7 静态方法不能被非静态方法覆盖;

8 构造方法不允许声明为 static 的;

9 局部变量不能使用static修饰。

 

注:只要类被装载,不管你是否使用了这个static 变量,它都会被初始化。

 

public class Demo {
    static int i;
    int j;

    public static void main(String[] args) {
        Demo obj1 = new Demo();
        obj1.i = 10;
        obj1.j = 20;
       
        Demo obj2 = new Demo();
       
        System.out.println("obj1.i=" + obj1.i + ", obj1.j=" + obj1.j);
        System.out.println("obj2.i=" + obj2.i + ", obj2.j=" + obj2.j);
    }
}

 

 

final 所修饰的数据具有“终态”的特征,表示“最终的”意思。

1 final 修饰的类不能被继承。

2 final 修饰的方法不能被子类重写。

3 final 修饰的变量(成员变量或局部变量)即成为常量,只能赋值一次。

4 final 修饰的成员变量必须在声明的同时赋值,如果在声明的时候没有赋值,那么只有 一次赋值的机会,而且只能在构造方法中显式赋值,然后才能使用。

5 final 修饰的局部变量可以只声明不赋值,然后再进行一次性的赋值。

 

final 一般用于修饰那些通用性的功能、实现方式或取值不能随意被改变的数据,以避免被误用,例如实现数学三角方法、幂运算等功能的方法,以及数学常量π=3.141593、e=2.71828 等。

 

public final class Demo{
    public static final int TOTAL_NUMBER = 5;
    public int id;
    public Demo() {
        // 非法,对final变量TOTAL_NUMBER进行二次赋值了
        // 因为++TOTAL_NUMBER相当于 TOTAL_NUMBER=TOTAL_NUMBER+1
        id = ++TOTAL_NUMBER;
    }
    public static void main(String[] args) {
        final Demo t = new Demo();
        final int i = 10;
        final int j;
        j = 20;
        j = 30;  // 非法,对final变量进行二次赋值
    }
}

 

 

 

 

 

 

 本文示例参考自:http://www.weixueyuan.net