永发信息网

Java中char到底是多少字节

答案:2  悬赏:0  手机版
解决时间 2021-02-02 06:57
Java中char到底是多少字节
最佳答案
java中的char占2个字节
1:“字节”是byte,“位”是bit ;
  2: 1 byte = 8 bit ;
  char 在java中是2个字节。java采用unicode,2个字节(16位)来表示一个字符。
代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

public class Test {
public static void main(String[] args) {
String str= "中";
char x ='中';
byte[] bytes=null;
byte[] bytes1=null;
try {
bytes = str.getBytes("utf-8");
bytes1 = charToByte(x);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("bytes 大小:"+bytes.length);
System.out.println("bytes1大小:"+bytes1.length);
}
public static byte[] charToByte(char c) {
byte[] b = new byte[2];
b[0] = (byte) ((c & 0xFF00) >> 8);
b[1] = (byte) (c & 0xFF);
return b;
}
}

结果如下:

bytes 大小:3
bytes1大小:2
全部回答
java中无论是汉字还是英文字母都是用unicode编码来表示的,一个unicode码是16位,每字节是8位,所以一个unicode码占两字节。但是英文字母比较特殊,源自于8位(1字节)的ascii吗,于是在unicode码仅使用了低8位(1字节)就可以表示,高8位的话不使用也无所谓。所以 char c='a'; system.out.println(c.getbytes().lenth()),得到的是1(字节) 但汉字就完整地使用了16位(2字节)的unicode,所以 char c='中'; system.out.println(c.getbytes().lenth()),得到的是2(字节) 综上,c='a'在内存中确实只占1字节,但这不意味着string s="abc"在内存中只占3字节。应该这么说,string s="abc"至少在内存中占3字节。这是因为char是基本数据类型,而string确是对象类型。对象是一种很复杂的数据类型,你要看一个对象具体占多少字节,可以把这个对象序列化后存入一个文本文件来看它具体占用了多少字节,当然这也不是精确的,因为序列化需要写入少量系统信息,但大致是对的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
Sulwhasoo(金鹰雪花秀店)地址在什么地方,想
楼梯 板跨指的是哪里?
网申的光大银行信用卡到柜台二次审核,成功率
朋友跟别人打架.我没有动手还劝架还被告了
给定DS=1300H,SS=1400H,BP=1500H和SI=0100H.
60处以5等于多少?39除以3呢90处以5呢200-100
从深圳地铁站香蜜湖坐什么车到深圳眼科医院
推荐几首声音很甜的英文歌···要好听的哦·
人的一生那个时期最美好?
求一张图片 内容是一个女人和上帝说话。女人
单选题生活中的下列物质与水不能形成溶液的是
CHANEL怎么去啊,我要去那办事
对于Distiller中Adobe PDF设置的PDF/X对话框
俗话说打酱油是什么意思
Dior迪奥地址在什么地方,我要处理点事
推荐资讯
厨房下水管漏水可以找物业吗
公正派出所地址在什么地方,想过去办事
新脚印地址好找么,我有些事要过去
1998年到2016多大年龄
追了两年多的女孩,关系一直很暧昧,我一表白
变形缝处为什么应设置双轴线
仙人洞村地址在什么地方,我要处理点事
有的人性格见面熟好不好
为什么起诉的时候法院要把原告掌握的证据证人
韵达快递(向阳路)地址在哪,我要去那里办事
南外仙林初中英语教材
设等差数列{an}的前n项和为Sn,若Sm-1=-2,Sm
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?