Character.getNumericValue

  • Themenstarter Themenstarter Java_Nooby
  • Beginndatum Beginndatum
J

Java_Nooby

Gast
Da ein char ja nichts anderes als der Unicode des Zeichens ist, reicht es zur Konvertierung in einen int, '0' abzuziehen:
Java:
		char c = '3';
		int i = c - '0';

Nun sehe ich aber oft stattdessen so etwas:
Java:
		char c = '3';
		int i = Character.getNumericValue(c);

Wieso sollte man (falls überhaupt?) letztere Methode bevorzugen?
 
weil in der Character-Klasse komplizierter Code a la
Java:
public static int getNumericValue(int codePoint) {
        int numericValue = -1;

        if (codePoint >= MIN_CODE_POINT && codePoint <= FAST_PATH_MAX) {
            numericValue = CharacterDataLatin1.getNumericValue(codePoint);
        } else {
            int plane = getPlane(codePoint);
            switch(plane) {
            case(0):
                numericValue = CharacterData00.getNumericValue(codePoint);
                break;
            case(1):
                numericValue = CharacterData01.getNumericValue(codePoint);
                break;
            case(2):
                numericValue = CharacterData02.getNumericValue(codePoint);
                break;
            case(3): // Undefined
            case(4): // Undefined
            case(5): // Undefined
            case(6): // Undefined
            case(7): // Undefined
            case(8): // Undefined
            case(9): // Undefined
            case(10): // Undefined
            case(11): // Undefined
            case(12): // Undefined
            case(13): // Undefined
                numericValue = CharacterDataUndefined.getNumericValue(codePoint);
                break;
            case(14): 
                numericValue = CharacterData0E.getNumericValue(codePoint);
                break;
            case(15): // Private Use
            case(16): // Private Use
                numericValue = CharacterDataPrivateUse.getNumericValue(codePoint);
                break;
            default:
                // the argument's plane is invalid, and thus is an invalid codepoint
                // numericValue remains -1
                break;
            }
        }
        return numericValue;
    }
kaum zum Spass steht für alle möglichen UniCode-Zeichen,

--------

anderseits ist der einfache Fall in einfachen Programm sicher vorauszusetzen,
dann hat man immer noch eindeutigen sprechenden Code und nicht wirre Hacks

die pq-Formel kann man vielleicht auch durch irgenwelche ~+%$/%$§§-Bit-Operation ersetzen, verstehen tut das aber keiner,

- '0' ist freilich noch ein überschaubarer Fall, wer es nicht kennt, kann es in diesem Fall lernen und geht auch weiter

-----

dass der ASCII-Code nicht ewig gilt kann auch noch anbringen? nein 😉
 

Neue Themen


Zurück
Oben