Anfänger-Java Frage zu Integer.parseInt() und Gießen
also beim casting, wie in der Anweisung unten :-
int randomNumber=(int) (Math.random()*5)
es bewirkt, dass die zufällige nicht. erzeugt, umgewandelt in ein int..
Dort gibt es eine Methode, die ich kam gerade über Integer.parseInt (), die das gleiche tut !
ich.e eine ganze Zahl zurück
Warum zwei verschiedene Möglichkeiten, um den Wert einer int ?
Außerdem machte ich eine Suche, und es sagt parseInt() übernimmt die Zeichenfolge als ein argument.. So bedeutet dies, dass die parseInt() ist NUR zum konvertieren von String in integer ?
Was über das casting dann (int) ?? Können wir diese verwenden, um zu konvertieren einen string in einen int zu ?
sorry wenn es klingt wie eine dumme Frage..ich bin einfach nur verwirrt und versuchte zu verstehen
Helfen ?
- Dies ist nicht die Antwort auf Ihre ParseInt Probleme, aber erwägen Sie die Verwendung
java.util.Random
. Sie tun kannRandom rand = new Random()
undint dieRoll = rand.nextInt(6)+1;
(beachten Sie, dassnextInt
0 zurück, um (n-1), das ist, warum die zusätzliche 1) - Ich war über diese Bemerkung machen zu. Es ist überraschend, wie oft wir noch die
Math.random() * N
non-sense. - gut gemacht für die Befragung der dies in der Weise, die du getan hast, besonders das Stück über die können wir verwenden (int) casten eines string zu einem int.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Integer.parseInt nicht tun die gleiche Sache wie eine Besetzung.
Let ' s werfen Sie einen Blick auf Ihr erstes Beispiel:
Math.random gibt ein double zurück, und multiplizieren Sie einen double durch einen int Java hält das Ergebnis ein double ist. Damit der Ausdruck Math.random()*5 ist eine Art von Doppel. Das, was du versuchst zu tun ist, weisen Sie diesen Wert an eine variable vom Typ int. Standardmäßig wird Java nicht zulassen, dass Sie zum zuweisen eines double-Wert in eine variable vom Typ int ohne Ihre ausdrücklich sagen dem compiler, dass es ok ist, dies zu tun. Grundsätzlich kann man denken, der Umwandlung eines double in einen int als erzählt der compiler, "ich weiß, das int-variable kann nicht halten Sie den Dezimalwert der das doppelte Wert, aber das ist ok, nur es abschneiden."
Nun nehmen Sie einen Blick bei der Umwandlung von einem String zu einem int:
Den string "5" ist nicht sofort umwandelbar in ein integer. Im Gegensatz verdoppelt, die per definition umgewandelt werden können, um eine ganze Zahl, indem die Dezimalstellen, die Saiten können nicht einfach oder immer wieder umgewandelt in int. "5", "042" und "1,000" haben alle integer-Darstellungen, sondern so etwas wie "Hallo, Welt!" nicht. Denn dieses gibt es nicht zuerst um Sprache-Funktion für die Konvertierung von String in int. Verwenden Sie stattdessen eine Methode parse den String und geben den Wert zurück.
So alle Ihre Fragen zu beantworten:
Müssen Sie berücksichtigen, was der Typ des Wertes, die Sie konvertieren. Wenn Sie die Konvertierung von einem primitiven zu einem int können Sie einen Gips, wenn Sie konvertieren ein Objekt, benötigen Sie irgendeine Art von Umwandlung Methode, die spezifisch für diesen Typ.
Richtig. Sie nicht passieren können, jede andere Art der parseInt-Methode, oder Sie bekommen einen compiler-Fehler.
Nein, casting nach int wird nur für primitive Werte, und in Java ein String ist nicht primitiv.
In deinem Beispiel, sind Sie Gießen ein floating-point-Zahl in eine int. Integer.parseInt(), jedoch liest einen integer-Wert aus einer Zeichenfolge.
Können Sie nur gegossen zwischen kompatiblen Typen (ich würde den link zu der JLS, aber das könnte zu viel für einen Anfänger-Frage).
Casting ist im Grunde nur unter einen Wert und sagen, "Hey, dieses Ding, dass war ein double? Jetzt ist es ein int. So ist es."
Können Sie nicht mit einem string, weil es nicht so etwas wie ein int. Sie müssen stattdessen analysieren ein int, es ist eigentlich viel schwieriger, als es klingt. Zum Glück, es ist bereits implementiert, so dass Sie nicht haben, um sorgen machen, wie es funktioniert.
Casting-kann nur konvertieren von einem numerischen Typ in einen anderen. Die Interpretation einer Zeichenkette (auch bekannt als parsing) werden muss, geschieht mit einem Aufruf der Methode.
Beginnen wir von oben.
Ja, das hat in der Tat eine zufällige ganze Zahl zwischen 0 und 4, aber das ist sehr viel nicht der richtige Weg, dies zu tun. Sehen Sie, wenn Sie vergessen, eine Klammer, D. H. Sie geben
erhalten Sie immer 0, da casting hat eine höhere Priorität als die Multiplikation. Das ist zu sagen, das Ergebnis der Mathematik.random() ist zunächst gezwungen, in eine Ganzzahl, die immer 0 und dann mit 5 multipliziert, die ist immer noch 0.
Ich würde zugunsten der Verwendung von java.util.Random zur Generierung von Zufallszahlen ganze zahlen. siehe http://java.sun.com/javase/6/docs/api/java/util/Random.html#nextInt(int).
Casting kann nur durchgeführt werden, zwischen "kompatibler Arten". Für die primitiven Datentypen und deren Wrapper (D. H. int, Integer, long, Long, &c.) Sie können immer cast zwischen Ihnen, mit der Einschränkung, dass einige Konvertierungen Informationen verloren gehen. z.B. bei der Umwandlung von long in int, der lange kann eine Zahl enthalten, die größer als Integer.MAX_VALUE]. Diese Art von casting-Java im Grunde habe von C++, die es wiederum von C.
Als bei Guss-Objekten, ist es tatsächlich einfacher. Einfach Fragen: "ist dieses Objekt, o, ein X?" Wenn ja, dann (X) o macht Sinn und hat statischen Typ X. Wenn a ist nicht ein X und Sie versuchen zu casten sowieso, bekommst du eine classcastexception-Fehler bedeutet, dass o die dynamische (Laufzeit -) Typ ist nicht kompatibel mit X. Dies wird wahrscheinlich zu machen viel mehr Sinn, später, wenn Sie den Unterschied zwischen statischen und dynamische (Laufzeit -) Typs von Objekten.
Folgenden code konvertieren von String zu int ohne Methoden
Ausgabe "3256" --> 3256
Parse () - Methode zur Verfügung steht, viele Formate, Ganzzahl-Klasse mit der Methode ParseInt() ist eine statische Methode, wir nennen diese Methode von Integer.ParseInt()
Ähnlich Doppel Klasse ParseDouble()und nennen wir es Doppelt.ParseDouble().
Den allgemeineren Weg ist XXXX.ParseXXXX()
Die wichtigste Anwendung dieser Methode ist zum konvertieren eines beliebigen Objekts in einen Primitiven.
Und hier können Sie eine Frage aufwerfen, warum wir brauchen, um zu konvertieren in Primitive?
Die Antwort ist, wir wissen, dass primitive sind gespeichert in der stack-Bereich und Objekte, die gespeichert werden im Heap-Bereich, und Sie will nicht Abfall der Heap-Speicher, und Sie können konvertieren Sie ein Objekt in einen Primitiven.
... Und die andere Sache ist, während der Zugriff auf ein beliebiges Objekt, kann es Overhead.
Es ist besser, als eine Primitive.