先从《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对象中的信息所需要的字节数。