String

1.方法:getBytes(String charsetName)
charsetName为编码类型,也就是把字符串转成字节时的编码类型,在测试中发现他用默认编码转换时,
英文字母和数字只占一个字节,中文占二个字节.
如果用utf-8转换时,英文字母和数字还是占一个字节,但中文占三个字节.
以下是源码:
---------------------------------------------------------------------
public byte[] getBytes(String charsetName)
throws UnsupportedEncodingException
{
if (charsetName == null) throw new NullPointerException(); //如果编码为空将抛出空指针异常
return StringCoding.encode(charsetName, value, offset, count);
}

注:从源可以看出,他是使用StringCoding类进行处理,主要完成以下几个步骤:
1)看是否传去编码方法,如果没有,将使用本地编码
2)如果本地编码为null,将使用ISO-8859-1,作为默认编码.

String可以说是我们最为常用的一类,在程序中我们经常这样赋值。
String var = "chen"; String var = new String("chen");
可以看出"XXX" 就是一个String类型的实例,很显然他的作用就是把"xxx"赋值给String中char[] value
从源码可以看出,String中的size就是其中的int count属性值,而其中的值其实就是一个char[] value
很显然字符串的真正表示型式是一个char数组,
1.------------------------------------------------------
public int length() {
return count;
}
2.----------------------------------------------------------------------
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
注,这是我们常用的equals,它先看是否为String类型,然后再比较char数组,只要其中有一个元素不相同就
跳出,返回false;

从源码看出其实String中的方法,也就是对char组织的处理方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值