回 帖 发 新 帖 刷新版面

主题:[讨论]有个问题帮忙看哈谢谢

public class Test
{
    public static String green;
    public static boolean  on;
    public static void main(String args[])
    {
    
        Fan f=new Fan();
        f.setspeed(10);
        f.setradius(10);
        f.setcolor(green);
        f.seton(on);
          System.out.println(f.tostring());
    }
}
改成了
public class Test
{
     
    public static void main(String args[])
    {
        [color=FF0000]String green;
                boolean  on;[/color]
    
        Fan f=new Fan();
        f.setspeed(10);
        f.setradius(10);
        f.setcolor(green);
        f.seton(on);
          System.out.println(f.tostring());
    }
}
后运行为什么就说上面两个变量没有被实例化

回复列表 (共7个回复)

沙发

你定义的String green; boolean  on;没有被初始化。作为成员变量,Java会默认对其进行初始化,但写在方法里面,就不会了。

板凳


java中,静态变量java虚拟机会自动初始化一个默认值。而非静态变量则不会,所以就出现了你的问题了

3 楼

改成这样吧:  
public String firstName()
    {
        int a=fullName.indexOf(" ");
        
        firstName=fullName.substring(0,a);
        return fullName.substring(0,a);
    }

4 楼

非static方法可以调用static value,
而static方法只能调用static value。

5 楼

JAVA 是强类型语言,所有的变量必须先定义并初始化才能使用。
但如果是属性,会根据每个不同的数据类型赋予默认值。所有引用类型为null,boolean为false。

6 楼

[quote]你定义的String green; boolean  on;没有被初始化。作为成员变量,Java会默认对其进行初始化,但写在方法里面,就不会了。[/quote]

同意!

7 楼

String green; boolean  on

如果这样,请给它初始化,系统不会给它默认值的

我来回复

您尚未登录,请登录后再回复。点此登录或注册