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.
Bài liên quan
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ớ.
chuẩn
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.
Thêm về Stack và Heap
thank m.n đã giúp đỡ. thắc mắc mãi…