
java中怎么证明一个字符占2个字节?
展开全部
java 规定好的占两个字节。
首先,要搞清楚 code point 和 encoding 的区别。Java 是遵循 unicode 4.0 标准的,而内部的 character 以 utf-16 作为 encoding。unicode 4.0 标准包含从 U+0000-U+FFFF 的基本多语言平面和 U+10000-U+10FFFF 的扩展平面的文字,这是 code point。Java 的 char 类型是 16 bit 的,所以单个 char 只支持基本平面内的文字,而扩展平面的文字是由一对 char 来表示的。
而 String.getBytes() 这个方法是按照指定的 encoding 返回字符串,一般中文系统的默认编码是 utf-8 (linux, mac) 或者 gbk/gb18030 (windows)。只要是基本平面内的文字,utf-8码的中文都是3字节的,而 gbk/gbk18030 是2字节的。英文编码是一个字节的。
首先,要搞清楚 code point 和 encoding 的区别。Java 是遵循 unicode 4.0 标准的,而内部的 character 以 utf-16 作为 encoding。unicode 4.0 标准包含从 U+0000-U+FFFF 的基本多语言平面和 U+10000-U+10FFFF 的扩展平面的文字,这是 code point。Java 的 char 类型是 16 bit 的,所以单个 char 只支持基本平面内的文字,而扩展平面的文字是由一对 char 来表示的。
而 String.getBytes() 这个方法是按照指定的 encoding 返回字符串,一般中文系统的默认编码是 utf-8 (linux, mac) 或者 gbk/gb18030 (windows)。只要是基本平面内的文字,utf-8码的中文都是3字节的,而 gbk/gbk18030 是2字节的。英文编码是一个字节的。
追问
文字有点看不懂,能举个例子打印出一个字符所占的字节吗?
展开全部
你好,我们通常说的一个字符占两个字节是指汉字,英文字母是一个字节
public class getCharBytes {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Character a ='a';
Character b ='啊';
System.out.println(a.toString().getBytes().length);
System.out.println(b.toString().getBytes().length);
}
}
public class getCharBytes {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Character a ='a';
Character b ='啊';
System.out.println(a.toString().getBytes().length);
System.out.println(b.toString().getBytes().length);
}
}
更多追问追答
追问
可是我们都知道java中一个字符是占用2个字节的呀
而且,我们也知道int类型占用4个字节
int aa=5;
System.out.println((aa+"").toString().getBytes().length);
打印了1,是不是哪里出了问题了
追答
public class getCharBytes {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Character a ='a';
Character b ='啊';
Integer c = 5;
System.out.println(a.SIZE);
System.out.println(b.SIZE);
System.out.println(c.SIZE);
}
}
应该用这个方法,显示的是bit数,这就对了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一个字母就是一个字节。。
一个汉字占两个字节,你换成中文的试试
一个汉字占两个字节,你换成中文的试试
追问
java中 java本身就是利于平台移植
char=2byte int=4byte 这是大家都知道的,书上也这么说,老师也这样说,网上也这样说。。。
我只想证明一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是规定好的,用得着证明?
追问
Character a='A';
System.out.println(a.toString().getBytes().length);
为什么显示1呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
"文".getBytes().length
追问
System.out.println("a".getBytes().length);
刚刚试了你的答案,结果为1啊,怎么与java中一个字符不附呢??
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询