Java中参数的传递

在C语言中,参数的传递分为值传递和地址传递

在Java中参数的传递就是值传递

1.基本类型的传递,基本类型存放在栈中,int a的值传递给变量int a1,a1的值发生改变不会影响a

2.引用类型的传递,

字符串的传递:.字符串str的内容为hello,存放在堆内存中,把str传递给String str1后,(String str相当于在栈内存中定义了未初始化的str)str1中的内容为hello,str=str1="hello",如果改变str1的值,那么str1就会重新开辟一个空间,(直接赋值法会自动开辟空间(如果对象池中没有该内容))并指向其空间,所以字符串的传递不会改变值,常识:字符串是不可更改的

              

补充:如果new String("word") 一个新对象str2,"word"是匿名对象,自动存放在堆空间中,每new一个对象就相当于开辟了一个堆内存,str2指向该堆空间,可以看到,产生了word垃圾,所以字符串一般都采用直接赋值法

                

数组的传递:将数组a传递到数组b中,数组b也指向了相同的堆空间,改变数组b中的内容,数组a也发生了改变

          

public class TestParameter{
         public static void  main(String[] args){
				int int_a=2;
				String str="hello";
				String str2=new String("word");
				int[] a=new int[]{1,2,3};
				paraTrans(int_a,str,a);
				System.out.println("整数int_a="+int_a); //实参整数int_a
				System.out.println("字符串str="+str);   //实参字符串str
				System.out.println("字符串str2="+str2); //补充说明的str2
				for(int i=0;i<a.length;i++){
				 System.out.print("a["+i+"]="+a[i]+"\t");       //参数数组b
				 } 
		}	
 		public static void   paraTrans(int int_b,String str1,int[] b){
			     int_b=3;        
				 str1="word";  
				 b[0]=5;
		}
}

猜你喜欢

转载自blog.csdn.net/weixin_43240245/article/details/84545749
今日推荐