java - 为什么在java中声明String变量时需要初始化而有时不需要初始化?

标签 java string initialization applet paint

我正在编写一个简单的小程序程序,它接受用户的输入并显示它们。 `

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/

相关文章:

java - 如何用LinkedHashMap制作一个ArrayList来解决 "issue"?

java - GUI 从另一个类访问 JSlider

java - Android - 如何创建可点击的 ListView ?

java - 在 Spring MVC 中选择性地绑定(bind)属性

python - 无法停止项目源代码中的循环

c++ - 考虑到干净代码的性能,什么更好

C++从多行字符串中删除新行

javascript - 是的正则表达式匹配器

arrays - C 指针数组与其他指针数组的元素

c++ - 如何使用类似 Type() 的语法对 Type* 指针进行值初始化?