“x+”“+y”和“changeUs(x,y)”的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
# 1 楼答案
您应该阅读并学习本教程和Java语言规范。诸如
+
之类的运算符的语义是最先解释的内容之一。在这里,你会发现当+
的任何一个操作数的类型为String
时,另一个操作数通过对String.valueOf
的隐式调用转换为String
,使整个表达式成为String
串联# 2 楼答案
System.out.println()
-这里,println是一个方法,它接受字符串类型作为参数(字符串或已转换为字符串的类型)所以,我们传递一个字符串。但是,你有两件东西要显示(x和y),你会怎么做呢
在java中,当操作数是字符串类型时,
'+'
运算符充当串联运算符,因此x+" "+y
将把“x”和“y”与中间的空格组合起来所以,如果
x="HELLO"
和y="WORLD"
,那么x+y
将是HELLOWORLD
。在两者之间留出一个空格,
x+" "+y
将给我们一个更清晰、更可读的答案:HELLO WORLD
在哪里
是一种接受两个参数的方法(特别是静态方法)(非常像需要两个参数的数学函数)
因此,我们将两个“东西”传递给函数。现在,我怎么知道函数需要两个参数?要知道,我必须知道函数的定义。如我所见,该函数定义为:
第一行:
enter code here:
public static void changeUs(int x,double y)which says that changeUs takes
int和double`作为它们的参数所以,传递一个整数和一个浮点数(double是一个更高精度的浮点数)。
但是,为什么我们要做
System.out.println
但是对于changeUs
我们只是称之为没有任何前缀? 这是因为changeUs
是一种“静态”方法,不需要对象来操作# 3 楼答案
这是逻辑,因为Java通过值传递,而不通过引用传递
当你调用
changeUs(x, y)
时,x
和y
只会在方法中改变,因此你会得到这个结果