Re: [问题] xxx = null

楼主: NullLife (废材大叔有点累)   2014-07-20 00:49:54
※ 引述《dharma (达)》之铭言:
: 问个弱弱的问题
: Java很多时候都会出现 XX YYY = null;
: 例如下面例子
: 原因是什么啊
: thank
: public class Main {
: public static void main(String args[]) {
: JFrame frame = new JFrame("Welcome");
: String picPath = "C:\\xxx.jpg";
: Icon icon = new ImageIcon(picPath);
: JLabel lab = null;
: JLabel lab = new JLabel("", icon, JLabel.CENTER);
: 省略
: }
: };
不给定初始值无法使用~
但说一个最近我才发现的事情,
那就是如果是全域变量,并且有final修饰词的时候,
可以在建构子里头给定第一次的reference,例如:
class A {
final String kerker;
public A(String kerker) {
this.kerker = kerker;
}
}
所以如果你一开始就写 final String kerker = null;
你后续就不可能让kerker去参照其他的refence了
因为有一次我在写物件的时候,就觉得很奇怪,
为什么我final的变量一定要宣告的时候马上给值,
不能new整个物件的时候再来决定吗?
所以无意间被我try出来 XD
不过我又继续想那static的field是否能在static{}里头处理?
结果是不行,所以我想了想才觉得有点笨,
既然static又final了,那一定有初始值才能提供给其他物件使用。
以上一点心得分享。
作者: dream1124 (全新开始)   2014-07-20 01:14:00
我猜final的变量可以在静态起始区域才给初始值,试试看吧
作者: cha122977 (CHA)   2014-07-20 01:38:00
A.kerker的时候A还没初始化好 所以不能这样写
作者: dharma (達)   2014-07-20 20:22:00
待理解
作者: kiwatami (悠游自在)   2014-07-20 23:49:00
我也是学了builder pattern之后才知道可以在建构子里初始化final修饰的变量值XD
作者: PttTime   2014-07-24 19:24:00
同一楼, 只要A.就会立刻执行A里的static {...}了

Links booklink

Contact Us: admin [ a t ] ucptt.com