Anfänger Java Frage nach Integer.parseInt () und Casting

8

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?

    
Serenity 20.05.2010, 15:57
quelle

7 Antworten

15

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.

    
Mike Deck 20.05.2010, 16:29
quelle
4

In Ihrem Beispiel wird eine Fließkommazahl in einen int umgewandelt. Integer.parseInt () liest jedoch einen ganzzahligen Wert aus einem String.

    
Carl Manaster 20.05.2010 15:59
quelle
3

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.

    
Michael Myers 20.05.2010 16:02
quelle
1

Casting kann nur von einem numerischen Typ in einen anderen konvertieren. Das Interpretieren einer Zeichenfolge (auch "Parsen" genannt) muss mit einem Methodenaufruf erfolgen.

    
Paul Tomblin 20.05.2010 15:59
quelle
1

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.

    
kahen 20.05.2010 16:31
quelle
0
___ answer2875563 ___

In Ihrem Beispiel wird eine Fließkommazahl in einen int umgewandelt. Integer.parseInt () liest jedoch einen ganzzahligen Wert aus einem String.

    
___ answer2875597 ___

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.

    
___ qstnhdr ___ Anfänger Java Frage nach Integer.parseInt () und Casting ___ answer2875566 ___

Casting kann nur von einem numerischen Typ in einen anderen konvertieren. Das Interpretieren einer Zeichenfolge (auch "Parsen" genannt) muss mit einem Methodenaufruf erfolgen.

    
___ answer2875823 ___

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.

    
___ antwort43994265 ___

Folgender Code konvertiert String in int ohne Methoden

%Vor%

Ausgabe "3256" - & gt; 3256

    
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ tag123casting ___ Casting ist ein Prozess, bei dem ein Objekttyp explizit in einen anderen Typ konvertiert wird, wenn die Konvertierung zulässig ist. Dieser Prozess könnte zu einer Wertänderung führen. ___ answer43995582 ___
  1. 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 ()

  2. Ähnlich doppelte Klasse mit ParseDouble () und wir nennen es Double.ParseDouble ().

  3. Der generische Weg ist XXXX.ParseXXXX ()

  4. Die Hauptanwendung dieser Methode besteht darin, jedes Objekt in einen Primitiven umzuwandeln.

  5. 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.

  6. Und die andere Sache, beim Zugriff auf ein Objekt, kann Overhead sein. Es ist besser, als Primitive zu verwenden.

___ answer2875843 ___

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.

    
___ tag123parseint ___ parseInt ist eine Funktion, die die Ganzzahldarstellung einer gegebenen Zeichenfolge zurückgibt. ___ qstntxt ___

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?

    
___
sunil waghole 16.05.2017 06:47
quelle
0
  1. 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 ()

  2. Ähnlich doppelte Klasse mit ParseDouble () und wir nennen es Double.ParseDouble ().

  3. Der generische Weg ist XXXX.ParseXXXX ()

  4. Die Hauptanwendung dieser Methode besteht darin, jedes Objekt in einen Primitiven umzuwandeln.

  5. 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.

  6. Und die andere Sache, beim Zugriff auf ein Objekt, kann Overhead sein. Es ist besser, als Primitive zu verwenden.

Naga Venkatesh Gavini 16.05.2017 07:57
quelle

Tags und Links