`x +"的含义" + y`和`changeUs(x,y)`

时间:2017-04-22 17:16:38

标签: java

我已经得到了这个代码,我也得到了答案,但我不明白他们是如何出来的,特别是(x+" "+y)部分的含义以及changeUs(x, y),任何人都可以解释一下吗?

public class ChangeParam {

    public static void main(String[] args) {
        int x = 1;
        double y = 3.4;
        System.out.println(x+" "+y);
        changeUs(x, y);
        System.out.println(x+" "+y);        
    }

    public static void changeUs(int x, double y) {
        x = 0;
        y = 0.0;
        System.out.println(x +" "+y);
    }
}

答案是:

1 3.4

0 0.0

1 3.4

3 个答案:

答案 0 :(得分:2)

这是逻辑,因为 Java按值传递不是按引用传递

当您致电changeUs(x, y)时,xy将仅在方法中发生变化,为此您获得此结果。

public static void main(String[] args) {
    int x = 1;
    double y = 3.4;
    System.out.println(x+" "+y);//<<-------- 1- This will print 1 3.4
    changeUs(x, y);
    System.out.println(x+" "+y);//<<-------- 3- This will print 1 3.4        
}

public static void changeUs(int x, double y) {
    x = 0;
    y = 0.0;
    System.out.println(x +" "+y);//<<-------- 2- This will print 0 0.0
}

答案 1 :(得分:0)

您应该阅读并学习教程和Java语言规范。诸如+之类的运算符的语义是首先解释的。在那里你会发现,当+的任一操作数的类型为String时,另一个操作数通过对String的隐式调用转换为String.valueOf,从而构成整体表达一个String串联。

答案 2 :(得分:0)

System.out.println() - 这里,println是一个方法,它接受String类型作为参数(String或已转换为String的类型)。
所以,我们传递一个String。但是,你要展示两件事(x和y),你将如何做到这一点? 在java中,当操作数是String类型时,'+'运算符充当连接运算符,因此x+" "+y将'x'和'y'组合在一起,其中包含空格。
因此,如果x="HELLO"y="WORLD",则x+y将为HELLOWORLD
在两者之间留出空间,x+" "+y将为我们提供更清晰,更易读的答案:HELLO WORLD

其中

changeUS()

是一个方法(特别是一个静态方法),它接受两个参数(很像一个需要两个参数的数学函数)。

所以,我们将两个“东西”传递给函数。现在,我如何知道该功能需要两个参数?要知道我必须知道函数的定义。如我所见,该函数定义为:

public static void changeUs(int x, double y) {
x = 0;
y = 0.0;
System.out.println(x +" "+y);}


第一行:enter code here: public static void changeUs(int x,double y)which says that changeUs takes int和double`作为参数。


因此,传递一个整数和一个浮点数(double是一个更高精度的浮点数)。
但是,我们为什么要做System.out.println,但对于changeUs,我们只是在没有任何前缀的情况下调用它? 这是因为changeUs是一个“静态”方法,不需要操作对象。