疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java中final的理解


 

  final修饰变量表示变量初始化后就不能再改变。

  一、对于基础类型来说,用final修饰后其值不可以改变。

  1.

  final int a;

  a = 5;

  2.final int a = 5;

  二、对于引用类型来说,用final修饰后其引用的对象不可改变,但可以改变对象的内容。

  java中用final修饰函数的参数,只是函数体内不能修改这个形参所指向的对象,但是仍能修改对象内容

  void f ( final String str){

  str = new String();//不允许

  str.toLowerCase();//允许

  }

  三、final 与 static final

  public class T {

  final int a = new Random(10).nextInt();

  static final int b = new Random(10).nextInt();

  public static void main(String[] args) {

  T t1 = new T();

  T t2 = new T();

  System.out.println(t1.a);

  System.out.println(t1.b);

  System.out.println(t2.a);

  System.out.println(t2.b);

  }

  }

  结果:

  t1.a != t2.a;

  t1.b == t2.b;

  四、例子

  1、

  final int i = 0;

  i++;//允许

  2、

  final String s = "abc";

  s.toLowerCase();//允许

  3、

  final int[] a = {1,2,3};

  a[1] = 1;//允许

  a = new int[5];//不允许