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

来源:互联网 发布:淘宝 知己知彼 好用么 编辑:程序博客网 时间:2024/06/07 05:05

一 概念介绍

1 当使用final修饰基本数据类型时,不能对其重新赋值,不能被改变。

2 当使用final修饰引用类型变量时,它仅仅保证他的地址不变,即一直引用同一个对象,但这个对象完全可以发生改变。

 

二 final修饰引用类型变量应用

1 代码示例

import java.util.*;class Person{private int age;public Person(){}// 有参数的构造器public Person(int age){this.age = age;}// 省略age的setter和getter方法// age的setter和getter方法public void setAge(int age){this.age = age;}public int getAge(){return this.age;}}public class FinalReferenceTest{public static void main(String[] args){// final修饰数组变量,iArr是一个引用变量final int[] iArr = {5, 6, 12, 9};System.out.println(Arrays.toString(iArr));// 对数组元素进行排序,合法Arrays.sort(iArr);System.out.println(Arrays.toString(iArr));// 对数组元素赋值,合法iArr[2] = -8;System.out.println(Arrays.toString(iArr));// 下面语句对iArr重新赋值,非法// iArr = null;// final修饰Person变量,p是一个引用变量final Person p = new Person(45);// 改变Person对象的age实例变量,合法p.setAge(23);System.out.println(p.getAge());// 下面语句对p重新赋值,非法// p = null;}}

2 运行结果

[5, 6, 12, 9]

[5, 6, 9, 12]

[5, 6, -8, 12]

23

3 结果分析

使用final修饰的引用不能被重新赋值,但可以改变引用类型所引用对象的内容。

0 0