Typcasting

Windows10

Bekanntes Mitglied
Ich habe den Befehl, wie man einen String auf einen Integer-Wert castet vergessen und auch im Internet (außer auf dieser Seite) nichts brauchbares gefunden. Kann mir es wer sagen?
Beispielcode, was ich schon probiert habe:
Code:
String zeit="22";
int z=(int)(zeit);
Dieser Code hat aber nicht funktioniert!
 
X

Xyz1

Gast
cast/casten, Konvertierung/konvertieren, Typumwandlung - bedeuten alle dasselbe.
Hier:
Java:
        String zeit = "22";
        int zeit2 = Integer.parseInt(zeit);
        Integer zeit3 = zeit2; // auto-boxing
        int zeit4 = zeit3; // auto-un-boxing
        int zeit5 = 0;
        for (int i = 0; i < zeit.length(); i++) { // etwas ähnliches macht parse... auch
            zeit5 = zeit5 * 10 + (zeit.charAt(i) - '0');
        }
        System.out.println("zeit = " + zeit);
        System.out.println("zeit2 = " + zeit2);
        System.out.println("zeit3 = " + zeit3);
        System.out.println("zeit4 = " + zeit4);
        System.out.println("zeit5 = " + zeit5);
 
X

Xyz1

Gast
Und wieso werd ich dann angemault??

Wieso funktioniert das nicht, das regt mich auf:
Java:
        int zeit5 = 0;
        zeit.chars().forEach((c) -> zeit5 = zeit5 * 10 + (c - '0'));

?
 

Tobse

Top Contributor
Und wieso werd ich dann angemault??

Weil du etwas fachlich falsches gepostet hast und ich mir 100% sicher bin, dass du es eigentlich besser weisst ;)

Zur Klarstellung:

Java:
// dashier ist ein cast; es werden keine Daten verändert, es wird jediglich Abstraktion aufgehoben
Object o = "abc";
String a = (String) o; // keine Daten werden verändert, es wird nur die klasse des objekts geprüft

// dashier ist eine IMPLIZITE Typumwandlung
int n = 42;
long k = n; // hier werden daten verändert: es kommen 4 byte hinzu

// dashier ist eine EXPLIZITE Typumwandlungen/Konvertierungen mit der selben Syntax wie ein cast:
long i = 42;
int j = (int) i; // verlustbehaftet!; es werden daten verändert: hier fallen 32 bit weg

// dashier sind EXPLIZITE Typumwandlungen bzw. Konvertierungen:
String s = Integer.toString(42); // hier werden daten verändert: binardarstellung zu UNICODE (Basis 10, btw)
int f = Integer.parse("42"); // NumberFormatException!!; auch hier werden daten verändert: UNICODE (Basis 10 btw) zu binärdaten
 
X

Xyz1

Gast
Ich weiß, was euch verwirrt hat:
cast/casten, Konvertierung/konvertieren, Typumwandlung - sind alle synonym zu gebrauchen für cast. :)
Stimmt ihr dem überein?
 

Tobse

Top Contributor
1. Integer.parse("42") kompiliert nicht
Korrekt, Tippfehler.

2. Integer.parseInt("42") wirdt keine NumberFormatException
Das so in den Code zu schreiben wäre ja auch Sinnlos, oder? Bei Eingelesenen Werten musst du hier aber mit einer NumberFormatException rechnen, siehe https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#parseInt(java.lang.String)

-----

Ich weiß, was euch verwirrt hat:
cast/casten, Konvertierung/konvertieren, Typumwandlung - sind alle synonym zu gebrauchen für cast. :)
Stimmt ihr dem überein?
Ja, genau darüber habe ich mich geärgert. Und nein, siehe meinen zweiten Post, ich stimme dem nicht zu.
 

mrBrown

Super-Moderator
Mitarbeiter
2. Integer.parseInt("42") wirdt keine NumberFormatException
Nicht in dem Beispiel, generell kann das aber passieren (ich denke mal, dass es so gemeint war)


Ich weiß, was euch verwirrt hat:
cast/casten, Konvertierung/konvertieren, Typumwandlung - sind alle synonym zu gebrauchen für cast. :)
Oder man bleibt einfach bei Konventionen, dann ist niemand verwirrt (aber warum auch einfach, wenns auch kompliziert geht, außerdem würdest du den Preis ja dann nicht bekommen...)
 
X

Xyz1

Gast
Ich habe try-catch- jetzt extra weggelassen, ich dachte, das würd wieder zu weiteren Fragen führen.... :(
 

Ähnliche Java Themen

Neue Themen


Oben