Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可以包含大多数内存空间的变量?_Java_C - Fatal编程技术网

Java 可以包含大多数内存空间的变量?

Java 可以包含大多数内存空间的变量?,java,c,Java,C,什么类型的变量可以包含100000000(十进制数)占用最多的内存空间 C中的int C中的字符串 Java中的字符串(使用unicode) 我真的不想直接回答这个问题,所以你可以看看这里: 此外,如何在二进制和十进制之间进行转换也可能很有用: 一个Java字符串。在引擎盖下,Java字符串由一个具有3个字段的对象组成,其中一个字段指向包含字符的单独数组对象。当然,Java字符串由16位字符1组成 如果您担心内存使用超过所有其他标准,请不要使用Java。但对于大多数应用程序,内存

什么类型的变量可以包含100000000(十进制数)占用最多的内存空间

  • C中的int
  • C中的字符串
  • Java中的字符串(使用unicode)

  • 我真的不想直接回答这个问题,所以你可以看看这里:

    此外,如何在二进制和十进制之间进行转换也可能很有用:


      • 一个Java字符串。在引擎盖下,Java字符串由一个具有3个字段的对象组成,其中一个字段指向包含字符的单独数组对象。当然,Java字符串由16位字符1组成

        如果您担心内存使用超过所有其他标准,请不要使用Java。但对于大多数应用程序,内存使用是最不重要的

        值得注意的是,100000000可以使用Java
        int
        表示,它的大小与C有符号或无符号(32位)整数相同

        此外,C
        int
        不一定大到足以表示100000000。在某些平台上,
        int
        是16位,这是C标准允许的



        1-实际上,这是依赖于Java平台的。例如,在Java 9中,他们修改了
        字符串
        实现,对完全由0到255个字符组成的字符串,每个字符使用一个
        字节
        。看见但是尽管如此,Java字符串仍然比C字符串占用更多的空间。

        C标准没有规定许多存储要求。事实上,您可以:

        • 256位C
          int
          s,需要32个字节来存储任何内容(参见@nonnb的注释)
        • 一个宽C字符串(
          wchar\u t[]
          ),使用UCS-4/UTF-32字符(显然,所有GNU实现都是这样)
        • 使用32位
          char
          s(必须在具有32位字节的系统上)的C实现

        奇怪的问题?最浪费的表示形式是unicode字符串,假设C中使用的字符串char[]C中的字符串也可以是unicode…我们可以添加选项4:libgmp编号吗?毫无疑问,没有任何任意精度库比gmp更臃肿…:-)@我相信我可以发明一个。一元any?Y-为了澄清,C将int定义为本机机器字大小(因此int可以是16、32或64位等)。我想在512位机器字的情况下,从技术上讲,C int可能是10亿的最低效存储,但希望我不会看到这一点。@nonnb-从技术上讲,C标准说int的范围至少是-32758到+32767。它可以(而且经常)比这更大。然而,该标准绝对没有提到
        int
        与“本机机器字”大小相同。顺便说一句,21位或更大的
        wchar\u t
        是一致的C实现支持所有Unicode的唯一方法。这也是推荐的方法(请参阅C99中的STDC_ISO_10646宏)。使用16位
        wchar\u t
        的实现简单地被破坏了。多字符序列呢?UTF-8和16怎么样?