java基础部分——java中值传递与引用传递

先来个概念:

1、值传递的时候,将实参的值copy一份给形参,形参相当于一个副本,副本的内容无论怎么修改,都不会影响到原件本身。

2、引用传递的时候,将实参的地址copy一份给形参,地址指向同一块内存区域,所以原件本身会被改变。

一般情况下,在数据做为参数传递的时候,基本数据类型是值传递,引用数据类型是引用传递(传递地址)。

备注一下:String类型传递时比较特殊, 虽然String不是基本数据类型,但其表现结果为值传递(例子3)。

还是先看例子,概念先读一下。看完例子就明白了。

例1(值传递):

public class PassByValue {

	public static int add(int a) {
		a = 20;
		return  a;
	}
	
	public static void main(String args[]) {
		int a = 10;
		add(a);
		System.out.println(a);
	}
}

结果:

10

例2(引用传递):

public class PassByQuote {

	//冒泡排序
	public static void sort(int a[]) {
		for(int i = 0; i < a.length; i++) {
			for(int j = 1; j < a.length - i; j++) {
				if(a[j-1] > a[j]) {
					int temp = a[j-1];
					a[j-1] = a[j];
					a[j] = temp;
				}
			}
		}
	}
	
	public static void main(String args[]) {
		int a[] = {1,23,12,7,2,19,0};
		sort(a);
		for(int i : a) {
			System.out.print(i+ " ");
		}
	}
}

结果:

0 1 2 7 12 19 23 

例3(String类型传递):

public class PassByString {

	public static String change(String a) {
		a = "Hello RM";
		return a;
	}
	
	public static void main(String args[]) {
		String a = "I am RM";
		change(a);
		System.out.println(a);
	}
}

结果:

I am RM

现在再看下开头的话,就会很清晰了。

附录:

基本数据类型:byte, short, int, long, float, double, char ,boolean

引用数据类型:数组,类,接口。

String类和包装类型如同例三,存在特殊情况。(由于String的值在创建之后不能被改变,任何对String对象的改变都相当于重写创建一个新对象)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值