Java关键字介绍之final
public class Bat {
final double PI = 3.14; // 在定义时赋值
final int i; // 因为要在构造函数中进行初始化,所以此处便不可再赋值
final List<Bat> list; // 因为要在构造函数中进行初始化,所以此处便不可再赋值
Bat() {
i = 100;
list = new LinkedList<Bat>();
}
Bat(int ii, List<Bat> l) {
i = ii;
list = l;
}
public static void main(String[] args) {
Bat b = new Bat();
b.list.add(new Bat());
// b.i=25;
// b.list=new ArrayList<Bat>();
System.out.println("I=" + b.i + " List Type:" + b.list.getClass());
b = new Bat(23, new ArrayList<Bat>());
b.list.add(new Bat());
System.out.println("I=" + b.i + " List Type:" + b.list.getClass());
}
}
|
class Thingie {
public static Thingie getDefaultThingie() {
return new Thingie();
}
}
public class Foo {
private final Thingie thingie;
public Foo() {
try {
thingie = new Thingie();
} catch (Exception e) {
thingie = Thingie.getDefaultThingie();//Error:The final field thingie may already have been assigned
}
}
}
|
public class Foo {
private final Thingie thingie;
public Foo() {
Thingie tempThingie;
try {
tempThingie = new Thingie();
} catch (Exception e) {
tempThingie = Thingie.getDefaultThingie();
}
thingie = tempThingie;
}
}
|
private final int VAL_ONE=9;
private static final int VAL_TWO=99;
public static final int VAL_THREE=999;
|
class Value {
int i;
public Value(int i) {
this.i = i;
}
}
public class FinalData {
private static Random rand = new Random();
private String id;
public FinalData(String id) {
this.id = id;
}
private final int i4 = rand.nextInt(20);
static final int i5 = rand.nextInt(20);
public String toString() {
return id + ":" + "i4:" + i4 + ", i5=" + i5;
}
public static void main(String[] args) {
FinalData fd1 = new FinalData("fd1");
System.out.println(fd1);
System.out.println("Creating new FinalData");
FinalData fd2 = new FinalData("fd2");
System.out.println(fd1);
System.out.println(fd2);
}
}
|
class Value {
int i;
public Value(int i) {
this.i = i;
}
}
public class … {
private Value v1=new Value(11);
private final Value v2=new Value(22);
private static final Value v3=new Value(33);
…
}
public static void main(String[] args) {
…
fd1.v2.i++;// OK--Object isn't constant!
fd1.v1=new Value(9);//OK--not final
fd1.v2=new Value(0);//Error:Can't change reference
fd1.v3=new Value(1);//Error:Can't change reference
…
}
|
public class … {
private final int[] a={1,2,3,4,5,6};
…
}
public static void main(String[] args) {
…
for(int i=0;i<fd1.a.length;i++)
fd1.a[i]++;// OK--Object isn't constant!
fd1.a=new int[3];//Error:Can't change reference …
}
|
// Not immutable -- the states array could be modified by a malicious
// callerpublic
class DangerousStates {
private final String[] states = new String[] { "Alabama", "Alaska", "ect" };
public String[] getStates() {
return states;
}
}
|
// Immutable -- returns an unmodifiable List insteadpublic
class SafeStates {
private final String[] states = new String[] { "Alabama", "Alaska", "ect" };
private final List statesAsList = new AbstractList() {
public Object get(int n) {
return states[n];
}
public int size() {
return states.length;
}
};
public List getStates() {
return statesAsList;
}
}
|
public class INClass {
void innerClass(final String str) {
class IClass {
IClass() {
System.out.println(str);
}
}
IClass ic = new IClass();
}
public static void main(String[] args) {
INClass inc = new INClass();
inc.innerClass("Hello");
}
}
|
本文出自 “子 孑” 博客,http://zhangjunhd.blog.51cto.com/113473/20664
转载于:https://www.cnblogs.com/adamzuocy/archive/2009/09/25/1573779.html
Java关键字介绍之final相关推荐
- Java 关键字—— static 与 final
static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被stat ...
- Java关键字介绍之this与super
1.什么是super?什么是this? super关键字表示超(父)类的意思.this变量代表对象本身. 2.使用super&this调用成员变量和方法 可以使用super访问父类被子类隐藏的 ...
- Java关键字this、super使用总结
2019独角兽企业重金招聘Python工程师标准>>> 一.this关键字 Java关键字this只能用于成员方法体内,它是一个系统隐含的指针且被自动附加在非静态的成员方法参数列表中 ...
- Java关键字final、static、this、super使用总结
一.final 根据程序上下文环境,Java关键字final有"这是无法改变的"或者"终态的"含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理 ...
- 转!Java关键字final、static使用总结
Java关键字final.static使用总结 一.final 根据程序上下文环境,Java关键字final有"这是无法改变的"或者"终态的"含义,它可以修饰非 ...
- [Java] 关键字final、static使用总结
一.final 根据程序上下文环境,Java关键字final有"这是无法改变的"或者"终态的"含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理 ...
- Java关键字final使用详解
2019独角兽企业重金招聘Python工程师标准>>> http://docs.oracle.com/javase/tutorial/java/IandI/final.html Wr ...
- Java提高篇 —— Java关键字之final的几种用法
一.前言 在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们来了解一下 ...
- 【java】java 关键字: final详解
1.概述 转载:java 关键字: final详解
最新文章
- 踩坑 :vue2 ajax异步请求数据,层数太多,页面无法渲染
- c#写图像tif gdal_C# GDAL显示TIF
- Solr在Weblogic中部署遇到的问题
- 如何编写Hadoop调度器
- J2ME手机游戏引擎程序结构简述
- 你这么喜欢敲代码,那么技术的乐趣在哪里?
- PLSQL连接远程Oracle出现ORA-12541: 无监听程序
- 与继承相关的一些重构(一)
- pandas中size方法_eplot,在pandas中流畅的使用pyecharts!
- 在线选课网站用什么服务器,高校网上选课系统 PC服务器替代小型机
- 软件测试 | 测试计划包含什么内容
- 手机驱动工程师门,准备转行了吗
- 远程拨号换IP的方法
- 次氯酸钠phP,次氯酸钠
- Spring cloud config 配置文件加密
- 10.5日饿了么复活了,大家凑合用用吧~(偶尔更新~)
- 日语输入法键盘假名对应表
- 码元,码元速率,波特率,比特率(个人理解总结)
- 截止2021年4月最全全国2800多个学校的图标logo打包,全国大学校徽logo
- c语言标准输入输出ppt,C语言版输入输出.ppt
热门文章
- Docker+Selenium Grid+Python搭建分布式测试环境
- (转载)(官方)UE4--图像编程----Parallel Rendering Overview
- ListIterator特有的方法
- iframe引用页面中的js操作父窗口标签
- 开机时进入 grub rescue>的解决方法
- 以ajax请求方式进行文件下载操作失败的原因及解决方案
- [JVM]线上CPU负载持续飙高的问题解决
- 解决IDEA中导入新的maven依赖后Language Level自动重置问题
- Struts2中采用Json返回List对象数据为空解决方案
- zsh:no matches found 问题解决