先從《Java編程思想》中的一個小demo說起:
int storage(String s){
return s.length()*2;
}
此方法告訴我們:需要多少個字節才能容納String對象s中的信息。
接下來,一起來探討一下其中的細節和知識。
- 看一下String類的length()方法定義:
/** value用於存儲字符(character)*/
private final char value[];
/**
* 返回字符串長度.
* 該長度值等於字符串中Unicode的單位數
*/
public int length() {
return value.length;
}
- 相關知識點:
- Java中的char類型,大小是16位(bit),最小值:unicode 0,最大:unicode 2^16-1 。
- Unicode碼:是一種國際標準編碼,採用2個字節(byte)編碼,一個字節是8位,所以一個unicode佔用了16位。
- Char 佔用位數和unicode一樣。
- value.length:返回的是value中存儲的字符(char)的數量,也就是返回了unicode數量。
- 綜上所述:
int storage(String s){
return s.length()*2;
}
s.length():返回了字符數,一個字符等於2個字節。
所以storage(String s)方法,返回了s對象中的信息所需要的字節數。