繁体   English   中英

有人可以解释这种语法,它在做什么吗?

[英]Can someone explain this type of syntax, and what it is doing?

我不确定打印语句中发生了什么。 更具体地说,“&”,“”是什么? 和“:”对此打印语句中的格式进行处理?

 for (int j = 0; j < x; j++) {
            System.out.print((maze[j][i] & 8) == 0 ? "|   " : "    ");
        }

这里的“&”是按位运算符。 变量 == 什么 x:y这是三元运算符,在示例中您可以这样阅读:'如果maze [i] [j]与8的按位AND等于0,则打印“ |” else print“”'

(maze[j][i] & 8) == 0 ? "|   " : "    ")

如果maze[j][i]的8位为0,则结果为"| "如果为1,则结果为" "

maze[j][i] & 8maze[j][i]的值maze[j][i] & 8进行按位与运算。结果将为8(如果maze[j][i]的值为1在对应于8的位位置)或0(如果那里有0)。

如果为零( == 0 ),则表达式( ? )解析为带有pipe( "| " )的字符串; 否则( : )它解析为字符串而不管( " " )。

&是按位的 (两个数字中第八位均为1时将为1), ==是布尔条件表达式?:三进制条件表达式(jls-15.25)

System.out.print((maze[j][i] & 8) == 0 ? "|   " : "    ");

相当于

if ((maze[j][i] & 8) == 0) {
  System.out.print("|   ");
} else {
  System.out.print("    ");
}

假设这是一种快捷方式,如果/其他条件,或者他们称其为三元运算符。 实际上,这是在打印某些内容或将某些内容存储到变量之前测试某些值的一种好方法。 &是按位与运算符,它比较每一边的位。 ? 是这样的话,当条件为真会做里面的任务, :else会做里面的任务,如果条件不成立

这是一个更具可读性的代码段,因此您可以了解我在说什么

for (int j = 0; j < x; j++) {
    if(maze[j][i] & 8) {
        System.out.print("|   ");
    } else {
        System.out.print("    ");
    }
}
System.out.print((maze[j][i] & 8) == 0 ? "|   " : "    ");

转换为:

如果maze [j] [i]的值的第4个最低有效位为0,则打印“ |”; 否则,打印“”。

&是按位和; 如果操作数之间没有1个公共位,则返回0。

:是三元运算符。 它评估第一个参数的真实性。 如果为true,则执行第二个参数;否则为0。 否则,它将执行第三个。

&bitwise and 。它返回1 ,只有当ab均为1

a和b是individual bits ,其中可以表示一个数字,并且其真值可以为01

例如12 & 13

12 = 1100(二进制)

13 = 1101(二进制)

12&13 = 1100

并且语句x == 0 ? 1 : 2 x == 0 ? 1 : 2称为ternary operators ? 如果为真,则打印第一个语句(即) 1 ,否则打印2 ..等同于if else ..可以这样写

if (x == 0) {
   System.out.println(1);
} else {
   System.out.println(2);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM