研究問題的起因
業(yè)務(wù)A調(diào)用業(yè)務(wù)B的接口对蒲,通過http調(diào)用钩蚊。參數(shù)很大,需要預(yù)估一下參數(shù)的大小蹈矮,以便設(shè)置一個參數(shù)的數(shù)組的最大值砰逻。
示例代碼
public static void main(String[] args) throws UnsupportedEncodingException {
String a = "abc";
byte[] defaultBytes = a.getBytes();
byte[] utf8Bytes = a.getBytes("utf-8");
byte[] unicodeBytes = a.getBytes("unicode");
byte[] gbkBytes = a.getBytes("gbk");
byte[] unicodeLittleBytes = a.getBytes("UnicodeLittleUnmarked");
byte[] unicodeBigBytes = a.getBytes("UnicodeBigUnmarked");
System.out.println("defaultBytes : " + Arrays.toString(defaultBytes) + " length: " + defaultBytes.length);
System.out.println("utf8Bytes : " + Arrays.toString(utf8Bytes) + " length: " + utf8Bytes.length);
System.out.println("gbkBytes : " + Arrays.toString(gbkBytes) + " length: " + gbkBytes.length);
System.out.println("unicodeBytes : " + Arrays.toString(unicodeBytes) + " length: " + unicodeBytes.length);
System.out.println("unicodeBigBytes : " + Arrays.toString(unicodeBigBytes) + " length: " + unicodeBigBytes.length);
System.out.println("unicodeLittleBytes: " + Arrays.toString(unicodeLittleBytes) + " length: " + unicodeLittleBytes.length);
}
輸出結(jié)果:
defaultBytes : [97, 98, 99] length: 3
utf8Bytes : [97, 98, 99] length: 3
gbkBytes : [97, 98, 99] length: 3
unicodeBytes : [-2, -1, 0, 97, 0, 98, 0, 99] length: 8
unicodeBigBytes : [0, 97, 0, 98, 0, 99] length: 6
unicodeLittleBytes: [97, 0, 98, 0, 99, 0] length: 6
字符串占用的內(nèi)存大小是傳輸時的字符集相關(guān)的。默認(rèn)的字符集是utf8,可以通過String.getBytes()方法的實現(xiàn)查看泛鸟。
utf8:ascii碼用一個字節(jié)蝠咆。
特殊說明
unicode字符集獲取到的字節(jié)多了兩個字節(jié): -2, -1。這表示字節(jié)序。
unicode默認(rèn)是UnicodeBigUnmarked字節(jié)序刚操。