Отказ от ответственности: хотя ответ Эрика правильный, он не полный.
Короче говоря
Этот метод похож на getCanonicalName () с разницей - он возвращает двоичное имя класса, где каноническая версия возвращает ноль (например, для анонимных классов).
информация
Если этот объект класса представляет ссылочный тип, который не является типом массива, то возвращается двоичное имя класса:
String.class.getName()
returns "java.lang.String"
(new Object() {}).getClass().getName()
returns "test.Main$1"
Если этот объект класса представляет примитивный тип или void, то возвращаемое имя является строкой, равной ключевому слову языка Java, соответствующему примитивному типу или void.
byte.class.getName()
returns "byte"
long.class.getName()
returns "long"
Если этот объект класса представляет класс массивов, то внутренняя форма имени состоит из имени типа элемента, которому предшествует один или несколько символов '[', представляющих глубину вложения массива:
(new Object[3]).getClass().getName()
returns "[Ljava.lang.Object;"
(new int[3][4][5][6][7][8][9]).getClass().getName()
returns "[[[[[[[I"
Кодировка имен типов элементов выглядит следующим образом:
Element Type Encoding
boolean Z
byte B
char C
class or interface L<classname>;
double D
float F
int I
long J
short S
Официальные документы по этому методу: https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html#getName--