Final修饰对象

众所周知,final是java的关键字,修饰符,用于声明属性(属性不可变)、方法(方法不可重写)和类(类不可继承),那么final可以修饰对象么,修饰对象又是代表着什么?

先看一个例子

>>>代码示例
public class FinalDemo {static final Integer[] arr = new Integer[]{1, 2, 3};public static void main(String[] args) {System.out.println("arr原来的数组内容:"+Arrays.toString(arr));System.out.println("arr原来的内存地址:" + arr.hashCode());arr[0]=4;arr[1]=5;arr[2]=6;System.out.println("修改后arr的数组内容:"+Arrays.toString(arr));System.out.println("修改后arr的内存地址:" + arr.hashCode());}
}
>>>运行结果
arr原来的数组内容:[1, 2, 3]
arr原来的内存地址:460141958
修改后arr的数组内容:[4, 5, 6]
修改后arr的内存地址:460141958

由此不难看出,我们可以修改final修饰了的对象内容,但是引用地址未发生变化。

那么我们重新给arr对象赋值,是否可以?

>>>代码示例
public class FinalDemo {static final Integer[] arr = new Integer[]{1, 2, 3};public static void main(String[] args) {System.out.println("arr原来的数组内容:"+Arrays.toString(arr));System.out.println("arr原来的内存地址:" + arr.hashCode());arr[0]=4;arr[1]=5;arr[2]=6;arr= new Integer[]{7, 8, 9};//重新赋值System.out.println("修改后arr的数组内容:"+Arrays.toString(arr));System.out.println("修改后arr的内存地址:" + arr.hashCode());}
}
>>>运行结果——编译报错
Error:(15, 9) java: 无法为最终变量arr分配值

总结:final修饰的对象,内容可变,引用不可变。

Java中Final修饰对象相关推荐

  1. JAVA中final修饰参数

    1. final 修饰在变量上,说明这个变量的值不能修改 final 修饰在方法上,说明这个方法在继承后不能覆盖. final 修饰在类上,说明这个类为终态,不能被继承了. 2.final类型修饰的参 ...

  2. java 中final修饰的变量_java中final修饰符的使用方法

    本文为大家分享了java中final修饰符的使用,供大家参考,具体内容如下 1.final修饰符的用法: final可以修饰变量,被final修饰的变量被赋初始值之后,不能对它重新赋值. final可 ...

  3. Java中final修饰符的理解

    记录一下今天复习的final修饰符,其中 final类的成员方法隐式被final修饰部分 仅代表我个人理解 总结如下: final有三种使用方法: 1.final修饰类 final修饰类表示这个类不能 ...

  4. Java中final修饰变量

    一:final修饰的变量即成为常量,只能赋值一次,但是final所修饰局部变量和 员变量有所不同. (1)final修饰的局部变量必须使用之前被赋值一次才能使用 (2)final修饰的成员变量在声明时 ...

  5. java中final关键字、权限修饰符、内部类(成员内部类、局部内部类、匿名内部类)

    final关键字: final表示最终的不可变的,在java中可以用来修饰类或方法.局部变量.成员变量. // 1.final关键字修饰类需要放在class关键字前面,表示不可变的类,需要注意,这里表 ...

  6. 关于Java中各种修饰符与访问修饰符的说明

    关于Java中各种修饰符与访问修饰符的说明 类: 访问修饰符  修饰符  class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 ...

  7. java中final关键字的使用

    final 中文翻译为 最终的,在java中也是较为常用的关键字之一. 在java 中 final 关键字可以修饰  类.方法.变量 final 修饰在类上,则表示该类不能被继承,如果里面的成员变量没 ...

  8. JAVA中Final的用法

    JAVA中Final的用法 1. 修饰基础数据成员的final 这是final的主要用途,其含义相当于C/C++的const,即该成员被修饰为常量,意味着不可修改.如java.lang.Math类中的 ...

  9. 转 Java中final、finally、finalize的区别与用法

    Java中final.finally.finalize的区别与用法 1.简单区别: final用于声明属性,方法和类,分别表示属性不可交变,方法不可覆盖,类不可继承. finally是异常处理语句结构 ...

最新文章

  1. LeetCode简单题之重新分配字符使所有字符串都相等
  2. 零售行业O2O盛行 或成黑客窃取数据目标
  3. python django项目断点调试
  4. 阿里云 apt-get update 403
  5. 二分图模板(女生赛要用)
  6. 个人创业做什么好?以下这几个值得考虑
  7. 常用数据验证正则表达式释义(附:正则表达式常用符号)
  8. 基于递归的前序二叉树遍历实现
  9. 10个每个开发人员都喜欢的JavaScript模式
  10. Linux操作Oracle(16)——Oracle扩容报错:ORA-01144_表空间数据文件超出最大限制
  11. 详细教程:编译Linux最新内核
  12. Windows 7 64位下使用ADB驱动
  13. 普林斯顿微积分读本-[美]阿德里安·班纳著-修订版;杨爽, 赵晓婷, 高璞译
  14. 双线性映射:零知识证明的引擎
  15. javascript语法
  16. iOSAPP创建桌面快捷方式
  17. Python 如何反方向迭代一个序列
  18. 2021-06-02-IPFS私有网络搭建
  19. 剑麻的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  20. Java Exchanger

热门文章

  1. 计算机动态网站毕业论文,个人动态网站
  2. 一个测试人员如何变成测试架构师
  3. 2021年塔式起重机司机考试及塔式起重机司机试题及解析
  4. Java 初级面试题
  5. 芯片量产测试常用“黑话”
  6. 大学计算机模拟考试常见试题与解析
  7. java web根据excel word模板生成前台页面,自动求和
  8. 人见人爱的最新 Python 爬虫利器
  9. Qt下载安装及配置教程
  10. 24小时伦敦金走势图分析