
其实 tobyliu415 已经说了,我再解释一遍,String 的长度被设计成只能通过方法读取。专门为了防止出现类似 strlength = 5; 之类的语句。因为这是不合理的语句,用户是不应该这样设定字符串的长度的,应该只能读取它。
这是封装,是面向对象的三大精髓之一,如果你仍然不理解上面的话,那没办法让你立刻理解,你需要慢慢熟悉面向对象。
EncodingGetBytes ();
EncodingGetString ();
通过这两个方法将汉字字符编码为字节数组,同样知道了汉字GB2312的字节数组编码也就可以将字节数组解码为汉字字符。
Encoding gb=SystemTextEncodingGetEncoding("gb2312");
object[] bytes=gbEncodingGetBytes ("好");
发现得到了一个长度为2的字节数组bytes,使用
string lowCode = SystemConvertToString(bytes[0], 16); //取出元素1编码内容(两位16进制)
string hightCode = SystemConvertToString(bytes[1], 16);//取出元素2编码内容(两位16进制)
这样取出的数组为{ba,c3},刚好是“好”字的十六进制区位码
所以每个汉字字符都能变成一个长度为2的十六进制字节数组。
/
得到一个字符串的长度,显示的长度,一个汉字或日韩文长度为1,英文字符长度为05
@param String s 需要得到长度的字符串
@return int 得到的字符串长度
/
public static double getLength(String s) {
double valueLength = 0;
String chinese = "[\u4e00-\u9fa5]";
// 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1
for (int i = 0; i < slength(); i++) {
// 获取一个字符
String temp = ssubstring(i, i + 1);
// 判断是否为中文字符
if (tempmatches(chinese)) {
// 中文字符长度为1
valueLength += 1;
} else {
// 其他字符长度为05
valueLength += 05;
}
}
//进位取整
return Mathceil(valueLength);
}
以上就是关于在JAVA中 string的长度为什么是length方法 而不是length 属性全部的内容,包括:在JAVA中 string的长度为什么是length方法 而不是length 属性、如何获取字符串的长度、java 怎样判断字符串的长度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)