Unterschied String und Integer

07/14/2015 19:30 Carlos Lehder#1
Hey Leute,

ich bin grad dabei VB zu lernen und bin noch komplett am Anfang. Ich lerne mit einem Buch und da war die Aufgabe mit Variablen die Adresse in ein Label einzufügen. Ich hab es mit Integer probiert, aber das hat nicht funktioniert, weil Integer soweit ich weiß nur für Zahlen ist. Dann hab ich String benutzt und da kann ich Zahlen + Buchstaben verwenden..? Wieso sollte ich dann überhaupt Integer jemals benutzen?

Ich weiß für die erfahrenen Programmierer unter euch klingt das bestimmt total behindert, aber ich verstehe es grad echt nicht.
07/14/2015 20:27 alpines#2
Der Grund warum du Integer verwenden solltest ist um damit rechnen zu können.
Der + Operator ist bei Integern anders als bei Strings.
Bei Strings würden die Strings aneinander gekettet werden: "123" + "456" = "123456"
Bei Integer hingegen würden die Zahlen addiert werden: 123 + 456 = 579.
07/14/2015 23:43 Carlos Lehder#3
Quote:
Originally Posted by alpines View Post
Der Grund warum du Integer verwenden solltest ist um damit rechnen zu können.
Der + Operator ist bei Integern anders als bei Strings.
Bei Strings würden die Strings aneinander gekettet werden: "123" + "456" = "123456"
Bei Integer hingegen würden die Zahlen addiert werden: 123 + 456 = 579.
Danke dir schon mal für die Antwort, aber anscheinend ist das nicht ganz richtig?

Quote:
Originally Posted by シノン View Post
In VB.net leider nicht ganz :p
Erklär mir doch bitte wie es in VB.net ist :)
07/15/2015 00:48 YatoDev#4
Quote:
Originally Posted by OCB1977 View Post
Erklär mir doch bitte wie es in VB.net ist :)
in VB lässt der compiler und der debugger ziemlich viel müll im code zu.
Das ist so weil der compiler einfach mal vermutet was du eigentlich machen wolltest.

(Weiß nicht genau ob es so krass ist, kann mich da auch irren)
Dim zahl As Integer = "123" funktioniert deshalb
Dim wort As String = 1 + 2 +3 ergibt also 6

Um das zu vermeiden solltest du Option strict und explicit auf ON stellen.
Dadurch erhöhst du die lesbarkeit des codes und vermeidest fehler von dir oder dem compiler
07/15/2015 02:20 Biesi#5
Quote:
Originally Posted by OCB1977 View Post
Erklär mir doch bitte wie es in VB.net ist :)
Vergiss was ich geschrieben habe, war ein Irrtum
07/15/2015 09:58 Yothri#6
Ich würde dir sowieso empfehlen mit C# anzufangen. Wenn du jetzt noch am Anfang bist, ist es für dich das gleiche, denn es ist das selbe Framework. Ich würde aber C# nehmen weil du da näher an der C - Syntax bist. Außerdem gibts da so Sachen wie Option Strict/Explicit ühaupt nit.
07/15/2015 15:12 stotterer09#7
Quote:
Originally Posted by Yothri View Post
Ich würde dir sowieso empfehlen mit C# anzufangen. Wenn du jetzt noch am Anfang bist, ist es für dich das gleiche, denn es ist das selbe Framework. Ich würde aber C# nehmen weil du da näher an der C - Syntax bist. Außerdem gibts da so Sachen wie Option Strict/Explicit ühaupt nit.
Und wieso ist die C# Syntax gleich besser?
Mir gefällt die C# Syntax auch besser aber man kann das nicht verallgemeinern
07/15/2015 17:46 Mostey#8
Ich würde alleine schon wegen der Speichergröße keinen String für Integer benutzen.

"2147483647" => 10 Bytes
2147483647 => 4 Bytes

"9223372036854775807" => 19 Bytes
9223372036854775807 => 8 Bytes

Mal abgesehen von der ständigen Casterei wenn man dann mal 2 Werte zusammen rechnen müsste.
07/15/2015 18:20 warfley#9
Quote:
Originally Posted by Mostey View Post
Ich würde alleine schon wegen der Speichergröße keinen String für Integer benutzen.

"2147483647" => 10 Bytes
2147483647 => 4 Bytes

"9223372036854775807" => 19 Bytes
9223372036854775807 => 8 Bytes

