【问题标题】:Does using a constant over a standard variable use less memory?在标准变量上使用常量会使用更少的内存吗?
【发布时间】:2015-01-21 20:48:22
【问题描述】:

我在互联网上进行了一些搜索,但没有找到答案,所以我希望能找到它。所以我的猜测是,如果我声明一个final int foo = 6 它会因为它的大小不会改变,它只会被设置为它在内存方面需要的东西。其中变量int bar = 8 必须在内存中具有更大的大小,因为它有机会在程序的后期发生变化。

【问题讨论】:

  • 一个 int 是一个 int。大小相同。
  • 你的猜测不正确。
  • 这两种情况所需的大小相同,不同之处在于 JVM 处理它们的方式(当然还有你可以用它做什么)。
  • 不,内存也不少。但是,当您实际上不打算改变值时,使用 final(常量)通常“更正确”。
  • 讨论这个既完全没有意义也毫无意义(因为编译器优化毫无意义,而且毫无意义,因为大多数情况下它根本不关心性能,无论是内存使用量还是 CPU 时间或......或......)

标签: java variables constants


【解决方案1】:

没有一个常量使用完全相同的内存。

唯一的区别是你不能改变初始化后的常量。我敢肯定你知道,但你使用常量来表示不应该改变的值(不小心,..)

【讨论】:

    【解决方案2】:

    值所需的空间取决于数据类型,而不是确切的值。因此,一个

    final int foo = 6;
    

    需要与

    完全相同的空间
    int bar = 8;
    

    int baz = 0;
    

    int shazam = Integer.MAX_VALUE;
    

    考虑到这一点,如果一个变量被声明为final 并不会改变它的内存需求,你应该不会感到惊讶。

    【讨论】:

      【解决方案3】:

      没有。

      http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

      基本上内存中值的大小(在java中)是由类型决定的。不同的原语消耗不同的内存量。对于给定类型的基元,此数量是恒定的。

      【讨论】:

        猜你喜欢
        • 2021-10-09
        • 1970-01-01
        • 1970-01-01
        • 2020-01-18
        • 2018-05-03
        • 1970-01-01
        • 1970-01-01
        • 2013-03-17
        • 2021-07-18
        相关资源
        最近更新 更多