黑马程序员技术交流社区

标题: 关于java中如何求一个基本类型占用多少个字节数的问题 [打印本页]

作者: 曾祥彬    时间: 2012-6-18 08:02
标题: 关于java中如何求一个基本类型占用多少个字节数的问题
本帖最后由 曾祥彬 于 2012-6-18 16:42 编辑

在以前学习C或C++的时候,有一个函数sizeof可以求的一个数据项分配的字节数,为什么在java里面没有提供这样的函数?
那么我们如何知道一个数据分配项占用了多少个字节呢?难道每次不确定的时候都要翻文档查询吗?

作者: 闾丘日月    时间: 2012-6-18 08:03
java里面基本数据类型所占有的字节数都是一样的哈,与机器无关。

作者: 余清兰    时间: 2012-6-18 09:07
java中没有这样的功能计算占用字节数的,字节数都是固定的,查下表
byte b; 1字节    short s; 2字节
int i; 4字节      long l; 8字节
char c; 2字节(C语言中是1字节)
float f; 4字节   double d; 8字节
boolean bool; false/true

汉字是占两字节,可以通过下面代码来实验
class BytesDemo {



    public static void main(String[] args) {

       String ChineseCharacter="我";

       System.out.println(ChineseCharacter.getBytes().length);

    }



}

运行后的结果输出为2


作者: 刘笑    时间: 2012-6-18 09:15
C中要使用sizeof主要是因为C程序员要自己管理堆内存的分配和释放,在使用malloc来获取堆内存时,我们必须知道要创建的对象的具体大小,才能根据对象的具体大小从堆中分配相应大小的动态内存,而获取对象大小这个工作就是通过sizeof来完成的。而java中的内存管理任务直接交给了JVM。因此,java中不存在类似sizeof的操作符。
如果楼主真的想实现sizeof功能,可以使用新提供的Instrument包。通过这个包提供的接口和类,我们可以很容易获取一个对象实际占用的内存大小。不过这个得jdk5.0以上。
作者: sbeeqnui1987    时间: 2012-6-18 09:23
  int 4个字节(32bit) -2,147,483,648到2,147,483,647 默认为0
  short 2个字节(16bit) -32,768到32,767  默认为0
  long 8个字节(64bit) -9,223,372,036,854,775,808L到9,223,372,036,854,775,807L  默认为0L
  byte 1个字节(8bit) -128到127  默认为0
  float 4个字节(32bit) 约+—3.40282347E+38F(6~7个有效的十进制数位) 默认为0.0F

  double 8个字节(64bit) 约+-1.79769313486231570E+308(15个有效数位)  默认为0.0D
作者: 常佳杰    时间: 2012-6-18 09:31

int 4个字节(32bit),short 2个字节(16bit) , long 8个字节(64bit) ,byte 1个字节(8bit) ,
float 4个字节(32bit) ,double8个字节(64bit),char c; 2字节(C语言中是1字节),汉字占两个字节
这些都是确定的,记住就行了


作者: 车风波    时间: 2012-6-18 11:30
刘笑 发表于 2012-6-18 09:15
C中要使用sizeof主要是因为C程序员要自己管理堆内存的分配和释放,在使用malloc来获取堆内存时,我们必须知 ...

学习了:handshake




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2