读书人

关于对象初始化这是否一个Bug啊

发布时间: 2013-02-20 12:23:22 作者: rapoo

关于对象初始化,这是不是一个Bug啊?

package com.xujin;

class Hello {
String title;
int value;
public Hello() {
title = title+ " World";
}
public Hello(int value) {
this();
this.value = value;
title += "Hello";
}
}

public class Test{
public static void main(String [] args){
Hello c = new Hello(5);
System.out.println(c.title);

String s;
//s = s + "Hello!";//The local variable s may not have been initialized
}
}


我还没初始化title就用它了,居然没报错!
而s却报错了!奇怪了! string java
[解决办法]
类变量是不需要初始化的,没有初始化的类变量在类初始化时会被自动分配应有的初始值,而局部变量在调用时必须先初始化。
[解决办法]
这不是bug.
成员变量会在创建对象的时候赋值,开始赋默认值,象上面代码title为null.追溯完父类后,在执行构造方法前,再显示赋值,上面代码没有显示赋值,仍旧是null.
方法里必需声明赋值。
[解决办法]
引用:
引用:
类变量是不需要初始化的,没有初始化的类变量在类初始化时会被自动分配应有的初始值,而局部变量在调用时必须先初始化。那为什么会输出nullWorldHello,而不是WorldHello呢?

String类型成员变量自动初始化为null
title = title+ "World";
当执行这一句时,null转换成字符串"null"再连接上World

读书人网 >J2SE开发

热点推荐