What is a type descriptor?

It is a unique string that represents the class. For reference types, you can find out the type descriptor of a class by calling getClass on an instance and getName. Primitive types have “hard-coded” type descriptors according to the following table:

   boolean		Z
   byte			B
   char			C
   double		D
   float		F
   int			I
   long 		J
   short		S

The type descriptor of an array is [ for each dimension. So an array of int[][] will have a type descriptor [[I.

Main.java:

public class Main {
   public static void main(String args[]) throws Exception {

      int [][]array = new int[10][10];
      String s = "Hello, world!";
      A a = new A();    
      
      System.out.println(double.class.getName());
      System.out.println(array.getClass().getName());
      System.out.println(s.getClass().getName());
      System.out.println(a.getClass().getName());
      System.out.println(A.InnerA.class.getName());
      System.out.println(A.InnerA.InnerB.class.getName());
   }
}
 
class A 
{
   public class InnerA { 
      public class InnerB {
      }
   }
}

outputs:

double
[[I
java.lang.String
A
A$InnerA
A$InnerA$InnerB