Java中的调用方法问题
public class Tester {
private String text;
public void text() {
text = "abc";
}
public static void main(String[] args) {
Tester test = new Tester();
System.out.println(test.text);
}
}
为什么要打印null
?另外,如果我在print命令中写入test.text()
,为什么会出现错误?我想我需要像那样调用这个方法
# 1 楼答案
字符串对象在构造时被分配
null
——也就是说,当您声明new Tester()
时,text
字段被分配null
。这是所有对象类型的默认值,所有基本体都被指定为零(如果基本体是布尔值,则为false)没有为它分配任何内容,打印
null
的默认行为是打印文本"null"
至于你的第二个问题——这不起作用的原因:
text()
是返回void
或不返回任何内容的方法调用。方法调用不会返回任何结果,因此无法打印任何内容您希望在任何打印语句之前将调用移动到
text()
,以便正确填充该字段:。。。对于这样的事情,有一个约定:如果希望在构造时填充字段,请创建一个接受它作为参数的构造函数
构建它时,不需要担心对
text()
的任何无关调用;只需打印字段# 2 楼答案
null
因为private String text;
是null
,因为您没有调用public void text()
来设置String text
的值打印前打电话给
text()
输出:
PS.
根据评论=>“我能直接写System.out.println(test.text())吗?”
对于该集合
return
键入String
并从中返回String
所以把你的代码改成
及
输出:
# 3 楼答案
它正在打印null,因为所有类类型的默认值都为null,您尚未设置文本,仍在尝试打印。 如果您想打印abc,请遵循以下任一方法
# 4 楼答案
您应该首先调用
test.text();
来给test一个值# 5 楼答案
因为
text
是一个类变量,所以它默认初始化为null。如果它是int
,那么它将被初始化为0在您的程序中,您没有调用
text()
,因此文本的值不会改变。现在在main方法中,您正在打印文本,因此它的打印^{如果我写测试的话。text()在print命令中,为什么会出现错误
这是因为
text()
的返回类型为void