Java “的特殊用法”&引用;运算符,如catch(NullPointerException | NumberFormatException)
我之所以有这样的想法是因为eclipse(Java),它显示了向catch子句添加多个异常的可能性,如下所示:Java “的特殊用法”&引用;运算符,如catch(NullPointerException | NumberFormatException),java,casting,boolean,identifier,bitwise-or,Java,Casting,Boolean,Identifier,Bitwise Or,我之所以有这样的想法是因为eclipse(Java),它显示了向catch子句添加多个异常的可能性,如下所示: String someInput; int int1; try { int1 = Integer.parseInt(someInput); } catch (NullPointerException | NumberFormatException e) { e.printStackTrace; } 这是否意味着我也可以做类似的事情 boolen bool1 = (i
String someInput;
int int1;
try {
int1 = Integer.parseInt(someInput);
} catch (NullPointerException | NumberFormatException e) {
e.printStackTrace;
}
这是否意味着我也可以做类似的事情
boolen bool1 = (int1 == (int2 | int3));
boolean bool1 = (int1 == (int2 | int3));
或者像这样投射一个物体
(obj1 | obj2) someObject;
obj1 | obj2 someName;
(obj1 | obj2) someObject;
obj1 | obj2 someName;
还是始终指定这样的对象?:
(obj1 | obj2) someObject;
obj1 | obj2 someName;
(obj1 | obj2) someObject;
obj1 | obj2 someName;
谢谢你的回答,
AYRE < P>至少在C++中,这两个语句不等价: 语句1:
(int1==int2 | | int1==int3)
语句2:(int1==(int2 | int3))
运算符|是按位OR。也就是说,(000011111 | 11110000)
将导致11111111
假设二进制中的int1
是1111
,而int2
是1100
,int3
是0011
。
然后语句1将返回
false
,而语句2将返回true
在异常捕获短语中使用|
不作为运算符。它是一种特殊的语法,允许您捕获一组异常
这是否意味着我也可以做类似的事情
boolen bool1 = (int1 == (int2 | int3));
boolean bool1 = (int1 == (int2 | int3));
或者像这样投射一个物体
(obj1 | obj2) someObject;
obj1 | obj2 someName;
(obj1 | obj2) someObject;
obj1 | obj2 someName;
还是始终指定这样的对象?:
(obj1 | obj2) someObject;
obj1 | obj2 someName;
(obj1 | obj2) someObject;
obj1 | obj2 someName;
不,不,不
这种特殊的语法只能在捕获短语“签名”的特定上下文中使用
请注意,您的第一个示例在语法上是正确的,但它并不符合您的想法。具体而言,这两种说法的含义不同:
boolean bool1 = (int1 == (int2 | int3));
boolean bool2 = ((int1 == int2) || (int == int3));
第一个执行int2
和int3
的按位或运算,并测试结果是否等于int1
。如果我们用int1==0b0011
,int2==0b0001
和int3==0b0010
,则bool1
将为true
,bool2
将为false
其他两个示例在语法上不正确(作为表达式)。
是一个逻辑运算符,只能应用于|
布尔值
是一个位运算符,也可以应用于整数类型|
5 | 6=7
(00000101 | 00000110=00000111
)。它通常用于添加和比较在整数的不同位上设置的标志(而不是布尔数组)
在异常的情况下,这种构造是与Java7一起出现的。现在,您可以使用一条catch
语句捕获多个异常类型。在本例中,竖杆不是操作符,而是新构造的元素
但是,您不能将
|
(或|
)用作对象的运算符。您所指的编程语言是什么?您可以尝试运行此代码,看看它是否有效。这取决于编程语言。它不是C++,它不像java或者C语言。这是什么?@iTayb将语言添加为tageasy-to-verify,比如int1=3;int2=1和int3=2;然后有int1==(int2 | int3)(因为1或2=3),但int1不等于int2,或者int3 |也是一个逻辑运算符。它是| |的非短路版本,这意味着即使第一个条件为真,也将对第二个条件进行评估。