Java 用于使用布尔值的参数

Java 用于使用布尔值的参数,java,algorithm,boolean,Java,Algorithm,Boolean,我正在努力理解什么时候应该使用布尔值。当布尔值应该是一个好东西时,哪些参数是好的识别参数?例如,在奇偶排序算法中,布尔值使整个算法工作 long[] a = {7,5,8,2,4,1,9,3,5,6}; int nElems = 10; public void oddEvenSort() { boolean sorted = false; while (!sorted) { sorted = true; for (int i = 0; i <

我正在努力理解什么时候应该使用布尔值。当布尔值应该是一个好东西时,哪些参数是好的识别参数?例如,在奇偶排序算法中,布尔值使整个算法工作

long[] a = {7,5,8,2,4,1,9,3,5,6};
int nElems = 10;

public void oddEvenSort() {
    boolean sorted = false;
    while (!sorted) {
        sorted = true;
        for (int i = 0; i < nElems - 1; i += 2) {
            if (a[i] > a[i + 1]) {
                swap(i, i + 1);
                sorted = false;
            }
        }
        for (int j = 1; j < nElems - 1; j += 2) {
            if (a[j] > a[j + 1]) {
                swap(j, j + 1);
                sorted = false;
            }
        }
    }
}
long[]a={7,5,8,2,4,1,9,3,5,6};
int-nElems=10;
公共排序(){
布尔排序=假;
而(!排序){
排序=真;
对于(int i=0;ia[i+1]){
互换(i,i+1);
排序=假;
}
}
对于(int j=1;ja[j+1]){
互换(j,j+1);
排序=假;
}
}
}
}

但决定布尔值应该/可以使用的时间点在哪里?与其他简单排序算法相比,该算法可以减少或增加已排序值的索引,但该算法没有。为了更好地理解布尔运算的用法,我可以遵循哪些规则或准则?这不仅仅局限于这个算法,这只是一个例子。

问题有点宽泛;一般来说,当必须说明某个条件是否成立时,应使用
布尔值
;我希望我正确地理解了你的问题。

最终,无论你在
循环时,为
循环或
如果
-
否则
条件下,都将归结为布尔值<代码>而(i<10)
用于(int i=0;i<10;i++)
如果(i==10)
<代码>布尔值
对于条件检查几乎是必不可少的。

当您有一个true/false值时,应该使用一个布尔值,该值不包含除true或false以外的任何内容

汽车有轮子吗?真或假,布尔值


一辆汽车有多少个轮子?3或4:整数。

我不会在这里使用布尔值,而且它似乎不符合您的要求。我假设您想用其他奇数项交换奇数项

public void oddEvenSort() {
    while (true) {
        for (int i = 0; i < nElems - 2; i++) {
            if (a[i] > a[i + 2]) {
                swap(i, i + 2);
                continue;
            }
        }
        break;
    }
}
public void oddEvenSort(){
while(true){
对于(int i=0;ia[i+2]){
互换(i,i+2);
继续;
}
}
打破
}
}

当变量有两种状态时,应使用该选项。在您的例子中,它相当简单,算法可以排序或不排序,因此最好使用布尔值

此外,例如,在深度优先搜索中,可以访问或不访问节点


另一个例子是在图中,边可以从一个节点移动到另一个节点,然后返回,您需要跟踪是否处理了节点。布尔值与这种情况完全匹配。

在java中,所有条件都计算为
布尔值,因此即使没有显式声明,也使用
布尔值。现在,当需要
布尔变量时,取决于您使用它的内容

在上面的排序算法中,它被用作一个标志,以查看是否需要进一步排序。假设数组已排序,然后将其标记为false(如果未排序),并在两个值之间进行交换

在这个例子中,如果您有一个过长的条件,并且希望使代码更具可读性,那么在另一个地方使用
布尔值非常有用


有时,当一个变量只有两种可能的状态(如开/关)而不想为该状态创建枚举或常量时,您只需使用它。

如果您只需要两个可能的值,则使用布尔值。将数组从低到高排序。@Xbit奇偶如何进入它?这似乎是一种以复杂方式完成的冒泡排序。这种方法在多处理环境中非常方便,因为奇数对或偶数对彼此独立,因此可以在必要时由不同的处理器进行检查和交换。我不知道,这是一本书的旁白。从@Xbit中获得了大致思路。我阅读了该页面,但我不认为这有助于多线程。为了有效地处理数据,您需要独立的处理,特别是单独的缓存线。如果您有一张空白的纸,而且还没有代码,那么识别这两种状态的诀窍是什么?我明白了,看看那些状态,逻辑思维。你可以用常识和逻辑来模拟现实世界的问题。我们知道节点是否可以访问(两种状态)。您是要使用
int
存储2^32个状态(4字节,理论*)还是只使用一个简单的
布尔值(1位,理论*)*理论上——JVM可能会使用更多的空间来表示变量,但这超出了这个问题的范围。