Java的参数是值传递
class User
package cn.anzhongwei.lean.demo.java传参;
public class User {
private String name;
private String Gender;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return Gender;
}
public void setGender(String gender) {
Gender = gender;
}
}
package cn.anzhongwei.lean.demo.java传参;
/**
* 要理解java的传参
* 结果:
主类中实例化user1-hash:cn.anzhongwei.demo.java传参.User@4d7e1886
主类中实例化参数:Name=Hollis
方法中接受到参数user-hash:cn.anzhongwei.demo.java传参.User@4d7e1886 // 与main函数同一个对象
方法中重新实例化参数user-hash:cn.anzhongwei.demo.java传参.User@3cd1a2f1 // 产生新对象,但是只在局部有效
方法中重新实例化参数:Name=hollischuang
经过方法后的user1-hashcn.anzhongwei.demo.java传参.User@4d7e1886 //user1并没有因为在函数中局部参数实例化而发生变化
经过方法后的参数xiaoming //实例属性会被函数中的更改而发生变化
*/
public class PassOn {
public void pass(User user) {
System.out.println("方法中接受到参数user-hash:"+user);
user.setName("xiaoming");
user = new User();
user.setName("hollischuang");
System.out.println("方法中重新实例化参数user-hash:"+user);
System.out.println("方法中重新实例化参数:Name="+user.getName());
}
public static void main(String[] args) {
PassOn pt = new PassOn();
User user1 = new User();
System.out.println("主类中实例化user1-hash:"+user1);
user1.setName("Hollis");
user1.setGender("Male");
System.out.println("主类中实例化参数:Name="+user1.getName());
pt.pass(user1);
System.out.println("经过方法后的user1-hash" + user1);
System.out.println("经过方法后的参数" + user1.getName());
}
}