Folgender Code konvertiert String in int ohne Methoden
%Vor%Ausgabe "3256" - & gt; 3256
Also beim Casting wie in der folgenden Anweisung: -
%Vor%es verursacht die zufällige Nr. generiert, um in einen int umgewandelt zu werden.
Auch hier gibt es diese Methode Ich bin gerade auf Integer.parseInt () gestoßen, die das gleiche tut!
d. h. eine Ganzzahl zurückgeben
Warum zwei verschiedene Möglichkeiten, einen Wert zu einem int zu machen?
Auch ich habe eine Suche gemacht und es sagt, dass parseInt () String als Argument verwendet. Also bedeutet das, dass parseInt () NUR String in Integer umwandeln soll?
Was ist mit diesem Casting dann (int) ?? Können wir damit auch eine Zeichenkette in eine Ganzzahl umwandeln?
Tut mir leid, wenn es sich wie eine dumme Frage anhört. Ich bin nur verwirrt und versuche es zu verstehen
Hilfe?
Integer.parseInt macht nicht dasselbe wie ein Cast.
Sehen wir uns Ihr erstes Beispiel an:
%Vor%Math.random gibt ein double zurück, und wenn Sie ein double mit einem int multiplizieren, betrachtet Java das Ergebnis als double. Somit hat der Ausdruck Math.random () * 5 eine Art von Doppel. Sie versuchen, diesen Wert einer Variablen vom Typ int zuzuweisen. Standardmäßig lässt Java es nicht zu, dass Sie einer Variablen vom Typ int einen doppelten Wert zuweisen, ohne dass Sie dem Compiler explizit mitteilen, dass dies in Ordnung ist. Im Grunde können Sie daran denken, einen Doppelpunkt an einen int zu übergeben, um dem Compiler zu sagen: "Ich weiß, dass diese int-Variable den Dezimalteil dieses doppelten Wertes nicht halten kann, aber das ist in Ordnung, einfach abschneiden."
Sehen Sie sich nun die Umwandlung eines String in ein int an:
%Vor%Die Zeichenfolge "5" kann nicht sofort in eine ganze Zahl umgewandelt werden. Im Gegensatz zu doubles, die definitionsgemäß in eine Ganzzahl konvertiert werden können, indem der Dezimalteil weggelassen wird, können Strings nicht einfach oder konsistent in int konvertiert werden. "5", "042" und "1000" haben alle ganzzahlige Darstellungen, aber so etwas wie "Hallo, Welt!" nicht. Aus diesem Grund gibt es keine Sprachfunktion erster Ordnung zum Konvertieren eines Strings in einen int. Stattdessen verwenden Sie eine Methode, um die Zeichenfolge zu analysieren und den Wert zurückzugeben.
Um alle Ihre Fragen zu beantworten:
Warum zwei verschiedene Möglichkeiten, einen Wert zu einem int zu machen?
Sie müssen berücksichtigen, um welche Art von Wert es sich handelt. Wenn Sie ein primitives Element in ein int konvertieren, können Sie eine Umwandlung verwenden. Wenn Sie ein Objekt konvertieren, müssen Sie eine bestimmte Umwandlungsmethode für diesen Typ verwenden.
Ich habe auch eine Suche gemacht und es sagt, dass parseInt () String als Argument verwendet. Also bedeutet das, dass parseInt () NUR String in Ganzzahl konvertiert?
Richtig. Sie können keinen anderen Typ an die parseInt-Methode übergeben oder Sie erhalten einen Compilerfehler.
Was ist mit diesem Casting dann (int) ?? Können wir damit auch eine Zeichenkette in eine Ganzzahl umwandeln?
Nein, casting to int funktioniert nur für primitive Werte, und in Java ist ein String kein primitiv.
In Ihrem Beispiel wird eine Fließkommazahl in einen int umgewandelt. Integer.parseInt () liest jedoch einen ganzzahligen Wert aus einem String.
Sie können nur zwischen kompatiblen Typen umwandeln (ich würde eine Verbindung zur JLS herstellen, aber das könnte für eine Anfängerfrage zu viel sein).
Casting nimmt im Grunde nur einen Wert an und sagt: "Hey, dieses Ding, das ein Double war? Jetzt ist es ein Int. Also da."
Sie können das nicht mit einer Zeichenkette tun, weil es nichts wie ein int ist. Sie müssen stattdessen ein int daraus analysieren, was eigentlich viel schwieriger ist, als es klingt. Glücklicherweise ist es bereits für Sie implementiert, so dass Sie sich keine Gedanken darüber machen müssen, wie es funktioniert.
Casting kann nur von einem numerischen Typ in einen anderen konvertieren. Das Interpretieren einer Zeichenfolge (auch "Parsen" genannt) muss mit einem Methodenaufruf erfolgen.
Beginnen wir von oben.
%Vor%Ja, das gibt tatsächlich eine zufällige ganze Zahl zwischen 0 und 4, aber das ist nicht die richtige Art, dies zu tun. Sie sehen, wenn Sie eine Klammer vergessen, d. H. Sie geben
ein %Vor%Sie erhalten immer 0, weil das Casting einen höheren Vorrang hat als die Multiplikation. Das heißt, das Ergebnis von Math.random () wird zuerst in eine Ganzzahl umgewandelt, die immer 0 ist, und dann wird sie mit 5 multipliziert, was immer noch 0 ist.
Ich würde java.util.Random zum Generieren zufälliger Ganzzahlen bevorzugen. q.v. Ссылка .
Casting kann nur zwischen "kompatiblen Typen" durchgeführt werden. Für primitive Typen und ihre Wrapper (d. H. Int, Integer, long, Long und & amp; c.) Können Sie immer zwischen ihnen umwandeln, mit dem Vorbehalt, dass einige Konvertierungen Informationen verlieren. z.B. Wenn Sie einen Long-Wert in einen Int-Wert eingeben, kann der Long-Wert eine Zahl enthalten, die größer als Integer.MAX_VALUE ist. Diese Art von Casting kam grundsätzlich von C ++, welches wiederum von C übernommen wurde.
Was das Gießen von Objekten betrifft, ist es tatsächlich einfacher. Fragen Sie einfach "ist dieses Objekt, o, ein X?" Wenn ja, dann macht (X) o Sinn und hat den statischen Typ X. Wenn o kein X ist und Sie trotzdem versuchen zu casten, erhalten Sie eine ClassCastException, die anzeigt, dass der dynamische Typ (Laufzeit) von o nicht mit X kompatibel ist wahrscheinlich später viel sinnvoller, wenn Sie den Unterschied zwischen dem statischen und dem dynamischen (Laufzeit) -Typ von Objekten erhalten.
In Ihrem Beispiel wird eine Fließkommazahl in einen int umgewandelt. Integer.parseInt () liest jedoch einen ganzzahligen Wert aus einem String.
Sie können nur zwischen kompatiblen Typen umwandeln (ich würde eine Verbindung zur JLS herstellen, aber das könnte für eine Anfängerfrage zu viel sein).
Casting nimmt im Grunde nur einen Wert an und sagt: "Hey, dieses Ding, das ein Double war? Jetzt ist es ein Int. Also da."
Sie können das nicht mit einer Zeichenkette tun, weil es nichts wie ein int ist. Sie müssen stattdessen ein int daraus analysieren, was eigentlich viel schwieriger ist, als es klingt. Glücklicherweise ist es bereits für Sie implementiert, so dass Sie sich keine Gedanken darüber machen müssen, wie es funktioniert.
Casting kann nur von einem numerischen Typ in einen anderen konvertieren. Das Interpretieren einer Zeichenfolge (auch "Parsen" genannt) muss mit einem Methodenaufruf erfolgen.
Integer.parseInt macht nicht dasselbe wie ein Cast.
Sehen wir uns Ihr erstes Beispiel an:
%Vor%Math.random gibt ein double zurück, und wenn Sie ein double mit einem int multiplizieren, betrachtet Java das Ergebnis als double. Somit hat der Ausdruck Math.random () * 5 eine Art von Doppel. Sie versuchen, diesen Wert einer Variablen vom Typ int zuzuweisen. Standardmäßig lässt Java es nicht zu, dass Sie einer Variablen vom Typ int einen doppelten Wert zuweisen, ohne dass Sie dem Compiler explizit mitteilen, dass dies in Ordnung ist. Im Grunde können Sie daran denken, einen Doppelpunkt an einen int zu übergeben, um dem Compiler zu sagen: "Ich weiß, dass diese int-Variable den Dezimalteil dieses doppelten Wertes nicht halten kann, aber das ist in Ordnung, einfach abschneiden."
Sehen Sie sich nun die Umwandlung eines String in ein int an:
%Vor%Die Zeichenfolge "5" kann nicht sofort in eine ganze Zahl umgewandelt werden. Im Gegensatz zu doubles, die definitionsgemäß in eine Ganzzahl konvertiert werden können, indem der Dezimalteil weggelassen wird, können Strings nicht einfach oder konsistent in int konvertiert werden. "5", "042" und "1000" haben alle ganzzahlige Darstellungen, aber so etwas wie "Hallo, Welt!" nicht. Aus diesem Grund gibt es keine Sprachfunktion erster Ordnung zum Konvertieren eines Strings in einen int. Stattdessen verwenden Sie eine Methode, um die Zeichenfolge zu analysieren und den Wert zurückzugeben.
Um alle Ihre Fragen zu beantworten:
Warum zwei verschiedene Möglichkeiten, einen Wert zu einem int zu machen?
Sie müssen berücksichtigen, um welche Art von Wert es sich handelt. Wenn Sie ein primitives Element in ein int konvertieren, können Sie eine Umwandlung verwenden. Wenn Sie ein Objekt konvertieren, müssen Sie eine bestimmte Umwandlungsmethode für diesen Typ verwenden.
Ich habe auch eine Suche gemacht und es sagt, dass parseInt () String als Argument verwendet. Also bedeutet das, dass parseInt () NUR String in Ganzzahl konvertiert?
Richtig. Sie können keinen anderen Typ an die parseInt-Methode übergeben oder Sie erhalten einen Compilerfehler.
Was ist mit diesem Casting dann (int) ?? Können wir damit auch eine Zeichenkette in eine Ganzzahl umwandeln?
Nein, casting to int funktioniert nur für primitive Werte, und in Java ist ein String kein primitiv.
Folgender Code konvertiert String in int ohne Methoden
%Vor%Ausgabe "3256" - & gt; 3256
Parse () -Methode ist verfügbar ist viele Formate, Integer-Klasse mit der Methode ParseInt (), die eine statische Methode ist, rufen wir diese Methode von Integer.ParseInt ()
Ähnlich doppelte Klasse mit ParseDouble () und wir nennen es Double.ParseDouble ().
Der generische Weg ist XXXX.ParseXXXX ()
Die Hauptanwendung dieser Methode besteht darin, jedes Objekt in einen Primitiven umzuwandeln.
Und hier können Sie eine Frage stellen, warum wir in Primitive konvertieren müssen? Die Antwort lautet: Wir wissen, dass Primitive im Stapelbereich gespeichert werden und Objekte im Heap-Bereich gespeichert werden, und Sie wollen den Heap-Speicher nicht verschwenden und Sie können ein Objekt in einen Primitiven konvertieren.
Und die andere Sache, beim Zugriff auf ein Objekt, kann Overhead sein. Es ist besser, als Primitive zu verwenden.
Beginnen wir von oben.
%Vor%Ja, das gibt tatsächlich eine zufällige ganze Zahl zwischen 0 und 4, aber das ist nicht die richtige Art, dies zu tun. Sie sehen, wenn Sie eine Klammer vergessen, d. H. Sie geben
ein %Vor%Sie erhalten immer 0, weil das Casting einen höheren Vorrang hat als die Multiplikation. Das heißt, das Ergebnis von Math.random () wird zuerst in eine Ganzzahl umgewandelt, die immer 0 ist, und dann wird sie mit 5 multipliziert, was immer noch 0 ist.
Ich würde java.util.Random zum Generieren zufälliger Ganzzahlen bevorzugen. q.v. Ссылка .
Casting kann nur zwischen "kompatiblen Typen" durchgeführt werden. Für primitive Typen und ihre Wrapper (d. H. Int, Integer, long, Long und & amp; c.) Können Sie immer zwischen ihnen umwandeln, mit dem Vorbehalt, dass einige Konvertierungen Informationen verlieren. z.B. Wenn Sie einen Long-Wert in einen Int-Wert eingeben, kann der Long-Wert eine Zahl enthalten, die größer als Integer.MAX_VALUE ist. Diese Art von Casting kam grundsätzlich von C ++, welches wiederum von C übernommen wurde.
Was das Gießen von Objekten betrifft, ist es tatsächlich einfacher. Fragen Sie einfach "ist dieses Objekt, o, ein X?" Wenn ja, dann macht (X) o Sinn und hat den statischen Typ X. Wenn o kein X ist und Sie trotzdem versuchen zu casten, erhalten Sie eine ClassCastException, die anzeigt, dass der dynamische Typ (Laufzeit) von o nicht mit X kompatibel ist wahrscheinlich später viel sinnvoller, wenn Sie den Unterschied zwischen dem statischen und dem dynamischen (Laufzeit) -Typ von Objekten erhalten.
Also beim Casting wie in der folgenden Anweisung: -
%Vor%es verursacht die zufällige Nr. generiert, um in einen int umgewandelt zu werden.
Auch hier gibt es diese Methode Ich bin gerade auf Integer.parseInt () gestoßen, die das gleiche tut!
d. h. eine Ganzzahl zurückgeben
Warum zwei verschiedene Möglichkeiten, einen Wert zu einem int zu machen?
Auch ich habe eine Suche gemacht und es sagt, dass parseInt () String als Argument verwendet. Also bedeutet das, dass parseInt () NUR String in Integer umwandeln soll?
Was ist mit diesem Casting dann (int) ?? Können wir damit auch eine Zeichenkette in eine Ganzzahl umwandeln?
Tut mir leid, wenn es sich wie eine dumme Frage anhört. Ich bin nur verwirrt und versuche es zu verstehen
Hilfe?
Parse () -Methode ist verfügbar ist viele Formate, Integer-Klasse mit der Methode ParseInt (), die eine statische Methode ist, rufen wir diese Methode von Integer.ParseInt ()
Ähnlich doppelte Klasse mit ParseDouble () und wir nennen es Double.ParseDouble ().
Der generische Weg ist XXXX.ParseXXXX ()
Die Hauptanwendung dieser Methode besteht darin, jedes Objekt in einen Primitiven umzuwandeln.
Und hier können Sie eine Frage stellen, warum wir in Primitive konvertieren müssen? Die Antwort lautet: Wir wissen, dass Primitive im Stapelbereich gespeichert werden und Objekte im Heap-Bereich gespeichert werden, und Sie wollen den Heap-Speicher nicht verschwenden und Sie können ein Objekt in einen Primitiven konvertieren.
Und die andere Sache, beim Zugriff auf ein Objekt, kann Overhead sein. Es ist besser, als Primitive zu verwenden.