小编rzw*_*oot的帖子

运算符“??”是什么意思?在 Dart/Flutter 中?

我看过这段代码,需要对“??”进行解释。我知道三元运算符,例如“?” 然后是 true 条件,“:”之后是 false/else 条件。但是双“??”是什么意思??

提前致谢

      widget.secondaryImageTop ??
      (widget.height / 2) - (widget.secondaryImageHeight / 2); ```
Run Code Online (Sandbox Code Playgroud)

operators ternary dart flutter

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

为什么是“new String();” 一个声明但是“new int[0];” 不是?

我只是随机尝试查看是否new String();可以编译并且它确实可以编译(因为根据 Oracle 的 Java 文档“表达式、语句和块”,有效的语句类型之一是“对象创建”),

但是,new int[0];给了我一个“不是声明”的错误。

这有什么问题?我不是在创建一个数组对象new int[0]吗?

编辑:

为了澄清这个问题,以下代码:

class Test {
    void foo() {
        new int[0];
        new String();
    }
}
Run Code Online (Sandbox Code Playgroud)

在 上导致编译器错误new int[0];,而new String();其本身没有问题。为什么一个不可接受而另一个很好?

java syntax

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

检查我的数学:bouncycastle 问题:2 个不相等的密码被视为相等的几率

这是BouncyCastle 的 OpenBSD BCrypt 实现 v1.66 版本的“检查哈希值是否相等”代码:

for (int i = 0; i != sLength; i++){
  isEqual &= (bcryptString.indexOf(i) == newBcryptString.indexOf(i));
}
Run Code Online (Sandbox Code Playgroud)

其中sLength保证为 60(参见第 268 行),并且 bcryptString 是完整的 openbsd 风格的 bcrypt 字符串,例如$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a.

错误在于所使用的方法:他们打算使用charAt.

此循环的目的是检查从 0 到 59 的每个位置,位置iin的字符是否与位置ina的字符相同。ib

但是,由于错误使用indexOf(int), 相反,这会检查unicode in的第一个字符的位置是否与 unicode in的第一个字符的位置匹配,其中 'not in string' 匹配 'not in string'iaib

示例:"Hello".indexOf(101)返回1(java是从0开始的,101是unicode的ee是第二个字符)。 …

java algorithm math cryptography bouncycastle

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