Anh em tư vấn về tham chiếu bên java làm sao?

ví dụ mình có hàm

void swap(int &a, int &b)
{
   int c = a;
   a = b ;
    b = c;
}

cái này của bên c++ , qua java không truyền đc tham chiếu &a , &b nữa vậy giờ làm sao bây giờ hả mọi người

hình như đặt biến toàn cuc là đc

1 Like
1 Like

Mình swap bằng cách thay đổi 2 giá trị của 2 đối tượng truyền vào

public static void swap(AtomicReference<SinhVien2> sv1, AtomicReference<SinhVien2> sv2)
	{
		sv1.set(sv2.getAndSet(sv1.get()));
	}

Dùng cách này đúng không @truongphamit nhưng sao mình gọi hàm swap thì nó báo lỗi gì í giờ không biết sửa sao nữa??

giờ mình cần có hàm swap để sắp xếp lại mảng

mình mới học java nên lạ lẫm lắm chưa học hướng đối tượng nữa chứ đừng nói , qua java thật khó khăn đối với mình các cậu có thể nói rõ hơn không

Ví dụ Lớp SinhVien của bạn có thuộc tính name, Bạn viết các phương thức getter, setter cho nó. Trong hàm swap bạn thực hiện thay đổi giá trị bằng cách gọi các phương thức getter và setter đó. Lúc này khi ra khỏi phương thức giá trí của 2 SinhVien đã được thay đổi

public void swap(SinhVien sv1, SinhVien sv2)
{
      String str = sv1.getMssv();
      sv1.setMssv(sv2.getMssv());
      sv2.setMssv(str);
}

Bạn xem mình làm như thế có cần chỉnh sửa gì không. Nhưng đây chỉ có 1 thuộc tính nếu nhiều thì cũng phải get, set hết luôn thì hơi cực

Trong java k có con trỏ mà tất cả object đều là con trỏ hết bạn ạ. Nên truyền tham chiều là truyền object đấy

Cho mình hỏi trong java nếu truyền vào 1 đối tượng thì thay đổi trong hàm đối tưởng đó thay đổi theo hả.
Ví dụ: class lopgt {public int x=0;}
void tanggt(lopx x){x.x++;}

lopgt a = new lopgt();

tanggt(a);

vậy phải không mọi người?

Chính xác như bạn nghĩ. Tức là khi bạn truyền 1 object vào trong 1 function (method) nào đó thì bản thân cái object đấy không thay đổi nhưng các trạng thái của nó thì có thể thay đổi (các trường).
Cái này được lưu ý khi lập trình mà. Nhất là phần calendar mình thường hay bị lỗi như thế này.

1 Like

em đọc bài viết của a để hiểu hơn nhé
Ở dưới cùng bài viết phần Reference Copy nói đến vấn đề của em.
Có gì không hiểu thì inbox anh

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?