Java:字符串与字符串字节大小.

jay*_*100 7 java string byte char

嗨伙计们:我很惊讶地发现以下代码

System.out.println("Character size:"+Character.SIZE/8);
System.out.println("String size:"+"a".getBytes().length);
Run Code Online (Sandbox Code Playgroud)

输出:

字符大小:2

字符串大小:1

我假设单个字符串应占用与单个字符相同(或更多)的字节.

特别是我想知道---

如果我有一个包含多个字段的java bean,它的大小将根据字段的性质(字符,字符串,布尔值,向量等等)增加,我假设所有java对象都有一些(可能)最小的足迹,这些足迹中最小的一个将是一个单一的角色.所以..为了测试我从上面的代码开始的基本假设 - 并且print语句的结果似乎违反直觉.

对默认情况下java存储/序列化字符与字符串的方式的任何见解都会非常有用...谢谢.

Tho*_* S. 10

getBytes()输出String带有默认编码(最有可能ISO-8859-1),而内部字符char总是2个字节.内部Java总是使用带有2字节字符的char数组,如果您想了解有关编码的更多信息,请在问题注释中阅读Oded链接.

  • 作为参考,`getBytes()`实际上并没有告诉你`String`的实际内存消耗. (3认同)