首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java中char所占的字节数解决思路

2012-12-15 
java中char所占的字节数C中有sizeof关键字可以计算某种数据类型所占的字节数,但是java中却没有,那么java中

java中char所占的字节数
    C中有sizeof关键字可以计算某种数据类型所占的字节数,但是java中却没有,那么java中如何怎么得到char类型所占的字节数呢(char中在java中是占两个字节,但是如果事先不知道呢,有没有什么办法得出char在java中所占的字节数)
    我在网上搜到了一个说是可以这样:
    链接在这:http://zhengjunwei2007.blog.163.com/blog/static/352979422012226102426110/
    


    char c = 'a';
    System.out.println(c.getBytes().lenth());


    但是好像时会报错,我输入c,然后打一个点,都不会自动弹出提示的,到底java中能不能输入类型所占字节数呢?
[最优解释]
引用:
C中有sizeof关键字可以计算某种数据类型所占的字节数,但是java中却没有,那么java中如何怎么得到char类型所占的字节数呢(char中在java中是占两个字节,但是如果事先不知道呢,有没有什么办法得出char在java中所占的字节数)
    我在网上搜到了一个说是可以这样:
    链接在这:http://zhengjunwei2007.blog.163.com/blog/……


你看的那篇文章是错的
你可以使用下面的方法获取长度:

//单位为bit
System.out.println("char:" + Character.SIZE);
System.out.println("int:" + Integer.SIZE);
System.out.println("short:" + Short.SIZE);
System.out.println("long:" + Long.SIZE);
System.out.println("byte:" + Byte.SIZE);
System.out.println("float:" + Float.SIZE);
System.out.println("double:" + Double.SIZE);

输出结果为:
char:16
int:32
short:16
long:64
byte:8
float:32
double:64
[其他解释]
引用:
引用:C中有sizeof关键字可以计算某种数据类型所占的字节数,但是java中却没有,那么java中如何怎么得到char类型所占的字节数呢(char中在java中是占两个字节,但是如果事先不知道呢,有没有什么办法得出char在java中所占的字节数)
    我在网上搜到了一个说是可以这样:
    链接在这:http://zhengj……


1楼正解,然后如果你想知道一个确认字符占多少个char,就可以用下面的方法来获取。


Character.charCount();

[其他解释]
java中char是一个16位无符号整数。

[其他解释]
引用:
你无法知道char底层究竟占了多少字节,可能是32字节,也可能是64字节,128字节
java值规定了每个类型的值域,也就是取值范围,char的取值范围用两个字节的补码来表示,最高位不为符号位

实际上,在jvm一层,通常是用int来表示byte,short,char,boolean类型的,而int究竟占多少位,jvm规范是没有规定的,爱怎么实现就可以怎么实现,但i……



更正:“可能是32字节,也可能是64字节,128字节”->"可能是32位,也可能是64位,128位……"
[其他解释]
链接里的文章应该是随手写的,不然怎么会犯在char类型的变量上调用String类提供的方法这种低级错误
[其他解释]
引用
//单位为bit
System.out.println("char:" + Character.SIZE);
System.out.println("int:" + Integer.SIZE);
System.out.println("short:" + Short.SIZE);
System.out.println("long:" + Long.SIZE);
System.out.println("byte:" + Byte.SIZE);
System.out.println("float:" + Float.SIZE);
System.out.println("double:" + Double.SIZE);
byte:8
short:16
char:16
int:32
float:32
long:64
double:64

同意1楼
[其他解释]
你无法知道char底层究竟占了多少字节,可能是32字节,也可能是64字节,128字节
java值规定了每个类型的值域,也就是取值范围,char的取值范围用两个字节的补码来表示,最高位不为符号位

实际上,在jvm一层,通常是用int来表示byte,short,char,boolean类型的,而int究竟占多少位,jvm规范是没有规定的,爱怎么实现就可以怎么实现,但int的值域必须是4个字节的补码所表示的范围

热点排行