30/09/2018, 23:45

Cho em hỏi về mảng đối tượng trong java

em vừa mới học lập trình java đến đoạn mảng em có chỗ không hiểu cho lắm. Xin nhờ các master giải thích

với mảng đối tượng kiểu int;

int[] x = new int[5];
x[3]=2;

với mảng đối tượng vd đối tượng cow;

class cow {
String name;
}

public class cowname { 
public static void main(String[] args) {
cow[] cows = new cow[2];
cows[0] = new cow();
cows[0].name = "tom";
}
}

vấn đề em thắc mắc là tại sao lại có thể gắn trực tiếp x[3]=2. còn đối tượng mảng cow lại cần thêm cows[0] = new cow() mà không gắn trược tiếp luôn cows[0].name = “tom”;

P/S: em không biết trình bày code trên này như thế nào lên hơi khó nhìn các a/c thông cảm.

Sáng Béo viết 01:56 ngày 01/10/2018

đối tượng kiểu int

do bạn sai chỗ này. int là kiểu dữ liệu nguyên thuỷ, nó không phải là 1 lớp nên biến của nó không phải là 1 đối tượng nên không cần dùng new để cấp phát bộ nhớ. còn cow là 1 lớp nên các đối tượng của nó phải cấp phát bộ nhớ.

Leo Messi viết 01:47 ngày 01/10/2018

chuẩn

Đoàn Hiếu Tâm viết 01:45 ngày 01/10/2018

Vì int là kiểu primitive nên không cần new và nó cấp phát trực tiếp vào stack. Còn cows[0] là một object, cấp phát vùng nhớ trong heap.

Sáng Béo viết 02:00 ngày 01/10/2018

Thêm về Stack và Heap

Chính Phạm viết 01:52 ngày 01/10/2018

thank m.n đã giúp đỡ. thắc mắc mãi…

Bài liên quan
0