我一直认为&&
Java 中的运算符用于验证它的布尔操作数是否都是true
,并且&
运算符用于对两个整数类型执行逐位运算.
最近我开始知道&
运算符也可以用来验证它的布尔操作数是否都是true
,唯一的区别是它检查RHS操作数,即使LHS操作数是假的.
&
Java内部的运算符是否内部过载?或者这背后有其他一些概念吗?
我知道规则&&
,||
但是什么是&
和|
?请以一个例子向我解释这些.
在这段代码中.
public class Test {
public static void testFun(String str) {
if (str == null | str.length() == 0) {
System.out.println("String is empty");
} else {
System.out.println("String is not empty");
}
}
public static void main(String [] args) {
testFun(null);
}
}
Run Code Online (Sandbox Code Playgroud)
我们将null值传递给函数null
.编译很好,但testFun
在运行时给出.
假设传递给的实际参数的值NullPointerException
是从某个进程生成的.假设该进程错误地返回null值并将其提供给testFun.如果是这种情况,如何验证传递给函数的值是否为null?
一个(奇怪的)解决方案可能是将形式参数分配给函数内的某个变量,然后对其进行测试.但是如果有许多变量传递给函数,那可能会变得乏味且不可行.那么,如何在这种情况下检查空值?
编辑:错误地写了|| 而不是| 在if条件下.现在生成运行时异常
可能重复:
为什么我们通常||
不使用|
,有什么区别?
标题说明了一切.它已被讨论过其他语言,但我还没有看到它用于Java.
我有这个代码
import java.io.*; import java.util.*;
import javax.xml.parsers.*; import org.xml.sax.InputSource;
class TeamPlayer {
private int pulse;
TeamPlayer() { pulse= -10; }
TeamPlayer(int v0) {pulse= v0 +5;}
public int m(int v) { return 31%3 ;}
public int get_pulse() { return 1* pulse;}
}
class GoalKeeper extends TeamPlayer {
GoalKeeper() { stress -=8; }
public static int stress=3;
public int m(int v) { return (v & 3) + 15; }
}
Run Code Online (Sandbox Code Playgroud)
但我无法理解"&"的含义.它与"&&"不同吗?
可能重复:
&和&&的差异
if (true && true) {
System.out.println("test if");
}
if (true & true) {
System.out.println("test if");
}
Run Code Online (Sandbox Code Playgroud)
两者都给出相同的输出.为什么?