当前位置: 首页 > 知识库问答 >
问题:

为什么布尔和字符串的编译错误

戚飞雨
2023-03-14

我有下面的代码

public class Test {
  public static void main(String[] args) {
    Integer i1=null;

    String s1=null;
    String s2=String.valueOf(i1);
    System.out.println(s1==null+" "+s2==null);//Compilation Error
    System.out.println(s1==null+" ");//No compilation Error
    System.out.println(s2==null+" ");//No compilation error
  }
}

如果将两个布尔值与字符串组合,为什么会出现编译错误

编辑:编译错误是参数类型布尔值为null的运算符==未定义

共有2个答案

东门焕
2023-03-14

=之前处理=

这将导致s1==“”=空

平嘉熙
2023-03-14

这是优先考虑的问题。我永远记不住所有的优先规则(我也不想记),但我怀疑编译器试图将其解释为:

System.out.println((s1==(null+" "+s2))==null);

... 这是没有道理的。

现在还不清楚您希望这三行中的任何一行做什么,但您应该使用括号向编译器和读者表明您的意图。例如:

System.out.println((s1 == null) + " " + (s2==null));
System.out.println((s1 == null) + " ");
System.out.println((s2 == null) + " ");

或者您可以使用局部变量使其更清晰:

boolean s1IsNull = s1 == null;
boolena s2IsNull = s2 == null;

System.out.println(s1IsNull + " " + s2IsNull);
System.out.println(s1IsNull + " ");
System.out.println(s2IsNull + " ");
 类似资料:
  • 问题内容: 这是一段Java代码: 它不编译,什么是概率?错误:该行上有多个标记;’bool’变量上的语法错误。我希望它能打印出来。虽然根据我的教程书可以打印。 我知道它会发生短路,但如果&&双方都需要进行评估,那不是家庭作业,我正在学习Java。干杯 问题答案: 等效于:- 由于被评估为,因此第二个表达式不被评估,因为在那里您使用了 短路运算符(||) 。 因此,最后两个任务不会发生。和值和保持

  • 我在PostgreSQL表中有一个布尔列。在pgAdmin III中,表视图显示列的TRUE和FALSE。当我SQL选择*时,另一个窗口显示t和f。这是配置问题吗?它不应该也显示“真”和“假”吗? 然后我们来看看PHP。我有以下代码来处理这个布尔值(实际上我正在做一些不同的事情,但在这里简化了它): 数据库显示'FALSE',php读取'f'并将其视为'TRUE'。这是一种错误的配置,还是php总

  • 问题内容: 在C ++中,为什么布尔需要一个字节来存储true或false,而只需要一位就足够了,例如0代表false,1代表true?(为什么Java也需要一个字节?) 其次,使用以下方法更安全? 第三,即使是安全的,上述现场技术真的有帮助吗?既然我听说我们在那里节省了空间,但是编译器生成的访问它们的代码仍然比生成访问基元的代码更大,更慢。 问题答案: 为什么布尔只需要一个字节就可以存储真或假,

  • 我当时在做一个计算机科学测试,并尝试了这个问题。 据我所知,我认为打印输出是假的,因为据我所知,字符串只能与。等于()。但我弄错了。它说答案是假的,是真的。有人能解释一下原因吗?

  • 以便他们可以重新键入他们想要保存的名称,如果他们在开始时犯了错误。 但我仍然面临“错误:不兼容类型:字符串不能转换为布尔值”的问题。