package javaapplication1;
public class PassString {
public static void main(String[] args) {
String name = "Shakespeare";
System.out.println("In main, the name is "
+ name);
changeName(name); // i don't get why we pass name as an argument
System.out.println("Back in main, the name is "
+ name);
}
public static void changeName(String str) {
str = "Dickens";
System.out.println("In changeName, the name " + "is now "
+ str);
}
}
Run Code Online (Sandbox Code Playgroud)
我不理解在nameName方法中将name作为参数传递的目的.它与String name ="Shakespeare"有什么关系;
示例(我相信)的目的是表明Java使用按值传递语义.
该值的的name变量中main(通过值)传递changeName.它接收值作为参数的初始值str.
str然后将值更改为对字符串"Dickens"的引用,并且该更改由方法结束时的诊断验证.
但是,当我们返回到该main方法时,下一个诊断行显示值name未更改.如果Java使用了真正的pass-by-reference,那么更改str也会发生变化name- 但事实并非如此,因为Java使用了pass-by-value.