日期:2014-05-20  浏览次数:20747 次

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个字节的补码所表示的范围