不积跬步,无以至千里;不积小流,无以成江海。

 

Java语言基础

 

Java的方法参数传递方式

基本数据类型:值存放在局部变量表中,无论如何修改只会修改当前栈帧的值(只对方法内的值进行改变),方法执行结束对方法外不会做任何改变。

引用数据类型:指针存放在局部变量表中,调用方法的时候,副本引用压栈,传递的是对象的引用地址。所以当你在一个地方修改这个对象(地址代表了实际唯一的值)之后,另一个引用该对象也会改变。引用类型包括 :类、接口、 数组 、字符串。

 

  • 值传递

(参数类型是int,long等基本数据类型(八大基本数据类型),参数传递的过程采用值拷贝的方式)

public class Test {
 
    public static void main(String[] args) {
        int a = 5;
        fun(a);
        System.out.println(a);
    }
 
    private static void fun(int a) {
        a += 1;
    }
}

程序输出:

5

  

  • 引用传递
public class Test {
 
    public static void main(String[] args) {
    	int arr[] = {1,2,3};
        fun(arr);
        for(int i = 0; i < arr.length; i++){
        	System.out.print(arr[i] + " ");
        }        
    }
 
    private static void fun(int a[]) {
        a[1] = 0;
    }
}

程序输出:

1 0 3 

 

注意看一下字符串类型:

public class Test {
 
    public static void main(String[] args) {
    	String string = "111";
    	func(string);
    	System.out.print(string);      
    }
 
    private static void func(String str) {
		str = str + "123";
		System.out.println(str);
	}
}

程序输出:

111123
111

 

注意StringBuffer类型:

public class Test {
	  
    public static void main(String[] args) {
        StringBuffer str = new StringBuffer("123");
        func(str);
        System.out.print(str);
    }
    
    private static void func(StringBuffer sb) {
		sb.append("111");
		System.out.println(sb);
	}
}

程序输出:

123111
123111

 

再看一下包装类型:

public class Test {
 
    public static void main(String[] args) {
        Integer a = 5;
        fun(a);
        System.out.println(a);
    }
 
    private static void fun(Integer a) {
        a += 1;
    }
 
}

程序输出:

5

  

posted on 2019-11-20 19:26  smile学子  阅读(160)  评论(0编辑  收藏  举报