Truyền array vào function trong Java

1. :point_right: Java đã bỏ khái niệm con trỏ như trong C do không có nhu cầu quản lý bộ nhớ thủ công và cũng không có nhu cầu lập trình những gì liên quan tầng bậc thấp (Cái này mình không chắc 100% vì mình chưa từng học C) thay vào đó java có khái niệm PASS BY VALUEPASS BY REFERENCE Vấn đề này có nhiều topic (view khủng) thảo luận nhiều rồi https://daynhauhoc.com/search?q=pass%20by%20value

2. :point_right: Có 3 vấn bạn cần tìm hiểu thật kỹ:
2.1. java có 2 kiểu dữ liệu là primitive data type và reference data type. Bạn cần tìm hiểu xem java lưu 2 loại này vào RAM như thế nào.
2.2. Bạn phải tìm hiểu kỹ stack và heap là gì, liên quan gì đến cái trên.
2.3. Cuối cùng truyền tham trị (pass by value) và truyền tham chiếu (pass by reference) liên quan gì đến hai mục ở trên.

3. :point_right: Bạn cần đọc kỹ 2 link bên dưới, lấy giấy bút vẽ 2 vùng nhớ stack, heap ra, vẽ từng ô nhớ trên stack, từng ô nhớ trên heap và kéo mũi tên lại với nhau thì sẽ hiểu. (Kỹ tính hơn thì vẽ luôn stack frame trên stack khi chạy mỗi function)
toithacmac.wordpress.com/2015/04/18/bai-3-su-khac-nhau-giua-kieu-du-lieu-co-so-va-kieu-du-lieu-tham-chieu-trong-ngon-ngu-java-la-gi

yellowcodebooks.com/2021/06/14/lam-ban-ve-tham-chieu-tham-tri-trong-java

4. :point_right: Phần thực hành:
Sau khi đã đọc xong lý thuyết thì lấy giấy bút ra mô phỏng từng dòng chương trình sau và giải thích sự thay đổi của a, b, arr1, arr2 trước khi vào hàm và sau khi ra khỏi hàm (bằng các khái niệm bên trên)

	static void function(int a, int b, int[] arr1, int[] arr2) {
		a = b;                                    //1
		arr1[0] = 9999;                           //2
		arr2 = new int[] { 123, 456 };            //3
	}

	public static void main(String[] args) {
		int a = 1, b = 2;                         //1'
		int[] arr1 = new int[] { 1, 2, 3 };       //2'
		int[] arr2 = new int[] { 7, 8, 9 };		  //3'

		function(a, b, arr1, arr2);
	}

Cách hiểu bên trên cũng đúng với javascript. Mình cũng không rõ C, C++ thế nào nên không thể so sánh.

Case này em xin phép xin ý kiến anh @tntxtnt :grin: