【问题标题】:Java return arraysJava 返回数组
【发布时间】:2011-03-17 09:19:06
【问题描述】:

我无法从自定义方法返回数组。它编译得很好,但我回来了:

[Ljava.lang.String;@20cf2c80
Press any key to continue . . .

我使用:

System.out.println(getItem(1));

代码:

public static String[] getItem(int e) {

String[] stats = new String[7];

            String name = "Null";
            String desc = "None";
            String typeOf = "0";
            String attackAdd = "0";
            String defenseAdd = "0";
            String canSell = "true";
            String canEat = "false";
            String earnedCoins = "0";



            if (e == 1) {

        name = "Pickaxe";
        desc = "Can be used to mine with.";
        typeOf = "2";
        }

      return new String[] { name, desc, typeOf};

    }

帮助? :\

【问题讨论】:

    标签: java arrays return tostring


    【解决方案1】:

    开启Object.toString()

    您得到这样的字符串的原因是因为数组只是继承而不是 @Override Object.toString() 方法。

    class ObjecttoString 方法返回一个字符串,该字符串由对象作为其实例的类的名称、@ 符号字符 @ 和哈希码的无符号十六进制表示组成。目的。换句话说,这个方法返回一个字符串等于:

     getClass().getName() + '@' + Integer.toHexString(hashCode())
    

    要返回列出其元素的数组的String 表示,您可以使用例如Arrays.toString,对于“多维”数组Arrays.deepToString

    相关问题

    对于“多维”数组,在 deepEqualsdeepToString 上:


    关于定义自己的类型

    需要说明的是,你对String[]的使用并不是最好的设计选择。

    如果您定义了自己的 class BasicItem 并由各种 enum 支持,并且具有尽可能多的 final 字段以强制执行不变性,事情会好得多;也许是这样的:

    public enum ItemType {
       KNIFE, SWORD, AXE;
    }
    public enum Attribute {
       SELLABLE, EDIBLE;
    }
    
    public class BasicItem {
    
       final String name;
       final String desc;
       final ItemType type;
    
       final int attackAdd;
       final int defenseAdd;
    
       final Set<Attribute> attributes;
       //...
    }
    

    您应该真正利用良好的面向对象设计的所有好处。

    另见

    【讨论】:

      【解决方案2】:

      这不是错误。 JVM 只打印数组的地址,因为它不打印其内容。试试这个,看看现在会发生什么?

      System.out.println(getItem(1)[0]);
      

      【讨论】:

        【解决方案3】:

        数组对象的toString() 方法实际上并没有通过并产生数组内容的字符串表示,这是我认为您想要做的。为此,您需要Arrays.toString()

        System.out.println(Arrays.toString(getItem(1)));
        

        符号[Ljava.lang.StringString 数组的Java 代码- 通常,数组的默认字符串表示为[L,后跟数组元素的类型。然后你会得到一个分号和数组的内存地址(或某种本地唯一 ID)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-13
          • 2016-07-10
          • 2014-12-14
          • 1970-01-01
          • 1970-01-01
          • 2011-08-21
          相关资源
          最近更新 更多