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.

1 Like

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ớ.

3 Likes

chuẩn :slight_smile: :slight_smile: :slight_smile: :slight_smile:

1 Like

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.

1 Like

Thêm về Stack và Heap :wink:

2 Likes

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

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