`
sls0919
  • 浏览: 123186 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java学习--static和final

    博客分类:
  • java
阅读更多

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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics