Die Größe eines Strings in Byte berechnen?

Status
Nicht offen für weitere Antworten.

data89

Bekanntes Mitglied
Hallo, da meine Frage in einem anderen Beitrag nicht beachtet wurde, setze ich Sie einfach mal hier rein! :cool: :cool:

Wie berechne ich die größe eines Strings in byte?

Also ich gebe den String "Hallo" rein und bekomme raus "21" Byte. Ich habe gelesen, dass die Zeichen Addiert werden (ord/chr) + "FOF" .. ?

Unter Google hat man nichts "wirkliches" gefunden!!

data89
 

Ariol

Top Contributor
Code:
System.out.println("Hallo".toCharArray().length * 16);

Java codiert chars mit 16byte
 

Wildcard

Top Contributor
So simpel sind Strings nicht aufgebaut. Die Rechnung geht daneben. Da Unicode Zeichen zum Teil mit mehr als 2 byte kodiert werden müssen, gibt es sogenannte surrogate pairs, also Kombinationen aus mehreren chars. Die Character Klasse sollte dafür einige Methoden anbieten,
 
G

Gelöschtes Mitglied 5909

Gast
desweiteren würde ich mal behaupten dass ein String Objekt noch mehr speicher frisst als ein einfaches char array, auch wenn das natürlich darin gekapseöt ist. Die größe des tatsächlichen String Objekts herauszufinden ist etwas schwieriger, spontan würde ich das ganze Serialisieren und dann schaun wie groß der Spaß ist.
 
S

SlaterB

Gast
Code:
public class Test
{

    public static void main(String[] args)
        throws Exception
    {
        String[] array = new String[1];
        System.out.println(size(array));
        array[0] = "";
        System.out.println(size(array));
        array[0] = "a";
        System.out.println(size(array));
        array[0] = "Hallo";
        System.out.println(size(array));
        array[0] = "Hallo12345678901234567890123456789012345678901234567890";
        System.out.println(size(array));
        for (int i = 0; i < 300; i++)
        {
            array[0] = "";
            for (int j = 0; j < i; j++)
            {
                array[0] += ((char)j);
            }
            System.out.println(size(array)+", "+array[0].length());
        }
    }

    public static int size(Object o)
        throws Exception
    {
        ByteArrayOutputStream bo = new ByteArrayOutputStream();
        ObjectOutputStream oo = new ObjectOutputStream(bo);
        oo.writeObject(o);
        oo.close();
        return bo.toByteArray().length;
    }

}

->

Ausgabe:
45
47
48
52
102
47, 0
49, 1
50, 2
51, 3
52, 4
[..]
171, 123
172, 124
173, 125
174, 126
175, 127
176, 128
178, 129
180, 130
182, 131
184, 132
186, 133
[..]

45 Byte für die ganze Serialisierung an sich sowie das Array,
nur 2 Bytes mehr für einen Leerstring, erstaunlich wenig, da wird vielleicht sehr sparsam gespeichert,
Serialisierung muss nicht unbedingt dem ganzen Objekt im Speicher entsprechen,

für die Buchstaben dann anfangs nur 1 Byte (edit: beim ersten Buchstaben sind es hier immer 2 Bytes),
zumindest in der Serialisierung werden kleine chars anscheinend sehr platzsparend gespeichert,
muss für den Arbeitsspeicher oder sonstige Speicherungen nix heißen,

ab char 128 reicht der byte-Platz nicht mehr und es müssen 2 Bytes pro Buchstabe sein
 

Ark

Top Contributor
Kann es sein, dass bei der Serialisierung diese spezielle UTF-8-Kodierung (mit dem Doppel-NUL) zum Einsatz kommt?

