java - 为什么当方法的返回作为参数传递给其他方法时首先调用方法?

标签 java

我创建了两个名为 clz1(main) 和 clz2 的类。

clz1:

public class clz1 {

    public static void main(String[]args){
        clz2 clz2object=new clz2();
        clz2object.display();
    }

    ...

}

clz2:

import java.util.Scanner;

public class clz2 {

    input=new Scanner(System.in);

    public String print1(){
        System.out.print("What is your name:");
        String a=input.next();
        return a;
    }

    public String print2(){
        System.out.print("What is your girlfriend's name:");
        String b=input.next();
        return b;
    }

    public void display(){
        System.out.println("Your name is "+print1()+" & your girlfriend's name is "+print2());
    }

}

输出是这样的:

What is your name:aaa
What is your girlfriend's name:www
Your name is aaa & your girlfriend's name is www

这怎么可能?我没有调用 print1()print2() ... 首先应该打印 "your name is"和 print1() 。 ...然后 “你女朋友的名字是”和 print2() ...不是吗?

最佳答案

System.out.println("Your name is "+print1()+" & your girlfriend's name is "+print2());

您确实调用了 print1() 和 print2()。 Java 首先处理括号中的代码,然后打印它。 它非常像:

System.out.println(1+1);

它先处理'1+1',然后再打印。

关于java - 为什么当方法的返回作为参数传递给其他方法时首先调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20112262/

相关文章:

java - 如何将一个对象数组的一部分复制到另一个对象数组

java - Kafka 生产者无法发送消息,出现 NOT_LEADER_FOR_PARTITION 异常

java - 为什么 Vert.x 每个线程附加 2 个事件循环

java - WebSphere MQ 调用失败,compcode '2' ('MQCC_FAILED' ) 原因 '2058' ('MQRC_Q_MGR_NAME_ERROR' )

java - 如何在单元测试中用内容数据模拟页面?

Java 连接到 MySql 数据库,NullPointerException

java - 找不到类型为 : class org. json.JSONArray 的返回值的转换器

java - Heroku - git 存储库分支目的地

java - 使用 liferay 6.1 安排作业

java - Maven 资源目录是放置您将在程序期间读取的 xml/json 文件的好地方吗?