为什么我的代码在java中输出package.class@letternumbers?

时间:2017-03-01 10:16:53

标签: java performance class methods output

按照惯例,我想注意我是一个初学者,如果我没有使用正确的术语,请提前抱歉。

我做了什么:

我创建了一个方法,它在一个单独的类中输出一个配方。在主类中,我创建了一个从另一个类调用该方法的对象。

来自main:

{"articles":
[{"articleId":"1",
"articleName":"<\/head> Some text<\/body><\/html>"},
{"articleId":"2","articleName":"<\/head>Some Text Again<\/body<\/html>"}

来自其他班级:

Breakfast recipeName2 = new Breakfast();
recipeName2.frenchToast();  
System.out.println(recipeName2);

问题:

认为食谱输出正确,出于某种原因,最后还添加了: ingredients.Breakfast@1f96302

我不确定它是什么或如何摆脱它。我尝试以不同的方式更改我的代码,例如更改我在 system.out.ln()参数中添加的内容,但它却搞砸了我的代码。我有预感这种情况正在发生,因为某些东西通过其他东西传递,但我试图改变我编写代码的方式无济于事。

如果有人能帮助我,我将非常感激。我继续我的项目,因为从技术上讲我的代码是有效的,但我对此感到困惑,并且真的想知道它为什么会发生。

由于

2 个答案:

答案 0 :(得分:1)

您的错误是由于下面的行System.out.println(recipeName2);我已经展示了如何分别在frenchToast()frenchToast2()中使用void或String:

class Main {
  public static void main(String[] args) {
    Breakfast recipes = new Breakfast();
    recipes.frenchToast();
    System.out.println(recipes.frenchToast2());
  }
}

class Breakfast {
  public void frenchToast(){
    StringBuilder sba = new StringBuilder("For French toast you will need:\n ");
    sba.append("Eggs\n ");
    sba.append("Bread\n ");
    sba.append("Cinnamon\n ");
    sba.append("Vanilla ");
    System.out.println(sba.toString());
  }

  public static String frenchToast2(){
    StringBuilder sba = new StringBuilder("For French toast you will need:\n ");
    sba.append("Eggs\n ");
    sba.append("Bread\n ");
    sba.append("Cinnamon\n ");
    sba.append("Vanilla ");
    return(sba.toString());
  }
}

等效输出:

For French toast you will need:
 Eggs
 Bread
 Cinnamon
 Vanilla 
For French toast you will need:
 Eggs
 Bread
 Cinnamon
 Vanilla 

试试here!

答案 1 :(得分:0)

您的早餐课程不会覆盖toString()方法。因此,当您打印早餐对象时,它将使用Object::toString方法,该方法在Java堆中打印“标识符@”。

最好回顾一下你的对象模型,但是一个简单的修复就是让FrenchToast成为一个扩展Breakfast(或者如果你使Breakfast成为接口的实现)的类,然后将strings放在toString方法中

像这样:

public interface Breakfast {}

public class FrenchToast implements Breakfast {

    @Override
    public String toString() {
        StringBuilder sba = new StringBuilder("For French toast you will need:\n ");
        sba.append("Eggs\n ");
        sba.append("Bread\n ");
        sba.append("Cinnamon\n ");
        sba.append("Vanilla ");

        return sba.toString();
    }
}