Java中的值传递和引用传递

当一个变量最为一个参数传入方法内部的时候,会有两种不同的传递方式:值传递和引用传递。

值传递的特点:不管方法内部对传进去的参数作任何改变,也不会影响方法外部的变量的值

引用传递的特点:方法内部对传进去的参数作的改变也会影响方法外部的变量的值


那么哪些是值传递,哪些是引用传递呢?

  1. 基本类型(8种)的传递都是值传递
  2. 引用类型(除String外)都是引用传递
  3. Strng比较特殊,它虽然是引用类型,但是却是值传递


通过一下例子来理解:

Student.java

package com.tianjf;

public class Student {
	private String name;

	public Student(String name) {
		super();
		this.name = name;
	}

	public String getName() {
		return name;
	}

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

	@Override
	public String toString() {
		return name;
	}
}

Test.java

package com.tianjf;

public class Test {
	
	private static void changeInt(int i) {
		i = 1;
	}
	
	private static void changeStudent(Student student) {
		student.setName("李四");
	}
	
	private static void changeString(String str) {
		str = "456";
	}
	
	public static void main(String[] args) {
		int i = 0;
		String str = "123";
		Student student = new Student("张三");
		System.out.println("Before change:\ni:" + i + "\n" + "student:" + student.toString() + "\n" + "str:" + str);
		
		changeInt(i);
		changeStudent(student);
		changeString(str);
		System.out.println("After change:\ni:" + i + "\n" + "student:" + student.toString() + "\n" + "str:" + str);
	}
}

运行结果:

Before change:
i:0
student:张三
str:123
After change:
i:0
student:李四
str:123


从运行结果可以看出,int和String类型的值经过change方法后没有变,而student的值变了。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值