Mal abgesehen von der ständigen Casterei wenn man dann mal 2 Werte zusammen rechnen müsste.
Und "1" = 1 Byte und 1 = 4 Byte :D

Spaß bei Seite und zurück zum Thread.
String ist ein Datentyp zum Darstellen von Informationen als Lesbarer Text, zum Modellieren und Bearbeiten von Daten eher ungeeignet. Allein Operationen auf Strings (z.B. die Länge von einem String rausfinden) haben einen Linearen Zeitaufwand mit der Länge des Strings.

Dann kann man mit Strings einige dinge schlicht weg nicht machen, z.B. Rechnen nehmen wir die Zahlen 1 und 2
9 als String ist ein Array mit einem Element (57) und 1 Als String ist 49
Also Integer sind diese informationen jeweils 9(1001) und 1(0001)
Die Addition von 9 und 1 = 10 die Arithmetische addition von 57 und 49 wäre 106 und damit das zeichen "j".

Man kann zwar Strings in Integer und Umgekehrt umwandeln, dass sind aber dann auch recht große funktionen, welche viel leistung fressen.

Außerdem wie Mostey bereits geschrieben hat verbraten Strings pro Zeichen ein Byte (+1 Byte für den Zeiger +1 Byte für das 0 Byte, bei WideStrings sogar 2 Bytes pro zeichen) und dass nur bei Optimaler Speichernutzung für gewöhnlich ist die Kapazität eines Dynamischen Arrays größer als dessen Länge, damit man nicht für jedes element den Speicher neu allozieren muss.

Prinzipiell kann man sagen dass Strings für alles was nicht zur Darstellung, also für von Menschen gelesene Daten sind, der Denkbar schlechteste Datentyp ist.

Edit:
Quote:
Ich würde dir sowieso empfehlen mit C# anzufangen. Wenn du jetzt noch am Anfang bist, ist es für dich das gleiche, denn es ist das selbe Framework. Ich würde aber C# nehmen weil du da näher an der C - Syntax bist. Außerdem gibts da so Sachen wie Option Strict/Explicit ühaupt nit.
Nun ich denke es gibt kaum ein Argument was eher für eine der beiden Sprachen spricht, das ist alles schlicht weg Präferenz.
Ich zum Beispiel kann die C Syntax überhaupt nicht leiden, und nutze sprachen wie C oder Java nur wenn es nötig ist.
Und Option Strict ist eher ein Vorteil von VB denn VB gibt die Möglichkeit mit und Ohne zu arbeiten, während c# immer gleich strikt ist
07/15/2015 18:38 Biesi#10
Quote:
Originally Posted by Mostey View Post
"2147483647" => 10 Bytes
Sind chars in .net nicht sogar 2 Bytes groß?
07/15/2015 19:53 MrSm!th#11
Quote:
Und wieso ist die C# Syntax gleich besser?
Leichterer Umstieg auf andere Sprachen mit C-Syntax. Und das sind viele.

Quote:
Originally Posted by OCB1977 View Post
Hey Leute,

ich bin grad dabei VB zu lernen und bin noch komplett am Anfang. Ich lerne mit einem Buch und da war die Aufgabe mit Variablen die Adresse in ein Label einzufügen. Ich hab es mit Integer probiert, aber das hat nicht funktioniert, weil Integer soweit ich weiß nur für Zahlen ist. Dann hab ich String benutzt und da kann ich Zahlen + Buchstaben verwenden..? Wieso sollte ich dann überhaupt Integer jemals benutzen?

Ich weiß für die erfahrenen Programmierer unter euch klingt das bestimmt total behindert, aber ich verstehe es grad echt nicht.
Ganz einfach ausgedrückt:
Strings sind eben nicht für Zahlen und Buchstaben, sondern für Zeichen. Für den PC ist eine Zahl nicht gleich einer Aneinanderreihung von Zeichen. Mit Zahlen rechnest du, mit Zeichenketten speicherst du für Menschen lesbare Informationen. Dazu können auch die Zeichendarstellungen von Zahlen gehören, wenn man dem Menschen z.B. eine Zahl anzeigen will, aber das macht den String "123" nicht direkt zur Zahl. Du kannst damit nicht (direkt) rechnen, es wird ineffizienter gespeichert und man kann Zeichenketten auf unterschiedliche Weise im Speicher darstellen, was in manchen Fällen zusätzlichen Konvertierungsaufwand benötigt. Eine Zahl ist im Speicher immer* gleich.

