java中string占几个字节,字符串类型占几个字节
首先,char是Java的基本类型,基本类型占用的字节数是固定的,比如4字节的int,8字节的double,可以使Java占用的类型在不同平台上固定,从而保证Java的可移植性。因此,Java中的char类型固定为2字节。(注:char类型也可以存储一个汉字)。
其次,String采用一种更灵活的方式进行存储。在String中,一个英文字符占1个字节,而中文字符根据编码的不同所占字节数也不同。在UTF-8编码下,一个中文字符占3个字节;而使用GBK编码时一个中文字符占2个字节。
测试代码如下:
import Java . io . unsupportedencodingexception;
公共类StrTest {
公共静态void main(String[] args)引发了UnsupportedEncodingException {
String str1= hello
STR2=你好ABC ;
System.out.println(在 UTF-8编码: str1.getBytes(utf-8 )下 hello 占用的字节数)。长度);
system . out . println( gbk encoding: str 1 . getbytes( gbk )下 hello 占用的字节数)。长度);
system . out . println( utf-8 UTF-8编码下 Hello abc 占用的字节数: str2.getBytes(utf-8 )。长度);
system . out . println( Hello ABC 在 GBK编码: str2.getBytes(gbk )下占用的字节数)。长度);
}
}输出结果:
utf-8编码中“hello”占用的字节数:5
gbk编码下“hello”占用的字节数:5
utf-8编码中“Hello abc”占用的字节数:9
gbk码中‘你好ABC’占用的字节数:7。因此,对于字符串,一个英文字符占用1字节,而中文字符占用2 (GBK码)或3(UTF 8码)字节。也可以用这个方法检查其他代码的情况,这里不再赘述。
最后,基于字符串的这个特性,可以判断一个字符串是否包含中文,例如:
公共类StrTest {
公共静态void main(String[] args)引发了UnsupportedEncodingException {
searchChineseCharacter(早上好);
SearchChineseCharacter(你好早上好);
}
//找出字符串中的汉字
public static void search chinesecharacter(String str){
//正则表达式,用于匹配汉字
string regex=[\ u4e 00-\ u9fa 5];
//如果str的长度和它占用的字节数不一样,说明它包含中文。
if (str.length()!=str.getBytes()。长度){
pattern pattern=pattern . compile(regex);
matcher matcher=pattern . matcher(str);
system . out . print( str 中的汉字是:);
while (matcher.find()){
system . out . print(matcher . group());
}
}
否则{
system . out . println( str 没有汉字);
}
}
}输出结果:
“早上好”中没有汉字
‘‘你好早上好’中的汉字是:早上好推荐教程:java入门。以上是java中字符串的详细内容,更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。