我正在编写一个简单的小程序程序,它接受用户的输入并显示它们。 `
public void init(){
text1=new TextField(8);
add(text1);
text1.setText("0");
}
public void paint(Graphics g){
int x=0;
String s1,str = null;
g.drawString("input in the box",10,50);
try{
s1=text1.getText();
str=String.valueOf(s1);
}
catch(Exception e){}
g.drawString(str,75,75);
}
public boolean action (Event event,Object object){
repaint();
return true;
}
` 在paint()方法中,为什么必须将str变量声明为null,而声明另一个字符串变量s1而不初始化就可以了? 如果没有初始化 str 变量,IT 不会编译。
最佳答案
因为你只在保证有值的地方使用了s1
的值,但是你在一个地方使用了str
(catch
handler),如果您不预先将其初始化为某个值,则不能保证它具有值,因为毕竟,在 try< 中可能会引发异常
在分配给 str
之前。
如果您将对 g.drawString(str,75,75);
的调用移至 try
中,则不需要= null
初始值设定项。
旁注:s1
已经是一个字符串,因此无需执行 str = String.valueOf(s1)
。只需在 g.drawString(str,75,75);
行中使用 s1
即可。
关于java - 为什么在java中声明String变量时需要初始化而有时不需要初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43874477/