标签: boolean

布尔作为方法论证是不可接受的吗?

我的一位同事表示,布尔作为方法论据是不可接受的.它们应由枚举代替.起初我没有看到任何好处,但他给了我一个例子.

什么更容易理解?

file.writeData( data, true );
Run Code Online (Sandbox Code Playgroud)

要么

enum WriteMode {
  Append,
  Overwrite
};

file.writeData( data, Append );
Run Code Online (Sandbox Code Playgroud)

现在我明白了!;-)
这绝对是一个例子,枚举作为第二个参数使代码更具可读性.

那么,您对此主题有何看法?

enumeration boolean coding-style

122
推荐指数
10
解决办法
6945
查看次数

在PHP中将字符串解析为布尔值

今天我正在玩PHP,我发现字符串值"true"和"false"在条件中没有被正确解析为boolean,例如考虑以下函数:

function isBoolean($value) {
   if ($value) {
      return true;
   } else {
      return false;
   }
}
Run Code Online (Sandbox Code Playgroud)

如果我执行:

isBoolean("true") // Returns true
isBoolean("") // Returns false
isBoolean("false") // Returns true, instead of false
isBoolean("asd") // Returns true, instead of false
Run Code Online (Sandbox Code Playgroud)

它似乎只与"1"和"0"值一起使用:

isBoolean("1") // Returns true
isBoolean("0") // Returns false
Run Code Online (Sandbox Code Playgroud)

PHP中是否有一个本机函数将"true"和"false"字符串解析为boolean?

php parsing boolean

120
推荐指数
3
解决办法
7万
查看次数

Pandas中布尔索引的逻辑运算符

我在Pandas中使用布尔索引.问题是为什么声明:

a[(a['some_column']==some_number) & (a['some_other_column']==some_other_number)]
Run Code Online (Sandbox Code Playgroud)

工作正常,而

a[(a['some_column']==some_number) and (a['some_other_column']==some_other_number)]
Run Code Online (Sandbox Code Playgroud)

存在错误?

例:

a=pd.DataFrame({'x':[1,1],'y':[10,20]})

In: a[(a['x']==1)&(a['y']==10)]
Out:    x   y
     0  1  10

In: a[(a['x']==1) and (a['y']==10)]
Out: ValueError: The truth value of an array with more than one element is ambiguous.     Use a.any() or a.all()
Run Code Online (Sandbox Code Playgroud)

python filtering boolean dataframe pandas

119
推荐指数
3
解决办法
14万
查看次数

Boolean.hashCode()

类Boolean的hashCode()方法实现如下:

public int hashCode() {
    return value ? 1231 : 1237;
}
Run Code Online (Sandbox Code Playgroud)

为什么使用1231和1237?为什么不是别的?

java boolean hashcode

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

C++代码中的双重否定

我刚刚进入一个拥有相当庞大代码库的项目.

我主要处理C++,他们编写的很多代码都使用布尔逻辑的双重否定.

 if (!!variable && (!!api.lookup("some-string"))) {
       do_some_stuff();
 }                                   
Run Code Online (Sandbox Code Playgroud)

我知道这些人都是聪明的程序员,很明显他们不会偶然这样做.

我不是经验丰富的C++专家,我唯一猜测他们这样做的原因是他们想要绝对肯定被评估的值是实际的布尔表示.所以他们否定它,然后再次否定它以使其恢复到它的实际布尔值.

这是正确的,还是我错过了什么?

c++ boolean

116
推荐指数
8
解决办法
3万
查看次数

翻转布尔值的最简单方法是什么?

我只是想根据它已经是什么来翻转一个布尔值.如果这是真的 - 把它弄错.如果它是假的 - 让它成真.

这是我的代码摘录:

switch(wParam) {

case VK_F11:
  if (flipVal == true) {
     flipVal = false;
  } else {
    flipVal = true;
  }
break;

case VK_F12:
  if (otherVal == true) {
     otherValVal = false;
  } else {
    otherVal = true;
  }
break;

default:
break;
}
Run Code Online (Sandbox Code Playgroud)

c c++ boolean-logic boolean

113
推荐指数
8
解决办法
18万
查看次数

Boolean.valueOf()有时会产生NullPointerException

我有这个代码:

package tests;

import java.util.Hashtable;

public class Tests {

    public static void main(String[] args) {

        Hashtable<String, Boolean> modifiedItems = new Hashtable<String, Boolean>();

        System.out.println("TEST 1");
        System.out.println(modifiedItems.get("item1")); // Prints null
        System.out.println("TEST 2");
        System.out.println(modifiedItems.get("item1") == null); // Prints true
        System.out.println("TEST 3");
        System.out.println(Boolean.valueOf(null)); // Prints false
        System.out.println("TEST 4");
        System.out.println(Boolean.valueOf(modifiedItems.get("item1"))); // Produces NullPointerException
        System.out.println("FINISHED!"); // Never executed
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我不明白为什么测试3工作正常(它打印false并且不产生NullPointerException)同时测试4抛出一个NullPointerException.正如你在测试12中看到的那样,null并且modifiedItems.get("item1")是等于和null.

Java 7和8中的行为相同.

java boolean nullpointerexception

113
推荐指数
3
解决办法
7381
查看次数

111
推荐指数
4
解决办法
10万
查看次数

按位运算符对Java中布尔值的影响

按位运算符应该传输变量并逐位操作它们.在整数,longs,chars的情况下这是有道理的.这些变量可以包含由其大小强制执行的所有值.

但是,在布尔值的情况下,布尔值只能包含两个值.1 =真或0 =假.但是没有定义布尔值的大小.它可以大到一个字节或一点点.

那么在布尔值上使用按位运算符会产生什么影响呢?JVM本质上是将它转换为普通的逻辑运算符并继续前进吗?为了操作的目的,它是否将布尔值视为单个位实体?或者结果未定义以及布尔值的大小?

java boolean bitwise-operators

109
推荐指数
3
解决办法
5万
查看次数

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

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

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

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

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

java boolean

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