java中final修饰符实例分析_Java教程-查字典教程网
java中final修饰符实例分析
java中final修饰符实例分析
发布时间:2016-12-28 来源:查字典编辑
摘要:final修饰符:final修饰成员变量必须有程序员显示指定初始值。类的Field:必须在静态初始化块中或声明该Field时指定初始值。实例...

final修饰符:

final修饰成员变量必须有程序员显示指定初始值。

类的Field:必须在静态初始化块中或声明该Field时指定初始值。

实例Field:必须在非静态初始块中,声明Field或者构造器中指定初始值。

final局部变量:必须由程序员显示初始化。

final修饰的基本变量和引用类型变量的区别?

final修饰的基本变量:不能对基本变量重新赋值。

final修饰的引用变量:只保证这个引用类型所引用的地址不会变,即

一直引用同一个对象,但这个对象完全可以发生改变。

复制代码 代码如下:

/**

*/

import java.util.*;

public class Demo5

{

public static void main(String[] args)

{

final B b = new B(22);

b.test();

//合法 改变值,但仍是指向同一个引用

b.setAge(20);

System.out.println(b.getAge());

// 非法

// b = null;

b.test2();

}

}

/**

fianl修饰成员变量

*/

class A

{

//合法

final int a = 10;

//构造器或初始化化块中指定初始值

final String str;

final int c;

final static double d;

{

str = "hello";

//非法

// a = 100;

}

static

{

d = 100;

}

// 构造器可对没在初始化块中指定的Field指定初始值

public A()

{

// 非法

// str = "ddd";

c = 1000;

}

public double changFinal()

{

// 不能再普通方法中为final指定初始值

// return d = 1000.90;

return 0;

}

}

/**

fianl修饰数组 对象

*/

class B

{

private int age;

public B()

{

}

public B(int age)

{

this.age = age;

}

public void setAge(int age)

{

this.age = age;

}

public int getAge()

{

return this.age;

}

public void test()

{

final int[] arr={23,434,56,898};

System.out.println(Arrays.toString(arr));

Arrays.sort(arr);

System.out.println(Arrays.toString(arr));

arr[2] = 200;

System.out.println(Arrays.toString(arr));

//下面对Arr重新赋值 非法

// arr = null;

}

/**

加深对final的理解

*/

public void test2()

{

String str1 = "美好未来";

//直接引用常量池中的"美好未来"

String str2 = "美好"+"未来";

//true

System.out.println(str1 == str2);

String s1 = "美好";

String s2 = "未来";

String s3 = s1+s2;

//false s1 s2只是变量 在编译时期不能确定

//若想在编译时期确定 则用 final修饰 s1 s2

System.out.println(str1 == s3);

}

}

小伙伴们是否对java中final修饰符有所了解了呢,相信注释中已经给大家解释的很清楚了,我这里就不再啰嗦

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Java学习
    热门Java学习
    编程开发子分类