Java:为什么这些变量不能初始化?

时间:2009-07-22 19:46:41

标签: java

我正在研究布鲁斯·埃克尔(Bruce Eckel)的书中的一个例子,我想知道为什么输出时初始化值不会粘住?

class InitialValues2 { 
    boolean t = true;
    char c = 'x';
    byte b = 47;
    short s = 0xff;
    int i =999; 
    long l =1;
    float f = 3.14f;
    double d =3.14159;
    InitialValues reference; 



    void printInitialValues() { 
        System.out.println("data type       Initial values");
        System.out.println("boolean     " + t); 
        System.out.println("char        [" + c + "]"); 
        System.out.println("byte        " + b); 
        System.out.println("short       " + s); 
        System.out.println("int         " + i); 
        System.out.println("long        " + l); 
        System.out.println("float       " + f); 
        System.out.println("double      " + d);
        System.out.println("reference       " + reference);

    } //end printinitialvalues

    public static void main(String args[]) { 
        InitialValues iv = new InitialValues(); 
        iv.printInitialValues();

        //new InitialValues().printInitialValues();

    } //end main 

}

所有变量输出0和空值。

5 个答案:

答案 0 :(得分:9)

我看到一个问题。变量在名为InitialValues2的类中声明,但是您在InitialValues类型的对象上调用printInitialValues()方法。您似乎永远不会调用printInitialValues()方法。

答案 1 :(得分:4)

class InitialValues { 
    boolean t = true;
    char c = 'x';
    byte b = 47;
    short s = 0xff;
    int i =999; 
    long l =1;
    float f = 3.14f;
    double d =3.14159;
    InitialValues reference; 



    void printInitialValues() { 
        System.out.println("data type           Initial values");
        System.out.println("boolean             " + t); 
        System.out.println("char                [" + c + "]"); 
        System.out.println("byte                " + b); 
        System.out.println("short               " + s); 
        System.out.println("int                 " + i); 
        System.out.println("long                " + l); 
        System.out.println("float               " + f); 
        System.out.println("double              " + d);
        System.out.println("reference           " + reference);

    } //end printinitialvalues

    public static void main(String args[]) { 
        InitialValues iv = new InitialValues(); 
        iv.printInitialValues();

        //new InitialValues().printInitialValues();

    } //end main 
}

你的班叫做InitialValues2你应该把它重命名为InitialValues。

答案 2 :(得分:3)

您的类名是InitialValues2,但您正在创建一个InitialValues对象。将“InitialValues iv = new InitialValues()”替换为“InitialValues2 iv = new InitialValues2()”

答案 3 :(得分:3)

在主要方法中,您要创建新的 InitialValues ,而不是 InitialValues2 (已发布的类)。

答案 4 :(得分:2)

您正在创建一个InitialValues对象并为其调用构造函数。但是你想要的值是在InitialValues2类中。我猜是有一些复制意大利面错误正在发生。

我可能会建议您将主要方法更改为:

public static void main(String args[]) { 
    InitialValues2 iv = new InitialValues2(); 
    iv.printInitialValues();
}