Mảng các phần tử có kiểu dữ liệu primitive thì mảng đó thuộc kiểu dữ liệu gì?

Hi there,
Trong java có 2 kiểu dữ liệu:

  • 8 kiểu primitive với 8 wrapper class tương ứng.
  • Kiểu tham chiếu (preference datatype) là một Object.

Vậy cho em hỏi mảng primitive thuộc kiểu dữ liệu gì?

    String[] arr = {"Hello","Hi"};
    System.out.print(arr.getClass());

Kết quả in ra class [Ljava.lang.String; chứng tỏ arr là Object String.

Còn với trường hợp này.

    int[] arr = {1,2,3,4};
    System.out.print(arr.getClass()); 

Kết quả in ra class [I không thuộc 1 trong 2 kiểu dữ liệu trên và em cũng không biết nó là gì.

Mong đươc giải thích, em cảm ơn.

Bạn đã nắm được Java có các class Integer, Float,… là các wrapper class ứng với các kiểu primitive int, float,… chưa?

1 Like

Dạ em chưa, em chỉ hiểu sơ sơ, int tương ứng với class Integer. Vậy cuối cùng mảng int là một Object? Nhưng nó phải in ra java.lang.Integer còn trường hợp này nó in ra [I

Kết quả in ra class [Ljava.lang.String; chứng tỏ arr là Object String.

[Ljava.lang.String; có nghĩa là mảng kiểu String cậu ạ :smile:
Theo như cú pháp về Field Descriptors, [ là mảng 1 chiều, L Classname ; là instance của Classname.

Kết quả in ra class [I không thuộc 1 trong 2 kiểu dữ liệu trên và em cũng không biết nó là gì.

Nó có nghĩa là mảng integer. I là integer (cậu check ở link Field descriptor lại nhé!), [ thì cậu biết rồi. Nếu cậu khai báo mảng Integer, lúc đó kết quả mới là [java.lang.Integer;.

Mảng ở Java là kiểu object cậu ạ :smile:

Hope it helps!

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