我已经得到了这个代码,我也得到了答案,但我不明白他们是如何出来的,特别是(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
答案 0 :(得分:2)
这是逻辑,因为 Java按值传递而不是按引用传递。
当您致电changeUs(x, y)
时,x
和y
将仅在方法中发生变化,为此您获得此结果。
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
是一个“静态”方法,不需要操作对象。