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.
方法里必需声明赋值。
String类型成员变量自动初始化为null
title = title+ "World";
当执行这一句时,null转换成字符串"null"再连接上World