Respuesta corta: no, no por un plano general. Las cadenas JVM son bien conocidas por ser bastante pesadas; el objeto contiene no solo un puntero a la matriz de caracteres sino también su longitud. Y el almacenamiento interno usa puntos de código UTF-16, por lo que su pregunta podría haber sido "¿requiere 6 bytes?" :-)
Una referencia técnica a la JVM le dará el tamaño exacto de los objetos de cadena. También puede encontrar algunas publicaciones de blog interesantes such as this one y artículos técnicos.
Hay mucho más sobre la cuestión del tamaño exacto de los objetos de cadena. Podemos acceder a la compresión de punteros de objeto, intercepción de cadena, etc. También existe el hecho de que, como las cadenas son inmutables, a menudo compartimos la memoria de cadena, como ocurre cuando se llama al substring
, por ejemplo.
Sin embargo, lo que siempre es cierto es: es más de 3 bytes.
Lea la fuente de la clase 'String'. – SLaks
Si lee la fuente de la clase String, verá que almacena la longitud, que es cómo sabe cuánto tiempo dura la cadena. Por cierto, "abc" usa alrededor de 48 bytes de memoria. –