java只有值传递

1.在方法中传递基本数据类型时,传入的值是原值的拷贝,所以在方法中改变此数据不会影响到原数据

2.在方法中传递引用数据类型时,传入的是引用的拷贝

列1:

	public static void main(String[] args) {
		List<String> list = new ArrayList<>();
		list.add("b");
		test(list);
		System.out.println(list); // 打印b,a
	}
	
	private static void test(List<String> list) {
		//list = new ArrayList<>();
		list.add("a"); // 不改变该引用时,该引用指向的是原集合
		System.out.println(list);// 打印b,a
	}

改变原引用

	public static void main(String[] args) {
		List<String> list = new ArrayList<>();
		list.add("b");
		test(list);
		System.out.println(list); // 打印b
	}
	
	private static void test(List<String> list) {
		list = new ArrayList<>();// 使这个copy的引用指向新的集合
		list.add("a"); // 想新集合中添加元素
		System.out.println(list);// 打印a
	}

列2:

	public static void main(String[] args) {
		StringBuilder A = new StringBuilder("a");
		StringBuilder B = new StringBuilder("b");
		test(A, B);
		System.out.println(A);// 打印ab
		System.out.println(B);// 打印b
		
	}
	
	public static void test(StringBuilder A, StringBuilder B) {
		A.append(B);// 引用没有改变,会更新原有值,打印ab
		B = A;// 复制的引用指向A,原有引用不改变
	}
原文地址:https://www.cnblogs.com/zhz-8919/p/10825290.html