返回语句的字符串数组给出奇怪的结果

时间:2015-05-05 18:31:54

标签: java arrays string return system.out

我正在创建一个String数组并使用System.out.println来打印数组中的值。所有的好,并按预期工作,返回[南非,英格兰]但代码将不会编译,除非我包含一个return语句,但return语句只是抛出一堆垃圾“[Ljava.lang.String; @ 85bdf6” 。有没有什么方法可以将System.out.println和return语句结合起来,这样他们就可以做同样的事了,我只是出现了[南非,英格兰]?

   public String[] teamsToProgress()
  { 
    Arrays.sort(teams);
    String[] teamsToProgress;
    teamsToProgress = new String[2];
    String team1 = teams[0].getName();
    String team2 = teams[1].getName();
    teamsToProgress[0] = team1;
    teamsToProgress[1] = team2;
    System.out.println(Arrays.toString(teamsToProgress));
    return teamsToProgress;
  }

2 个答案:

答案 0 :(得分:2)

那是因为你有each作为返回类型。将其更改为String[],它将编译得很好。您可以阅读here'垃圾'void的含义。

答案 1 :(得分:1)

  

但是return语句只是抛出一堆垃圾“[Ljava.lang.String; @85bdf6”

这不是返回语句,这就是你对返回值的处理方式。 很可能你用过

System.out.println(teamsToProgress());

相反,您应该已经完成​​了teamsToProgress()已经完成的工作。

System.out.println(Arrays.toString(teamsToProgress()));

在第一种情况下,您打印数组的toString()方法返回的内容(某些类型信息和哈希代码),在第二种情况下,您打印数组的内容。

一般来说,最好从System.out.println(...)中删除teamsToProgress()并打印返回值 - 或者返回值void,在这种情况下找到更好的名称像void printTeamsToProgress()这样的方法,因此方法的意图变得更加清晰。