java 值传递,和引用传递的问题

原创
2016/11/23 10:15
阅读数 2

1,如果是基本数据类型和String类型,显然是值传递, 作为参数的引用被修改只是一个副本, 不影响它原来的值。 2,引用类型 传递时,可以修改 引用所指向对象的属性,但不能直接对这个引用赋新值。

public class translation {
	
	public static void main(String[] args) {
		User user1 = new User("张三",12);
		User user2 = new User("李四",20);
		User user3 = new User("王五",50);
		trans(user1,user2);
		objTrans(user3);
		System.out.println(user1.toString()+"\n"+user2.toString()+"\n"+user3.toString());
	}
	public static void objTrans(User user){   //修改对象的属性  ,可以引用传递
		user.name="老王";
	}
	public static void trans(User u1,User u2){   //
		User temp = new User();
		temp = u1;
		u1=u2;
		u2=temp;
	}
}
class User{
	String name;
	int age;
	public User() {
		// TODO Auto-generated constructor stub
	}
	public User(String name,int age) {
		this.name=name;
		this.age=age;
	}
	@Override
	public String toString() {
		return "User [age=" + age + ", name=" + name + "]";
	}
	
}
        结果:
        User [age=12, name=张三]
        User [age=20, name=李四]
        User [age=50, name=老王]
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部