Java中的引用传递

时间:2021-08-11作者:klpeng分类:IT综合浏览:219评论:0

        除了基本数据类型和String类对象,其他引用类型的对象都可以进行引用传递。数组也是引用类型。

       比如: 通过传入对象的方法,修改该对象的值。 这个时候,基本数据类型和String的对象就不可以进行引用传递,无法修改其值。

        

public class Test01 {
	
	public static void main(String[]args) {
		int num = 10;
		setNum(num);
		String str = "iii";
		System.out.println(num); //输出仍然是10 
		System.out.println(str); //输出仍然是iii
	}
	public static void setNum(int  num) {
		num  = 99;
	}
	public static void setString(String str) {
		str = "kkk";
	}
}

        但传入的是非上述两种情况的引用对象时,就可以修改。

        定义一个Person类,我们对其Person类的字段进行修改。

        

public class Person {
	String name ;
	int age ;
	
	Person(){
		
	}
	public Person(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String toString() {
		return "姓名: "+name +",年龄:"+age;
	}
	
}

测试类

        

public class Test02 {
	
	public static void main(String[]args) {
		Person person = new Person("Xi",18);
		
		setPersonName(person);
		
		System.out.println(person);
		
	}
	public static void setPersonName(Person p) {
		 p.setName("Ti");
	}
}

运行之后发现person对象的name的值改变了。

Java中的引用传递

        另外一个就是在方法中,我传入一个实参为引用对象,并且返回该对象。接受这个返回对象的另一个对象修改了值是否会印象到传入实参的引用对象呢 ? 答案是可以修改的。

        在上述Person类的基础上,创建一个新的测试类。

       

public class Test03 {
	
	public static void main(String [] args) {
		
		Person person1 = new Person("F1",20);
		
		Person person2 ;
		
		person2 = getPerson(person1);
		
		person2.setName("T3");
		
		System.out.println("person1 = "+person1);
		System.out.println("person2 = "+person2);
		
		
	}
	public static Person getPerson(Person p) {
		
		return p;
	}
}

        getPersonn(Person p) 方法 可以将p对象返回,person1传入到getPerson(person1)中,被person2接收,通过person2修改name的值,person1对象也会被修改到。

Java中的引用传递

        上述就是在类中经常使用到的setObject和getObject方法 ,用到了面向对象的思想。 

打赏
文章版权声明:除非注明,否则均为彭超的博客原创文章,转载或复制请以超链接形式并注明出处。
相关推荐

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

猜你喜欢