Seltsame Konstanten (und Verwendung)

Status
Nicht offen für weitere Antworten.

Campino

Top Contributor
Code:
public static final int START=new Integer("start").intValue();
public static final int STOP=new Integer("stop").intValue();

ist das konstant oder nicht? Der Compiler beschwert sich nicht aber:

Code:
switch(new Integer([String]).intValue()){
		case STOP:
			...;
			break;
		case START:
			...;
                        break;
		}

geht auch nicht.
Also: Ist es eine Konstante oder nicht?
 
B

bygones

Gast
äh - wenn das compilierbar ist muss ich noch Java Bücher lesen

was soll denn
Code:
new Integer("start")
sein ???

wenn ich
Code:
public class Codierung {
	private static final int H = new Integer("start").intValue();
	
	public static void main(String[] args) {
		System.out.println(H);
	}
}
starten lasse erhalte ich eine

java.lang.ExceptionInInitializerError
Caused by: java.lang.NumberFormatException: For input string: "start"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:447)
at java.lang.Integer.<init>(Integer.java:620)
at test.Codierung.<clinit>(Codierung.java:12)
Exception in thread "main"
 
B

Beni

Gast
Mit Konstant wird da wahrscheinlich nur sowas akzeptiert: "public static final int START = 12;".

Vielleicht kann der Compiler so irgendwelche Optimierungen machen, wenn er da direkt "12" einsetzen kann?
 

Campino

Top Contributor
Beni hat gesagt.:
Mit Konstant wird da wahrscheinlich nur sowas akzeptiert: "public static final int START = 12;".

Vielleicht kann der Compiler so irgendwelche Optimierungen machen, wenn er da direkt "12" einsetzen kann?

bei der switch-Anweisung wird das so sein


Das das nicht Compilierbar ist mag sein, aber Eclipse beschwert sich wenn überhaupt erst beim compilieren.
 
B

bygones

Gast
dann lass mal laufen....

du solltest bei den Konstanten mit ints (bzw. ab java5 enum) arbeiten.

wenn es aber nur mit Strings geht dann geht das nicht per switch....
 

meez

Top Contributor
Campino hat gesagt.:
Das das nicht Compilierbar ist mag sein, aber Eclipse beschwert sich wenn überhaupt erst beim compilieren.
Also beim speichern....
Es gibt schon einen einen String-Konstruktor in Integer, doch es ist ziemlicher Schwachsinn was du da machst?
Was soll den start (oder stop) für eine Zahl sein??
 

Campino

Top Contributor
meez hat gesagt.:
Campino hat gesagt.:
Das das nicht Compilierbar ist mag sein, aber Eclipse beschwert sich wenn überhaupt erst beim compilieren.
Also beim speichern....
Es gibt schon einen einen String-Konstruktor in Integer, doch es ist ziemlicher Schwachsinn was du da machst?
Was soll den start (oder stop) für eine Zahl sein??

Keine Ahnung, aber damit kann man Strings in switch verwenden :wink:
 

meez

Top Contributor
Das wirft eine NumberFormatException...:meld:
(Oder alles was ich bisher über Java gelernt habe, ist nichtig)
 

mic_checker

Top Contributor
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/switch.html
Use the switch (in the glossary) statement to conditionally perform statements based on an integer expression.

Du kannst natürlich solche Konstanten verwenden, aber letztendlich müssen hinter diesen Konstanten dann wieder ints stehen.

Deshalb funzt es ja auch wenn du z.B. so was schreibst:

Code:
	public static final int START=35;
	public static final int STOP=34;

Wenn du es nicht glaubst, lass mal das prog mit deinen parseInt("start") laufen und NFE wird ausgelöst.
 

Campino

Top Contributor
mic_checker hat gesagt.:
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/switch.html
Use the switch (in the glossary) statement to conditionally perform statements based on an integer expression.

Du kannst natürlich solche Konstanten verwenden, aber letztendlich müssen hinter diesen Konstanten dann wieder ints stehen.

Deshalb funzt es ja auch wenn du z.B. so was schreibst:

Code:
	public static final int START=35;
	public static final int STOP=34;

Wenn du es nicht glaubst, lass mal das prog mit deinen parseInt("start") laufen und NFE wird ausgelöst.


1. Ich wandle die strings ja in int's um bevor ich ein switch damit mache...mit Strings geht kein switch

2. parseInt wirft in der tat eine NumberFormatException, aber deshalb nehm ich ja intValue()
 

mic_checker

Top Contributor
Campino hat gesagt.:
1. Ich wandle die strings ja in int's um bevor ich ein switch damit mache...mit Strings geht kein switch

Ja, aber:

Was ist wenn du den String "123" in int parst? Dann kommt 123 raus - soweit so gut. Aber was ist wenn du "test" parst? Was soll da als int rauskommen? Da löst er ne NumberFormatexception aus.

2. parseInt wirft in der tat eine NumberFormatException, aber deshalb nehm ich ja intValue()
S.o.
 

mic_checker

Top Contributor
Campino: Schau dir mal Integer genauer an:

public Integer(String s)
throws NumberFormatException

Constructs a newly allocated Integer object that represents the int value indicated by the String parameter. The string is converted to an int value in exactly the manner used by the parseInt method for radix 10.
....
Throws:
NumberFormatException - if the String does not contain a parsable integer.
 

Campino

Top Contributor
okay, ich hab mich fatan, aber:


Code:
char c='c';
int x=(int)c;
System.out.println(x);
geht und liefert 99.

ich dachte, dass bei "test" 448 rauskommt, weil:

Code:
int i=0;

