Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何正确调用返回引用类型的方法?_Java_Methods_Return_Reference Type - Fatal编程技术网

Java 如何正确调用返回引用类型的方法?

Java 如何正确调用返回引用类型的方法?,java,methods,return,reference-type,Java,Methods,Return,Reference Type,我正在阅读有关返回引用类型结果的方法的Oracle Java教程,但已经被困了好几个小时。这里提供了链接 公共级自行车{ 私用整数速度=0; 公共自行车(INTA){ 速度=a; } 公共静态自行车见谁最快(自行车1、自行车2){ 自行车最快=自行车1; if(自行车1.速度

我正在阅读有关返回引用类型结果的方法的Oracle Java教程,但已经被困了好几个小时。这里提供了链接

公共级自行车{
私用整数速度=0;
公共自行车(INTA){
速度=a;
}
公共静态自行车见谁最快(自行车1、自行车2){
自行车最快=自行车1;
if(自行车1.速度<自行车2.速度){
最快=自行车2;
}
返回速度最快;
}
公共静态void main(字符串[]args){
第一辆自行车=新自行车(100);
自行车二手车=新自行车(200);
自行车。参见最快的人(第一辆自行车,第二辆自行车);
}
}
然而,我无法让它按预期工作。我希望至少打印出
bicycle2
对象,但没有显示任何内容


你们能帮我一下吗?提前谢谢。

你们没有打印任何东西;你所做的只是机械地计算出哪个
Bicycle
entity最快的结果

为了看到结果,您需要做两件事:

  • System.out.println
    call将行
    Bicycle。请参见谁最快(第一辆自行车,第二辆自行车)
  • Bicycle
    中执行
    toString
    ,这样您就不会得到无用的信息
toString
方法很简单:

@Override
public String toString() {
    return "Bicycle, with speed " + speed;
}

考虑到静态seeswhosfastest方法返回自行车引用类型,您可以编写:

public static void main(String[] args) {

        Bicycle firstBicycle = new Bicycle(100);
        Bicycle secondBicycle = new Bicycle(200);
        Bicycle fastestBike = Bicycle.seeWhosFastest(firstBicycle, 
secondBicycle);
        System.out.println(fastestBike);
}
为了打印有意义的内容,您需要使用类似于@Makato示例的内容覆盖Bicycle类中的toString方法

根据您的评论进行编辑:

首先,将第二个成员变量添加到自行车类中,类似于:

private String reference;
然后添加一个toString方法(也在Bicycle类中)

现在将自行车构造器更新为

public Bicycle(int speed, String reference) {
    this.speed = speed;
    this.reference = reference;
}
现在按如下方式更改您的主要方法:

public static void main(String[] args) {

        Bicycle firstBicycle = new Bicycle(100, "Bicycle1");
        Bicycle secondBicycle = new Bicycle(200, "Bicycle2");
        Bicycle fastestBike = Bicycle.seeWhosFastest(firstBicycle, 
secondBicycle);
        System.out.println(fastestBike);
}
它应该像预期的那样工作


希望这有帮助

我希望至少能打印出怎么做?你在哪里做的?你认为为什么会这样?为什么你对没有显示任何内容感到惊讶?你是否存储了
Bicycle的结果。请参阅谁最快(firstBicycle,secondBicycle)你在哪里测试过这个代码?@Pavlin你好,Pavlin很抱歉,我在这里努力学习,但我总是感到困惑。呃,我的假设是,通过调用该方法,它将
以最快的速度返回
,并将bicycle2打印到屏幕上!为什么我们需要实现toString()?我以为已经有默认的了?另一个问题是我们是否能够打印出对象变量(bicycle2)而不是它的速度变量?再次感谢!你好,阿兰伦波,我想这里的每个人都在帮助我,你的帮助最接近我的意图。非常感谢你的帮助!但它打印出来的是对象的内存地址。是否可以打印出
Bicycle2
对象@为了避免占用内存地址,只需重写Bicycle class a中的toString方法即可返回重要信息。要打印Bicycle2之类的内容,最好在Bicycle类中添加第二个字段,并通过toString方法返回。让我编辑我的答案
public Bicycle(int speed, String reference) {
    this.speed = speed;
    this.reference = reference;
}
public static void main(String[] args) {

        Bicycle firstBicycle = new Bicycle(100, "Bicycle1");
        Bicycle secondBicycle = new Bicycle(200, "Bicycle2");
        Bicycle fastestBike = Bicycle.seeWhosFastest(firstBicycle, 
secondBicycle);
        System.out.println(fastestBike);
}