.NET Lernen

Status
Nicht offen für weitere Antworten.

happy_robot

Bekanntes Mitglied
@illy_hro:

ich bin was solche diskussionen angeht etwas...na sagen wir mal mit erfahrungswerten vorbelegt.
in den letzten jahren habe ich es in keinem laden erlebt daß jemand daß was er macht auch wirklich beherrscht. immer nur bruchstücke. flickschusterei. gerade mal so das das was man machen will funktioniert. genausooft habe ich es auch erlebt daß eben dieselben leute fragend mit der schulter gezuckt haben wenn dann mal etwas nicht ging.

@RicoSoft:

wir reden aneinander vorbei.
ich habe durchaus interesse an C# gehabt und wollte es mir mal im detail anschauen. wenn bereits auf seite 10 eines buches eklatante schwächen ersichtlich sind lass ICH es lieber und rate auch anderen zur vorsicht. dieses verhalten mag "diletantisch" sein, aber ich kann klar begründen wieso ich dieses mache. dieser argumentation mag nun auch nicht jeder folgen, aber dennoch glaube ich daß es einige gibt die dies genauso sehen.

ich führe auch keine bestimmte sprache als "non-plus-ultra" ins feld. wo steht das?

die "IT-Branche" hält sich imho durch halbwissen aufrecht. allen ist alles egal, hauptsache es "tut" irgendwie, egal wie, möglichst schnell.
 

RicoSoft

Aktives Mitglied
@happy_robot:

mag sein, dann müsste man aber ja auf seite 20 von einem normalen Java-Buch dringend von Java abraten. So in der Grössenordnung dürfte wohl Autoboxing erklärt werden und der wohl bekannteste Pitfall in dem Zusammenhang

Code:
Integer i1 = 100;
Integer i2 = 100;
System.out.println(i1 == i2);

Integer i3 = 200;
Integer i4 = 200;
System.out.println(i3 == i4);

Ich würde mal sagen, das ist ziemlich verwerflich meiner Meinung nach.

Im Rest Deiner Aussagen geb ich Dir zwar nur teilweise recht, aber es ist schon so, dass es viele halbprofessionelle Entwickler gibt, die die Prioritäten öfters mal etwas falsch legen. Aber dass sich die IT-Branche dadurch aufrecht erhält, das würde ich so nicht unterschreiben. Gerade im High-End-Server Bereich wird da schon noch mit einer anderen Kelle gerührt, auch was Qualitätssicherung angeht.
 

happy_robot

Bekanntes Mitglied
das ist kein autoboxing.......(EDIT: zumindest nicht beim vergleich. nur bei der deklaration)

du vergleichst hier referenzen und keine werte. dieser vergleich ist auch durchaus sinnfrei (== ist ja auch nicht überladen, und der wert gehalt ist bereits atomar da primitiv).
bei gleichglautenden strings wird auch nur eine referenz im speicher abgelegt. d.h. man kann string-referenzen auch mit gleichlautenten literalen vergleichen.
dennoch zählt bei ints nur der wert (der auch dem hashCode entspricht) und die referenz hat keinerlei aussagekraft (eben auf grund des autoboxings mutiert sie ja).

EDIT:

die zahlen bis 127 sind als statics hinterlegt. dies ist nicht notwendig, macht aber aus performance-gründen durchaus sinn. bei einem auto-boxing 0 <= x < 128 werden daher die referenzen der statics zugewiesen. der vergleich ist daher gültig. alles darüber wird neu angelegt und der referenz-vergleich schlägt deshalb fehl.

Code:
for(int n = 0; n < 255; n++) {
			Integer i1 = n;
			Integer i2 = n;
			System.out.println((i1 == i2)+" -->  "+n);
}

EDIT:
und hier der kommentar von SUN:
An Integer is not a substitute for an int; autoboxing and unboxing blur the distinction between primitive types and reference types, but they do not eliminate it
der primitive typ sollte also immer gewählt werden. das auto-boxing sollte also nur als hilfsmittel dienen welcher die notwendigkeit von wrapperklassen überflüssig macht.

EDIT:
Und nach etwas recherche stellt sich heraus daß es dieses wohl auch in C# gibt.
http://www.geocities.com/csharpfaq/box.html
Und der letzte Satz ist besonders interessant:
The 'Type System Unification' in C# is half-baked and full of pitfalls.
wer damit arbeitet hat schon bugs bevor das erste zeichen getippt ist........
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Ist ABAP lernen noch sinnvoll? Softwareentwicklung 6

Ähnliche Java Themen

Neue Themen


Oben