i=i+((int)'t');
i=i+((int)'e');
i=i+((int)'s');
i=i+((int)'t');

System.out.println(i);

448 liefert.
 

mic_checker

Top Contributor
Campino hat gesagt.:
okay, ich hab mich fatan, aber:
Code:
char c='c';
int x=(int)c;
System.out.println(x);

Den Cast brauchst du nichtmals, das wird auch ohne Cast 99 liefern, da c nun mal für 99 steht (Kleinbuchstaben fangen bei 97 an - a und gehen bis 122 - z)

geht und liefert 99.

ich dachte, dass bei "test" 448 rauskommt, weil:

Code:
int i=0;

i=i+((int)'t');
i=i+((int)'e');
i=i+((int)'s');
i=i+((int)'t');

System.out.println(i);

448 liefert.

Du hast da aber einen String und nicht char. Deshalb klappt es nicht.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Variablen Addition von Double-Werten ergibt seltsame 0.9999999 Zahlen Allgemeine Java-Themen 2
VfL_Freak Große und seltsame Probleme nach Java-Update auf V1.8.0_91 Allgemeine Java-Themen 3
KilledByCheese Dezimal nach Hexadezimal rechner wirft seltsame exception Allgemeine Java-Themen 4
javampir Seltsame Lücken beim Abspielen von Sound Allgemeine Java-Themen 2
J Seltsame Exception beim Java Applet einbinden in Html Allgemeine Java-Themen 2
T Seltsame duplikate Methoden Allgemeine Java-Themen 2
E seltsame Parameterdeklaration Allgemeine Java-Themen 19
L Seltsame Klassen Allgemeine Java-Themen 2
U Seltsame Exception Allgemeine Java-Themen 10
D Seltsame Ausgabe beim zusammenführen zweier Dateien Allgemeine Java-Themen 14
R seltsame virenwarnung Allgemeine Java-Themen 2
Neumi5694 Compiler-Fehler Konstanten entfernen während des Kompiliervorgangs Allgemeine Java-Themen 7
R Konstanten initialisieren - FRAGE Allgemeine Java-Themen 3
H Best Practice zu vielen konstanten Objekten? Allgemeine Java-Themen 10
E Variablen Konstanten definieren Allgemeine Java-Themen 4
F Konstanten mir Strings "verknuepfen" Allgemeine Java-Themen 10
Z Konstanten in Java Allgemeine Java-Themen 9
S jdk versus openjdk - Optimierung von Konstanten? Allgemeine Java-Themen 8
J abstrakte Klassen, Konstanten und Konstruktor Allgemeine Java-Themen 9
D binäres ODER oder mehr Konstanten? Allgemeine Java-Themen 10
I Konstanten bei Erzeugung eines Objekts initialisieren Allgemeine Java-Themen 3
Schandro Annotation vs Javadoc bei Konstanten Allgemeine Java-Themen 2
L Konstanten der Klasse Color - Naming Conventions Allgemeine Java-Themen 6
GilbertGrape persistentes Enum oder Konstanten? Allgemeine Java-Themen 3
F Warum lokale Konstanten klein schreiben? Allgemeine Java-Themen 4
G Effizienz von enum vs. Konstanten Allgemeine Java-Themen 4
R Namen von Konstanten mit Strings vergleichen Allgemeine Java-Themen 7
T Probleme mit Konstanten und Stringverkettung Allgemeine Java-Themen 5
D Zusammensetzen von konstanten String Arrays zu einem Neuen Allgemeine Java-Themen 14
R Erstellen zusätzlicher Konstanten beim Kompiliervorgang Allgemeine Java-Themen 3
M Speicherplatzanforderung von Konstanten Allgemeine Java-Themen 13
Z JNA Cpp-DLL String Verwendung Allgemeine Java-Themen 2
M WSDL: Doppelte Typenames (Keine Verwendung möglich) Allgemeine Java-Themen 5
F Klassen Verwendung abstrakter Klassen Allgemeine Java-Themen 9
K Saubere Verwendung von Generic Types Allgemeine Java-Themen 7
D Verwendung von Selenium Allgemeine Java-Themen 2
P ClassCastException bei Verwendung eines Interfaces Allgemeine Java-Themen 7
M Fehler bei Verwendung von TexturePaint Allgemeine Java-Themen 16
S OOP Apache Commons Math - Verwendung von Genetics - Wie werden Daten in Chromosomen gespeichert? Allgemeine Java-Themen 4
M Verwendung der Cipher von gnu crypto (Serpent) Allgemeine Java-Themen 3
B Verwendung von Packages im Java Code Allgemeine Java-Themen 10
P Richtige Verwendung eines Timers Allgemeine Java-Themen 8
T Warnungsfreie Verwendung von Generics Allgemeine Java-Themen 11
M Problem bei der Verwendung von AES Allgemeine Java-Themen 2
J Port verwendung Allgemeine Java-Themen 13
M Verwendung von unchecked exceptions & bereits vorhandenen exceptions was priorisieren Allgemeine Java-Themen 3
X Wie 'teuer' ist die Verwendung des Stack Trace ? Allgemeine Java-Themen 8
Final_Striker Exceptionhandling: Richtige Verwendung des Try/Catch Blocks Allgemeine Java-Themen 14
W Verwendung von byte Allgemeine Java-Themen 9
L Verwendung? Allgemeine Java-Themen 2
D Fehlerhafte Thread Verwendung beim arbeiten mit Sockets Allgemeine Java-Themen 6
N allg. Frage zur Verwendung von this Allgemeine Java-Themen 3
G Verwendung von DataInputStream und URL Allgemeine Java-Themen 2
X Exception bei Verwendung von systray4j Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben