Java基础之static和final的用法

来源:互联网 发布:淘宝没发票可以投诉吗 编辑:程序博客网 时间:2024/05/17 09:09
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">     </span><span style="font-family: Arial, Helvetica, sans-serif; font-size: 18px; background-color: rgb(255, 255, 255);"> 在java中,变量、方法和类有很多修饰词来限定它们的范围(或者限定权限),常有的public、protected、private和默认(default),相信童鞋们对这几个修饰词并不陌生,那么,除此之外还有俩个修饰词相信大家也都经常见到,但是并不会经常用,现在,就来简单说说这俩个修饰词的用法,即static和final的用法。</span>
      
      static:意味静态的。它可以修饰成员变量、方法和代码块。
      1)修饰成员变量:static修饰成员变量时,成员变量就属于类的了,不再属于对象,可以通过类点访问,也可以通过对象访问,但是不建议。比如:
      public class A{
           static int a;
           int b;
     }
     
     public class B{
          public static void main(String[] args){
              A aa =new A();
              aa.b;//访问没有static修饰的成员变量,也叫实例变量
              aa.a;//不报错,但不建议
              A.a;//不报错,建议
        }
     }
当类的所有对象都有一样的数据时,将该成员变量修饰为静态的,这样该静态变量就和方法存储到同一内存区中了,而且只有一份,无论类的哪一个对象来访问该变量时,都无需重新赋值。
       2)修饰方法:static修饰方法时,方法同样属于类的了,不再属于对象,可以通过类点访问,也可以通过对象访问,但是不建议。比如:
     public class A{
           static int a;
           int b;
           public static void test(){
            a=1;//正确
            b=1;//报错
           }
     }
     
     public class B{
          public static void main(String[] args){
              A aa =new A();
              aa.test();//不报错,但不建议
              A.test();//不报错,建议
              test();//报错
        }
        public void test(){
        }
     }
在静态方法中,没有隐式的this,所以不能直接访问静态变量或静态方法。当方法跟对象无关,只与参数有关时,可以设为静态的,比如Arrays.sort()的sort()和Math.random()的random(),因为无论哪个对象调用,结果都是一样的,跟谁调用无关,所以设为静态的。
      3)修饰代码块:static修饰的一段代码,属于类,在类被加载时自动执行,因为类只被加载一次,所以静态代码块只被执行一次,它的形式如:
       public class A {
                  static{
           //加载静态资源
         }
      }
静态代码块主要是用来加载静态资源,比如音频、视频、图片等。

      final:最终的,不变的,可以修饰类、方法和成员变量。
      1)修饰类:final修饰类,该类不能被继承。
      2)修饰方法:final修饰方法,该方法不能被重写。
      3)修饰成员变量:final修饰的成员变量必须初始化或在构造方法中初始化,修饰局部变量时,在使用时需初始化,特别注意的是内部类访问局部变量时,该变量必须是final修饰的。
       
      static和final同时使用,常常用来修饰成员变量,那么此时被static和final同时修饰的变量叫做常量,该常量必须初始化,且不能改变。
0 0