返回null和结果的Java
有人能看一下这个例子,告诉我为什么我得到的是空值10而不是仅仅10吗 这个程序有没有更简单的解决方案而不用全局字符串变量“word”返回null和结果的Java,java,Java,有人能看一下这个例子,告诉我为什么我得到的是空值10而不是仅仅10吗 这个程序有没有更简单的解决方案而不用全局字符串变量“word” 编辑:我需要使用从TextInput继承的内容您没有初始化输入,因此它是空的。您需要先初始化输入,才能使串联工作 因此,请使用以下命令: public static String word = ""; 您没有初始化输入,因此它是空的。您需要先初始化输入,才能使串联工作 因此,请使用以下命令: public static String word = ""; 您需
编辑:我需要使用从TextInput继承的内容您没有初始化
输入
,因此它是空的
。您需要先初始化输入
,才能使串联工作
因此,请使用以下命令:
public static String word = "";
您没有初始化
输入
,因此它是空的
。您需要先初始化输入
,才能使串联工作
因此,请使用以下命令:
public static String word = "";
您需要为静态
word
字段提供一个初始值,否则它将默认为null
。当Java连接字符串对象时,它会将null
引用视为文本字符串“null”。因此,您实际上总是以字符串“null”开头
如果将类字段的起始值设置为”
(空字符串),则代码应按预期执行
关于更好的方法,我会给这个类一个类型为
StringBuilder
的非静态字段(并初始化它,使其不为null
)。然后,您的add
方法可以简单地将(c)
新字符附加到StringBuilder
字段对象,这将比重复使用字符串连接(这是通过word+c
得到的)更有效。您需要为静态word
字段提供一个初始值,否则它将默认为null
。当Java连接字符串对象时,它会将null
引用视为文本字符串“null”。因此,您实际上总是以字符串“null”开头
如果将类字段的起始值设置为”
(空字符串),则代码应按预期执行
关于更好的方法,我会给这个类一个类型为
StringBuilder
的非静态字段(并初始化它,使其不为null
)。然后,您的add
方法可以简单地将(c)
新字符附加到StringBuilder
字段对象,这将比重复使用字符串连接(这是通过word+c
得到的)更有效.与其使用在TextInput类的所有实例和子类上共享的静态变量,不如使用实例变量
您仍然需要初始化一个非空值
那看起来像
public static class TextInput {
protected String word;
public TextInput() {
this.word = "";
}
public void add(char c) {
word = word + c;
}
public String getValue() {
return word;
}
}
为了更好地理解问题,请使用以下代码尝试您的代码
TextInput input = new TextInput();
input.add('a');
System.out.println(input.getValue());
TextInput input2 = new NumericInput();
input2.add('1');
input2.add('0');
System.out.println(input2.getValue());
另外,请参阅关于使用StringBuilder的@Bobulous注释,而不是使用在TextInput类的所有实例和子类上共享的静态变量,您应该使用实例变量 您仍然需要初始化一个非空值 那看起来像
public static class TextInput {
protected String word;
public TextInput() {
this.word = "";
}
public void add(char c) {
word = word + c;
}
public String getValue() {
return word;
}
}
为了更好地理解问题,请使用以下代码尝试您的代码
TextInput input = new TextInput();
input.add('a');
System.out.println(input.getValue());
TextInput input2 = new NumericInput();
input2.add('1');
input2.add('0');
System.out.println(input2.getValue());
另外,请参阅关于使用StringBuilder的@Bobulous注释,因为您没有初始化“word”
您没有初始化“单词”
word=word+c
第一次调用add
,word
是null
,因为您从未初始化过它,所以word
变成null
加上您调用的add
。word=word+c
第一次调用add
,word
是null
,因为您从未初始化过它,所以word
变成null
加上您所调用的add
。