public final class ThreeStooges {

     /*
* stooges是Set<String>类型的引用,final限定该引用成员属性stooges被赋初值后,就不能再改变去引用其他的同类对象
* final只是限定了声明的引用stooges不能改变,stooges引用的对象能不能改变,由被引用对象本身的类定义来决定
*/
private final Set<String> stooges = new HashSet<String>(); public ThreeStooges() {
stooges.add("Moe");
stooges.add("Larry");
stooges.add("Curly"); //stooges = new HashSet<String>(); //The final field ThreeStooges.stooges cannot be assigned
} /**
* 向被引用的HashSet中添加一个元素
* final域stooges仍引用着赋初值时的那个HashSet对象,而stooges.add(name);只是向被引用的被引用的HashSet中添加一个元素
* @param name
*/
public void add(String name) {
stooges.add(name);
} public boolean isStooge(String name) {
return stooges.contains(name);
} public void print() {
Iterator<String> iterator = stooges.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next() + ", ");
}
} public static void main(String[] args) { ThreeStooges ts = new ThreeStooges();
ts.add("asn");
ts.print();
}
} 输出:

Moe,
asn,
Curly,
Larry,

java final域的更多相关文章

  1. Java内存模型-final域的内存语义

    一 引言 说到final你肯定知道它是Java中的关键字,那么它所在Java中的作用你知道吗?不知道的话,请前往这篇了解下https://www.cnblogs.com/yuanfy008/p/802 ...

  2. Java并发编程之final域的内存语义

    一.final域的重排序规则 对于final域,编译器和处理器要遵循两个重拍序规则: 1.在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序 ...

  3. Java并发编程原理与实战四十四:final域的内存语义

    一.final域的重排序规则 对于final域,编译器和处理器要遵循两个重拍序规则: 1.在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序 ...

  4. java final keyword

    依据上下文环境,java的keywordfinal也存在着细微的差别,但通常指的是“这是无法改变的.”不想改变的理由由两种:一种是效率,还有一种是设计.因为两个原因相差非常远,所以关键子final可能 ...

  5. Java——final关键字

    前言 Java中的关键字final的含义通常为"这是无法改变的".下面将介绍final用于修饰数据.方法和类的这三种情况. final数据 许多编程语言都有某种方法,来向告诉编译器 ...

  6. final域的内存语义

    final 一.final的基本语义 final关键字可以用来修饰类.方法和变量(包括成员变量和局部变量) 当用final修饰一个类时,表明这个类不能被继承. 当用final修饰一个方法时,表明这个方 ...

  7. Java中域 实例域 静态域

    1.java中的域 所谓的域,翻译成英文就是field, 也就是我们常说的字段,或者说是属性. 比如类的字段(属性),局部的,全局的.所谓域,其实是“field”的翻译 然后实例域,就是 实例(&qu ...

  8. 深入java final关键字

    Java final关键字详解:https://blog.csdn.net/kuangay/article/details/81509164 深入java final关键字 用法注意点和JVM对其进行 ...

  9. 【笔试题】Java final keyword

    Java 知识测试 Java final keyword Question 1 What is the use of final keyword in Java? A. When a class is ...

随机推荐

  1. 官网svn提交到代码库,但是不能同步到web目录

    现象:数据库名字存在,但是数据库中表为空:svn提交代码能到svn库中,但不能同步到web目录. 原因:磁盘分区满了,导致内测服务器中数据库先删掉但没能从线上拉取回来,显示数据库中表为空: 磁盘满,导 ...

  2. HBuilderX生成本地打包App资源

    http://ask.dcloud.net.cn/question/60254 概要 在HBuilderX中开发的应用可以提交到云端打包生成apk(Android平台)和ipa(iOS平台).如果本地 ...

  3. Freckles (最小生成树)

    #include<iostream> #include<cstring> #include<stdio.h> #include<queue> #incl ...

  4. oracle误操作commit之后,可以闪回数据

    1. 授予行迁移权限 alter table table_name enable row movement; 2. 到15分钟前: flashback table order   to timesta ...

  5. NOIP模拟 17.8.17

    NOIP模拟17.8.17 A 小 G 的字符串文件名 输入文件 输出文件 时间限制 空间限制str.pas/c/cpp str.in str.out 1s 128MB[题目描述]有一天,小 L 给小 ...

  6. node.js(二)各种模块

    我们知道Node.js适合于IO密集型应用,不适合于CPU密集型应用.    JS和Node.js区别:         JS运行于客户端浏览器中,存在兼容性问题:数据类型:值类型+引用类型(ES+D ...

  7. ansible Ansible Galaxy ansible-playbook 安装 使用 命令 笔记 生成密钥 管控机 被管控机 wget epel源

    笔记 ansible 安装 与salt对比 相同 都是为了同时在多台机器上执行相同的命令 都是python开发 不同 agent(saltstack需要安装.ansible不需要) 配置(salt配置 ...

  8. 大数据技术之HA 高可用

    HDFS HA高可用 1.1 HA概述 1)所谓HA(High Available),即高可用(7*24小时不中断服务). 2)实现高可用最关键的策略是消除单点故障.HA严格来说应该分成各个组件的HA ...

  9. Directx11教程(63) tessellation学习(5)

    原文:Directx11教程(63) tessellation学习(5)        TS中生成细分后顶点的u,v,{w}坐标,我们根据控制点和u,w,{w}坐标生成新的顶点位置,在前面四边形的细分 ...

  10. 构造器 构造方法 constructor

    构造器的作用: 1.创建对象. 设计类时,若不显示的声明类的构造器的话,程序会默认提供一个空参的构造器. 一旦显示的定义了构造器,就不再默认提供. 声明类的构造器:权限修饰符 与类同名(形参){} 类 ...