*Auf niedrigem Level nicht ganz korrekt, aber auf dem Abstraktionslevel, auf dem man sich mit .NET Sprachen befindet, ist das irrelevant.
07/15/2015 21:12 Mostey#12
Quote:
Originally Posted by シノン View Post
Sind chars in .net nicht sogar 2 Bytes groß?
Wo hast du das denn gelesen?

Edit: [Only registered and activated users can see links. Click Here To Register...]


Ok, habe ich auch nicht gewusst. Scheint wohl aber nur bei .NET so zu sein, dann trifft meine Antwort eher auf die restlichen Sprachen zu.
07/16/2015 11:40 stotterer09#13
Quote:
Originally Posted by MrSm!th View Post
Leichterer Umstieg auf andere Sprachen mit C-Syntax. Und das sind viele.



Ganz einfach ausgedrückt:
Strings sind eben nicht für Zahlen und Buchstaben, sondern für Zeichen. Für den PC ist eine Zahl nicht gleich einer Aneinanderreihung von Zeichen. Mit Zahlen rechnest du, mit Zeichenketten speicherst du für Menschen lesbare Informationen. Dazu können auch die Zeichendarstellungen von Zahlen gehören, wenn man dem Menschen z.B. eine Zahl anzeigen will, aber das macht den String "123" nicht direkt zur Zahl. Du kannst damit nicht (direkt) rechnen, es wird ineffizienter gespeichert und man kann Zeichenketten auf unterschiedliche Weise im Speicher darstellen, was in manchen Fällen zusätzlichen Konvertierungsaufwand benötigt. Eine Zahl ist im Speicher immer* gleich.

*Auf niedrigem Level nicht ganz korrekt, aber auf dem Abstraktionslevel, auf dem man sich mit .NET Sprachen befindet, ist das irrelevant.
Ich denke mal in einer Woche hat man recht gut umgelernt was die Syntax betrifft. Wenn man mal eine Sprache mit C Syntax lernen will
07/16/2015 12:02 MrSm!th#14
Quote:
Originally Posted by Mostey View Post
Wo hast du das denn gelesen?

Edit: [Only registered and activated users can see links. Click Here To Register...]


Ok, habe ich auch nicht gewusst. Scheint wohl aber nur bei .NET so zu sein, dann trifft meine Antwort eher auf die restlichen Sprachen zu.
Welche restlichen Sprachen sollen das sein? Die meisten modernen Sprachen bringen von Haus aus Unicode Strings mit. Eine Unterscheidung wie bei C/C++ ist eher die Seltenheit.

Quote:
Originally Posted by stotterer09 View Post
Ich denke mal in einer Woche hat man recht gut umgelernt was die Syntax betrifft. Wenn man mal eine Sprache mit C Syntax lernen will
Mag sein, es gibt aber einfach kein überzeugendes Argument für VB.NET. Das ist eine Sprache, die dazu diente, alte VB Entwickler für .NET zu begeistern. Ich sehe echt keinen Sinn darin, mit dieser Sprache anzufangen, zumal es mit den Altlasten aus VB auch noch diverse Fallstricke gibt.
07/18/2015 03:10 Nanoxx™#15
Quote:
Originally Posted by MrSm!th View Post
Welche restlichen Sprachen sollen das sein? Die meisten modernen Sprachen bringen von Haus aus Unicode Strings mit. Eine Unterscheidung wie bei C/C++ ist eher die Seltenheit.



Mag sein, es gibt aber einfach kein überzeugendes Argument für VB.NET. Das ist eine Sprache, die dazu diente, alte VB Entwickler für .NET zu begeistern. Ich sehe echt keinen Sinn darin, mit dieser Sprache anzufangen, zumal es mit den Altlasten aus VB auch noch diverse Fallstricke gibt.
Ich habe mit VB angefangen und habe mit dann für die Unity Engine interessiert... Da das nur mit C# geht habe ich mich damit weiter gemacht wobei VB ne gute Grundlage war (Da man ein 'leichtes' "Gefühl" dafür kriegt)

C# hatte ich dann nach 2 tagen drinn und konnte mit Unity weiter machen

Mittlerweile versuche ich mich mit ein paar Freunden an der Unreal Engine und lerne auch ein 'bisschen' C++.


Du musst halt gucken was brauchst du / was willst du machen? (Was gefällt dir?)


->>>>> Wenn im string nur zahlen sind [50+50] kommen trotzdem 100 raus ;)