2016-10-07 3 views
0

Ich habe eine Karte. Map<Character, Integer> map1 = new TreeMap<Character, Integer>();Sind Charakter und Char das Gleiche?

Ich verwende diese Map, um eindeutige Zeichen zu speichern, die beim Scannen einer Datei angezeigt werden. Ich bekomme eine String und String.toCharArray() verwenden, um die Zeichen in einem char-Array gefunden zu speichern.

Wenn ich versuche, ein Element aus meinem Char-Array, sagen wir map1.put(charay[I], 1), wird die Karte interpretieren, dass es Wrapperklasse? Oder sind character und char unterschiedlich. Ich habe einige Nachforschungen angestellt und es sieht so aus, als ob Sie Wrapper-Klassen verwenden, wenn primitive Datentypen nicht funktionieren (wie in der Karte), aber was wird ich tun?

+0

Autoboxing https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html –

+0

'Character' ist die Wrapper-Klasse von primitiven' char'. Es bietet Methoden und ermöglicht die Verwendung in Datenstrukturen wie Karten, Listen usw. Sie können austauschbar mit Auto-Boxen und Unboxing verwendet werden. – Li357

+0

Genau das habe ich mir erhofft! – Podo

Antwort

1

Charakter und Zeichen sind nicht die gleichen, die erstere ist eine Klasse und letztere eine primitive Art, obwohl, wie Sie die Klasse sagen kann, in Betracht gezogen werden Bereitstellen einer Objektinstanz- "Wrapper" -Darstellung des primitiven Typs an Stellen, an denen nur Objekte erlaubt sind und keine Primitive.

An jeder Stelle, an der Ihr Code anzeigt, dass eine Konvertierung von einem zum anderen stattfinden muss, anstatt Ihnen einen Compilerfehler zu geben, wird stattdessen der Java Compiler (javac) seinen eigenen Code für Sie einfügen Umwandlung für Sie. Die Konvertierung wird als automatisches Boxing und automatisches Unboxing bezeichnet, was der Ausführung von Character.valueOf (char) und Character.charValue() entspricht. Darüber hinaus führt der Compiler das Caching der erzeugten Zeichenobjekte durch, um den Speicherverbrauch zu begrenzen. Auto-Boxing ist einfach der Compiler, der diese Konvertierung und den Caching-Code einfügt, so dass Ihr sichtbarer Code sauberer aussieht, aber in Wirklichkeit ist das der Fall, es gibt nur etwas zusätzlichen Code, der vom Compiler eingefügt wird.

0

Ja. Autoboxing vom Link (man beachte das Beispiel),

Autoboxing ist die automatische Konvertierung, die die Java-Compiler Klassen zwischen den primitiven Typen und ihren entsprechenden Objekt-Wrapper macht. Zum Beispiel Konvertieren eines int zu einem Integer, eines double zu einem Double, und so weiter. Wenn die Konvertierung in die andere Richtung geht, heißt das unboxing.

Hier ist das einfachste Beispiel Autoboxing:

Character ch = 'a'; 
Verwandte Themen