【javaSE】面向对象中的参数传递

参数传递:Java中方法的参数传递都为传值调用

【基本数据类型】

public class Test { 
	public static void leftshift(int i, int j){ 
   		i+=j; 
	} 
	public static void main(String args[]){ 
		int i = 4, j = 2; 
		leftshift(i, j); 
		System.out.println(i); 
		System.out.println(j); 
	} 
} 

int i = 4, j = 2;
基本数据类型的参数传递(实参的值传递给形参)——即把4和2传递给方法leftshift中的形参i、j,实参无变化。

class Test11{
	int i;
	public int show(int i) {
		return ++i;
	}
}
public class TestPerson{
	
	public static void main(String[] args) {
		int num=10;
		Test1 a=new Test1();
		System.out.println(a.show(num));			//11
		System.out.println(num);					//10
		
	}
}

【引用数据类型】

public class Demo
{ 
        public static void modify(int[] a)
	{ 
		a[0]++;
	} 
	public static void main(String[] args)
	{ 
		int[] a=new int[1]; 
		modify(a); 
		System.out.println(a[0]); //
	}
	
} 

引用数据类型的参数传递(实参的值传递给形参)——即把数组a在堆中的地址传递给形参,在方法中赋值,改变了堆中数组a[0]的值。

public class TestA {
	int i ;
	void change(int i){   
		i++;          
		System.out.println(i); //所以值为1  
	}
	void change1(TestA t){ // 形参为对象引用类型,对对象的实际值进行操作,那么也将改变返回的实参的值
		t.i++;         
		System.out.println(t.i);  //值为1 
	}
	public static void main(String[] args) {
		TestA ta = new TestA();
		System.out.println(ta.i);	 	//i为int类型的成员变量,默认值为0,
		ta.change(ta.i); 			    //只是单纯的将int类型的值作为实参传递给了形参
		System.out.println(ta.i); 	    //基本类型传递不改变实参的值
		ta.change1(ta);  				//这里将对象传递给了形参,对象属于引用类型
		System.out.println(ta.i); 		//实参被改变,值为1
		
	}
}
0
1
0
1
1
原因:如上。

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值