相关疑难解决方法(0)

为什么没有定义Java的布尔基元大小?

Java虚拟机规范说有布尔有限的支持原始类型.

没有专门针对布尔值操作的Java虚拟机指令.相反,Java编程语言中对布尔值进行操作的表达式被编译为使用Java虚拟机int数据类型的值.

以上暗示(虽然我可能误解了它)在操作布尔值时使用int数据类型,但这是一个32位内存构造.假设布尔值仅代表1位信息:

  • 为什么不使用byte或short类型作为布尔值而不是int的代理?
  • 对于任何给定的JVM,什么是最可靠的方法来找出用于存储布尔类型的确切内存量?

java boolean

108
推荐指数
3
解决办法
6万
查看次数

boolean []与BitSet:哪个更有效?

什么在内存和CPU使用方面更有效 - 一个booleans或BitSet 数组?不使用特定的BitSet方法,只对数组进行get/set/clear(==,=,Arrays.fill).

java memory arrays performance bitsets

63
推荐指数
5
解决办法
4万
查看次数

在时间O(n)中查找数组中的重复元素

在求职面试中我被问到这个问题,我一直想知道正确的答案.

您有一个从0到n-1的数字数组,其中一个数字被删除,并替换为数组中已有的数字,该数字与该数字重复.我们如何在时间O(n)中检测到这个重复?

例如,1,2,3,4将成为一个数组1,2,2,4.

时间O(n 2)的简单解决方案是使用嵌套循环来查找每个元素的副本.

java arrays algorithm

63
推荐指数
6
解决办法
7万
查看次数

内存中字节的大小 - Java

我听说过一个字节在java程序中占用的内存量的混合意见.

我知道你可以在一个java字节中存储不超过+127,并且文档说一个字节只有8位但是在这里我被告知它实际上占用了与int相同的内存量,因此只是一种有助于代码理解而非效率的类型.

任何人都可以清除这一点,这是一个特定于实现的问题吗?

java memory performance

51
推荐指数
5
解决办法
6万
查看次数

为什么布尔数据类型需要8位?

布尔数据类型仅计算为truefalse,因此它总是只占用一位内存.那么为什么需要额外的7位内存,这不是浪费内存吗?

java

18
推荐指数
2
解决办法
1万
查看次数

java.lang.OutOfMemoryError:初始化数组时的Java堆空间

我试图初始化一个布尔类型的数组,其大小是一个10位整数.它继续抛出OutOfMemoryException.我已经将eclipse堆空间的大小从256增加到1024.有什么我不想做的事情吗?

int size = 1000000000;
boolean[] primesList = new boolean[size];
Run Code Online (Sandbox Code Playgroud)

java arrays initialization

6
推荐指数
1
解决办法
4145
查看次数

为什么Java布尔值必须至少为1个字节?

众所周知,C++ bool的大小必须至少为1个字节,以便为每个[/sf/answers/144519581/]创建指针.但是Java中没有指向原始类型的指针.然而,他们仍然至少占用1个字节[/sf/answers/26851821/].

为什么会这样 - 为什么Java不能boolean是1位大小?除了计算时间,如果有一个大boolean数组,肯定可以设想一个编译器进行适当的移位以检索对应于某个boolean值的单个位?

java memory memory-management low-level

4
推荐指数
1
解决办法
863
查看次数

Java数据存储优化选项

我一直在考虑用Java优化我最新的两种数据存储技术,并且想知道哪种内存效率最高.以下是这两个类的描述.为了便于论证,假设它们具有与数据接口相同的方法,允许用户通过以下方法单独或按范围获取或设置任何位的状态:

  • public boolean getBitState(byte bitIndex)
    • 检测并返回索引处的位状态 bitIndex
  • public Clazz setBitState(byte bitIndex, boolean newState)
    • 将index位置的位的状态bitIndex,以newState及返回生成的对象
  • public int getStateOfBits(byte startIndex, byte endIndex)
    • 检测并返回之间的所有位的状态startIndexendIndex作为int
  • public Clazz setStateOfBits(byte startIndex, byte endIndex, int newState)
    • 设置之间的所有位的状态startIndex,并endIndex在所提供的价值newState.
    • 如果newState位数少于拟合,则通过向左添加零来使其适合
    • 如果newState位数多于拟合,则会裁剪多余的位(在左侧)

这些是我使用此接口所做的类:

IntArray


该类使用一种int通过按位函数存储32位数据的方法.

Array32


该类使用32 booleans 的数组作为通过标准数组交互存储32位数据的方式.

java memory arrays optimization 32-bit

3
推荐指数
2
解决办法
451
查看次数

Out of Memory Error:Java堆空间 - 使用大数组大小

线程"main"中的异常java.lang.OutOfMemoryError:Java堆空间

使用[100000] [100000]的2D阵列和每个[100000]的其他两个阵列.我需要在整个程序中使用这三个数组,因此无法释放内存.

已经在Netbeans中尝试过VM Options -Xmx512m

请具体一步一步,我是Java和Netbeans的新手.

在此先感谢您的帮助....

java arrays out-of-memory

1
推荐指数
1
解决办法
3283
查看次数