这个语法错误是什么来的?

时间:2015-01-10 12:10:07

标签: java

当我试图在我的标签中打印每个元素时,我会得到这种语法: 为什么?感谢

public class Solo {
public int val;

public Solo(int val){
    this.val=val;
}


public static void print(Solo[] tab){
    for (Solo s : tab) {
        System.out.println(s);
    }


Solo s1 = new Solo (1);
    Solo s2 = new Solo (2);
    Solo s3 = new Solo (3);
    Solo s4 = new Solo (4);

    Solo[] tab = {s1,s2,s3,s4}; 
    print(tab);

输出:

cours4.Solo@15db9742
cours4.Solo@6d06d69c
cours4.Solo@7852e922
cours4.Solo@4e25154f

5 个答案:

答案 0 :(得分:0)

cours4.Solo@15db9742 cours4.Solo@6d06d69c cours4.Solo@7852e922 cours4.Solo@4e25154f

是你的实例化对象, 执行此操作以打印对象属性:

public static void print(Solo[] tab){
    for (Solo s : tab) {
        System.out.println(s.val);
    }

答案 1 :(得分:0)

这些都是对象而不是变量。您应该打印变量

所以使用

 System.out.println(s.val);

答案 2 :(得分:0)

您已创建Solo对象并将其添加到Solo类型的Array中,然后打印Array对象。 从根本上说,你做错了。如果要打印对象,则必须调用Object类的toString()或覆盖类Solo中的toString()方法,如下所示。我相信它会奏效。

    public String toString() {
        return val+"";
    }

答案 3 :(得分:0)

您正在尝试打印Object s。 s1s2s3s4是对象。如果您尝试打印Object,则会打印Object的参考(地址)。这不是语法错误。

如果要打印对象中的值,则应覆盖toString()类中的Solo方法。

public String toString() {
    return "Value:" + val;
}

然后会打印出来:

Value:0
Value:0
Value:0
Value:0

因为您没有使用值初始化对象。但是,您在创建对象时调用了默认构造函数,int字段的默认值为0.

答案 4 :(得分:-1)

s1,s2,s3和s4是打印对象地址的对象,用于打印访问变量所需的值