Coderätsel

ich würde mal vermuten ein neues „abc“, ein neues „abc“ ist.

[QUOTE=Noctarius;10948]Ich hab ne Vermutung aber ich wüsste nicht warum das passieren sollte. Weil man immer mit Sourcegrenzen und nicht mit Targetgrenzen kopiert (falls du weißt, was ich meine).
Immerhin wird das letzte try/catch auch nen Grund haben :D[/QUOTE]

Sprich deine Vermutung aus, auch wenn du nicht weißt warum. Ich vermute, dass du damit recht haben wirst :wink: .

Es fliegt ne Exception?

jap :). Erklärung: Ein String wird intern als Char-Array vorgehalten. Außerdem gibt es zusätzlich intern noch einen offset und einen count. Der String-Inhalt wird also nicht über das gesamte Char-Array definiert, sondern über den offset und count. Ich habe aber nur die value, nicht aber den count manipuliert. Deshalb fliegt beim letzten try-catch eine ArrayIndexOutOfBoundsException.

Noctarius ist dran.

Wie ich bin dran? OO

Du hast das Rätsel gelöst, du musst die nächste Frage stellen :wink:

Argh ähm nee knacken macht viel mehr Spaß als ausdenken :smiley:

Naja ich überleg mir nachher ma was (hoffentlich)

So mal schauen :smiley:

	public static void main(String[] args) {
		String nullString = null;
		int nullInteger = Integer.parseInt("0");
		System.out.println("http://forum.byte-welt.de");
		try {
			System.out.println("1: " + "null".equals(String.valueOf(nullString)));
		} catch (Throwable t) {}
		try {
			System.out.println("2: " + "null".equals(String.valueOf(nullInteger)));
		} catch (Throwable t) {}
		try {
	        System.out.println("3: " + "null".equals(String.valueOf(null)));
			} catch (Throwable t) {}
		try {
			System.out.println("4: " + "null".equals(String.valueOf((Object)null)));
		} catch (Throwable t) {}
		try {
			System.out.println("5: " + "null".equals(String.valueOf("null")));
		} catch (Throwable t) {}
	}
}```

Auch hier: Ausgabe bestimmen und Ausprobieren ist laaaaaaaaaaaaahm ^^

ich denk
true
false
nullpointer
nullpointer
true

[QUOTE=EagleEye]ich denk
true ← richtig
false ← richtig
nullpointer ← falsch
nullpointer ← falsch
true ← richtig[/QUOTE]

Wenn ich die Zahlen am Anfang mal weglasse :smiley:

edit: und am Anfang fehlt was ^^

ok dann


http://forum.byte-welt.de
1: true
2: false
3: true
4: true
5: true

Ähm nein :smiley: Zeile 3 stimmt nicht.

ok dann wird da wohl nen true kommen :smiley:

Nein auch nicht :slight_smile:

Zugegeben: Ich hab’s getestet… das grenzt ja an einen Bug :eek:

Nööö ist ganz “klar” wieso das passiert Marco =)

Ein equals liefert kein true oder false zurück? Hab in den Quellcode von String und Integer geguckt. String.valueOf funktioniert tatellos und Integer.toString war mir jetzt so früh am Morgen zu komplex :smiley: (mal was anderes: Warum ruft String.valueOf(int i) eigentlich Integer.toString(i, 10) auf, welches nach einer Überprüfung Integer.toString(i) aufruft? Wäre doch effizienter, wenn direkt Integer.toString(i) aufgerufen werden würde!?), wüsste aber nicht, warum es hier zu nem Fehler kommen sollte.

Ok wenn auch du es nicht weißt, soll ich dann auflösen? :smiley:

kA … gibt ja noch andere Java-Könner die hier regelmäßig schreiben. VuurWerk bspw. oder LeX

Dann warten wir noch ein wenig :slight_smile:

Das ist ja ein übles Rätsel. :eek: