关于空白final 的赋值和思考
2015-12-18 18:33
330 查看
所谓空白final 是指声明为final但未给定初始值的域
空白final可在定义处或构造器中或创建对象时赋值
如果一个类有多个空白final不可建多个构造器进行赋值 只能再一个构造器中赋值否则会显示另一个空白final未定义
代码如下:
i2=构造器中赋值
i=创建对象时赋值
a=2
运用空白final在创建两个不同的对象时 a有什么变化?
number-->3
---------
number-->10
为什么number会变成10?不是说final修饰的是不可以改变的吗!
通过debug可知 a的变化
a是成员变量默认值为0
a的值并不是从3--->10的,因为创建对象时会分配新的内存块,而a实际是两个地址不同名称相同的变量 所以并不是a的值改变了
空白final可在定义处或构造器中或创建对象时赋值
如果一个类有多个空白final不可建多个构造器进行赋值 只能再一个构造器中赋值否则会显示另一个空白final未定义
代码如下:
public class ewq { final private String i; final private String i2; final private Integer a; public ewq(String ii, Integer x) { i2 = "构造器中赋值"; i = ii; a = x; } // 只能用一个构造器 用两个构造器会显示另一个空白final未定义 /* * public ewq(String ii){ i=ii; } */ // 重写 toString方法,运用 + 将integer 类型转换为 string public String toString() { return "i2=" + i2 + "\ni=" + i + "\na=" + a; } public static void main(String[] args) { System.out.println(new ewq("创建对象时赋值", 2).toString()); } }结果:
i2=构造器中赋值
i=创建对象时赋值
a=2
运用空白final在创建两个不同的对象时 a有什么变化?
public class ewq2 { final private int a; public ewq2(int x) { a = x; // a++; 错误 a并不能改变 } public int toInteger() { return a; } public static void main(String[] args) { ewq2 w = new ewq2(3); System.out.println("number-->" + w.toInteger()); System.out.println("\n---------"); ewq2 w2 = new ewq2(10); System.out.println("number-->" + w2.toInteger()); } }结果:
number-->3
---------
number-->10
为什么number会变成10?不是说final修饰的是不可以改变的吗!
通过debug可知 a的变化
ewq2 w = new ewq2(3); a: 0-->3
<pre name="code" class="java">ewq2 w2 = new ewq2(10); a: 0-->10
a是成员变量默认值为0
a的值并不是从3--->10的,因为创建对象时会分配新的内存块,而a实际是两个地址不同名称相同的变量 所以并不是a的值改变了
相关文章推荐
- Android 判断字符串是否是身份证、邮箱、银行卡、手机号、中文
- IOS高仿三九脑科医院综合查询系统-列表查询+切换+代理传值+打开视图
- 上拉加载实现
- oracle plsql User/system dsn
- 解决apache+tomcatserver环境中文乱码的问题
- 《C prime plus (第五版)》 ---第11章 字符串和字符串函数---4
- Redis 突然报错 NOAUTH Authentication required
- XML XSD 元素无序的问题
- Scala-maven-plugin and Multiple Versions of Scala Libraries Detected
- Magento 1.9.x 暴力换密码
- 2783: [JLOI2012]树
- Shell 字符串比较
- MySQL索引的创建、删除和查看
- 语言模型srilm(一) 基本用法
- STM323中低功耗模式
- 极盗者-带你领略八项极限挑战(含代码)
- UIScrollView(Auto Layout)
- Android 工具类 - Log
- Java基础--多线程02
- How to set field values using Java reflection