Ark
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Encera Größe eines Objektes in Byte berechnen Allgemeine Java-Themen 2
D Größe der Zahlenkombinationen eines Arrays begrenzen Allgemeine Java-Themen 3
L Größe eines Objekts im Arbeitsspeicher Allgemeine Java-Themen 1
L unterschiedliche Größe beim serialisieren eines Objektes! Allgemeine Java-Themen 6
P Größe eines Directories ermitteln mit allen SubDIR`s Allgemeine Java-Themen 28
H Größe eines Bildes ändern und Bild speichern Allgemeine Java-Themen 11
H Größe eines Schriftzeichens ermitteln Allgemeine Java-Themen 2
J Größe einer CD ermitteln Allgemeine Java-Themen 10
D Integer-Array variabler Größe mit Zahlen befüllen (Schleifen) Allgemeine Java-Themen 0
N Kombinationen beliebiger Größe berechnen Allgemeine Java-Themen 1
heyluigi Random Integer Array Ausgabe nach Größe sortieren Allgemeine Java-Themen 6
C Ein Array mit der Größe von 1 KB erstellen Allgemeine Java-Themen 3
M ZipOutputStream gleiche Datei andere Größe? Allgemeine Java-Themen 0
M Array "Größe" anpassen Allgemeine Java-Themen 2
V Files mit Umlauten ergeben keine Größe Allgemeine Java-Themen 9
E ArrayList mit unbekannter Größe Allgemeine Java-Themen 8
F String in feste Größe zerlegen Allgemeine Java-Themen 11
F JFreeChart Größe anpassen Allgemeine Java-Themen 8
Z Position/Größe von Windows-Fenstern ermitteln Allgemeine Java-Themen 12
B JScrollPane und JPanel: Scrollen nur nach Größe des JPanels Allgemeine Java-Themen 2
W Größe des eingebauten Arbeitsspeichers auslesen Allgemeine Java-Themen 13
Developer_X Java3D-Ball größe angeben Allgemeine Java-Themen 12
reibi Größe Array aus bytes Allgemeine Java-Themen 14
G ändernde größe des GrindBagL Allgemeine Java-Themen 2
G itext größe von image Allgemeine Java-Themen 2
S array von unbekannter größe Allgemeine Java-Themen 2
T Größe eine Variablen in Bytes? Allgemeine Java-Themen 22
C Größe von einem File Allgemeine Java-Themen 9
D JFrame vergrößert nicht auf die gewünschte Größe Allgemeine Java-Themen 2
S Bild Größe verändern Allgemeine Java-Themen 2
G String Array Größe begrenzt? Allgemeine Java-Themen 4
B ArrayList mit Größe initialisieren Allgemeine Java-Themen 16
P Maximale Größe einer Klasse Allgemeine Java-Themen 9
G Image in der Größe ändern Allgemeine Java-Themen 2
S Swing - Problem mit Fenster-/Komponenten-Größe Allgemeine Java-Themen 3
R Größe der JRE anpassen Allgemeine Java-Themen 18
G http maximale transfer größe? Allgemeine Java-Themen 3
M Datein einlesen und in feste Größe aufsplitten Allgemeine Java-Themen 2
J Größe von 2D-Arrays Allgemeine Java-Themen 3
E JPEG Datei Größe und Qualität ändern (für Thumbnails) Allgemeine Java-Themen 4
thE_29 Größe bzw. Zeilen einer Datei Allgemeine Java-Themen 4
O regulärer Ausdruck zum durchsuchen eines Strings verwenden Allgemeine Java-Themen 2
T Rotationswinkel eines Bildes bestimmen Allgemeine Java-Themen 4
C Probleme beim Erstellen eines runnable-jar files Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
8u3631984 Prüfen ob min. ein Element eines Sets in einem anderen Set enh Allgemeine Java-Themen 4
M Array Rang eines Elements Allgemeine Java-Themen 4
OnDemand Teile eines Links entfernen Allgemeine Java-Themen 6
H Auslesen eines (LDAP-)Attributs in Active Directory Allgemeine Java-Themen 2
W JSON parsen eines ,mit JS.stringify erstellten Strings Allgemeine Java-Themen 27
H Textposition eines gedrehten Textes verschieben Allgemeine Java-Themen 8
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
E Ersetzen eines Bildes in der Kopfzeile eines Word-Docx-Dokuments mit Apache POI XWPF Allgemeine Java-Themen 0
N Fahrtrichtung eines selbstfahrenden Auto ändern Allgemeine Java-Themen 3
T Letztes Zeichen eines Strings enfernen Allgemeine Java-Themen 14
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
gotzi242 Schatzsuche mithilfe eines O(log n) Algorithmus Allgemeine Java-Themen 2
C Koordinaten LONG/LAT eines neuen Punktes in bestimmter Entfernen und Winkel berechnen Allgemeine Java-Themen 3
Tobero Meine Funktion für das beinhalten eines Punktes in einem Kreis funktioniert nicht Allgemeine Java-Themen 5
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
S Mittelwert anhand eines Stream berechnen Allgemeine Java-Themen 5
kodela Breite eines erweiterten Monitors feststellen Allgemeine Java-Themen 5
R Zeilen eines 2d Arrays abwechselnd links und rechts mit Nullen auffüllen Allgemeine Java-Themen 14
Zrebna Alternative Darstellung eines Codesnippets Allgemeine Java-Themen 33
kodela Inhalt eines Arrays ändert sich mysteriös Allgemeine Java-Themen 2
bueseb84 Wget mit Wildcards - oder wie lädt man bei JFrog die letzte Version eines Artifacts herunter Allgemeine Java-Themen 3
N Erkennen eines Programs Allgemeine Java-Themen 2
N Pausieren eines Programmes Allgemeine Java-Themen 4
D Input/Output Implementierung eines CommandHandlers/Parsers für viele Eingaben Allgemeine Java-Themen 26
M Gibt es eine API die den aktuellen Wert eines Indikators beim Trading zurückgibt? Allgemeine Java-Themen 7
F Wie bekommt man alle Filenamen eines Webserver Verzeichnisses Allgemeine Java-Themen 6
A Fehler beim Öffnen eines Projekts Allgemeine Java-Themen 6
N Eigenschaften eines Buttons per Setter verändern Allgemeine Java-Themen 5
S Ausfuehrung eines Programms aufzeichnen..? Allgemeine Java-Themen 4
X Ermittlung eines doppelte Paars mit Streams Allgemeine Java-Themen 50
Stonie Prüfen von direkter Implementierung eines Interfaces Allgemeine Java-Themen 7
S Vorbereitung eines Praktikums Allgemeine Java-Themen 4
H Aufruf eines Web Service anhand übergebenen Parameter Allgemeine Java-Themen 2
M Weiterleiten von empfangenen Nachrichten eines StompSessionHandlers Allgemeine Java-Themen 1
J Programm zum Suchen eines Wortes im Dateisystem Allgemeine Java-Themen 4
H Rename eines Projekts Allgemeine Java-Themen 1
J Fenstergröße eines anderen Programmes auslesen Allgemeine Java-Themen 9
ReinerCoder auf Klassen innerhalb eines package zugreifen Allgemeine Java-Themen 22
Meeresgott Erste Schritte Sourcetree - Git | Suchen eines Commits Allgemeine Java-Themen 2
E Status eines USB Mikrofon abfragen Allgemeine Java-Themen 2
DaCrazyJavaExpert OOP Ansätze und Tipps zum Porgrammieren eines Taschenrechners Allgemeine Java-Themen 25
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
JavaNewbie2.0 Start eines Anderen Programm erkennen Allgemeine Java-Themen 6
I Verbindung eines Java-Plugins mit Webserver Allgemeine Java-Themen 3
L Auswertung eines Testes funktioniert nicht Allgemeine Java-Themen 37
G Iteratoren - Wie kann man mithilfe von Iteratoren nur jeden zweiten Wert eines TreeSets ausgeben? Allgemeine Java-Themen 4
GreenTeaYT Elemente eines 2Dim LinkedList von links nach rechts ausgeben? Allgemeine Java-Themen 0
B Spalten eines 2d-Arrays Allgemeine Java-Themen 2
M Rechenprogramm eines wissenschaftlichen Taschenrechners Allgemeine Java-Themen 4
S Eigenschaften (hier Verknüpfung) eines Files lesen Allgemeine Java-Themen 2
E Typüberprüfung eines chars Allgemeine Java-Themen 5
H Hilfe bei Erstellung eines Hilfe Fenster bei Tastendruck (F1 bei Win98) Allgemeine Java-Themen 5
T Teile eines Double-Wertes verändern Allgemeine Java-Themen 2
R Rückgabe eines Arrays durch Funktion Allgemeine Java-Themen 9
H Datentypen Typ eines Arrays überprüfen Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben