Krótka odpowiedź: nie, bez długiego strzału. Struny JVM są dobrze znane z tego, że są dość ciężkie; obiekt zawiera nie tylko wskaźnik do tablicy znaków, ale także jej długość. Pamięć wewnętrzna korzysta z codepunktów UTF-16, więc pytanie może być "czy zajmuje to 6 bajtów?" :-)
Techniczne odniesienie do JVM da dokładny rozmiar obiektów typu string. Możesz także znaleźć interesujące posty na blogu: such as this one oraz artykuły techniczne.
Jest o wiele więcej do pytania o dokładny rozmiar obiektów ciąg. Możemy uzyskać kompresję wskaźników obiektów, stringów itp. Istnieje również fakt, że ponieważ ciągi znaków są niezmienne, często dzielimy się pamięcią ciągów, tak jak dzieje się to np. Po wywołaniu substring
.
Jednak zawsze jest prawdą: jest to więcej niż 3 bajty.
Przeczytaj źródło dla klasy "String". – SLaks
Jeśli czytasz źródło dla klasy String, zobaczysz, że przechowuje długość, czyli jak wie, jak długi jest ciąg. BTW "abc" wykorzystuje około 48 bajtów pamięci. –