我只是想知道为什么我们通常||在两个布尔值之间使用逻辑OR 而不是按位OR |,尽管它们都运行良好.
我的意思是,看看以下内容:
if(true | true) // pass
if(true | false) // pass
if(false | true) // pass
if(false | false) // no pass
Run Code Online (Sandbox Code Playgroud)
if(true || true) // pass
if(true || false) // pass
if(false || true) // pass
if(false || false) // no pass
Run Code Online (Sandbox Code Playgroud)
我们可以用|而不是||吗?同样的事情&和&&.
我一直认为&&Java 中的运算符用于验证它的布尔操作数是否都是true,并且&运算符用于对两个整数类型执行逐位运算.
最近我开始知道&运算符也可以用来验证它的布尔操作数是否都是true,唯一的区别是它检查RHS操作数,即使LHS操作数是假的.
&Java内部的运算符是否内部过载?或者这背后有其他一些概念吗?
可能重复:
|之间的区别是什么 和|| 在Java?
&和&&的区别
我只是想知道&和&&之间的区别是什么?
几天我写了一个if声明的条件看起来像:
if(x < 50 && x > 0)
Run Code Online (Sandbox Code Playgroud)
但是,我改变了&&只是&并没有表现出错误.有什么不同?
示例:我编译了这个简单的程序:
package anddifferences;
public class Main {
public static void main(String[] args) {
int x = 25;
if(x < 50 && x > 0) {
System.out.println("OK");
}
if(x < 50 & x > 0) {
System.out.println("Yup");
}
}
}
Run Code Online (Sandbox Code Playgroud)
它印有"OK"和"Yup".如果它们都起作用,那么我使用哪一个呢?
我有这样的代码:
if(object != null && object.field != null){
object.field = "foo";
}
Run Code Online (Sandbox Code Playgroud)
假设该对象为null.
此代码是否导致nullPointerException或只是if语句不会被执行?
如果是这样,如何重构这段代码更优雅(如果可能的话)?
这可能实际上是一个愚蠢的问题,但我想知道是否有可能有if语句执行所有条件.我解释:
if (methodA() && methodB() && methodC()) {code}
Run Code Online (Sandbox Code Playgroud)
code当所有三个方法都返回true时执行.关键是当方法返回false时,不执行其余方法.这对于性能来说通常是一件好事,但是如果我真的需要独立于它们返回的内容执行所有方法并且之后评估表达式并进入if或者not.同样适用于OR或其他任何东西
有没有办法告诉java这样做?我目前的工作是将它分成三个ifs,但这并不总是有效,看起来真的很难看.
我只是好奇.我想知道表达式是否有特定原因
var &= expr
Run Code Online (Sandbox Code Playgroud)
表现不一样
var = var && expr.
Run Code Online (Sandbox Code Playgroud)
看起来第一个中的表达式正在执行,而不管var上的错误值.
我正在使用Java 6,FYI.这段代码:
public class Test
{
protected static String getString()
{
return null;
}
public static void main(String... args)
{
String string = getString();
boolean test = (string != null);
test = test && (string.length() > 0);
System.out.println("First test passed");
test &= (string.length() > 0);
System.out.println("Second test passed");
}
}
Run Code Online (Sandbox Code Playgroud)
给我:
First test passed
Exception in thread "main" java.lang.NullPointerException
at Test.main(Test.java:14)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at …Run Code Online (Sandbox Code Playgroud) 我是一名学习Java的学生,我一直困在家庭作业问题的最后一部分.我需要写一个条件语句来打印掷骰子是否是Yahtzee(所有五个骰子彼此相等).由于我使用了int而不是boolean,我无法弄清楚如何做到这一点.我知道我不能将int转换为布尔值,到目前为止,这个转换是我知道如何更改变量的唯一方法.任何帮助将不胜感激,因为实现我正在寻找的方式已经超出了我现在所能理解的程度.这就是我所拥有的,问题在于倒数第二行.
import java.util.Random;
public class FiveDice_JLR
{
//-----------------------------------------------------------------
// Generates random numbers in various ranges.
//-----------------------------------------------------------------
public static void main(String[] args)
{
Random generator = new Random();
int die1, die2, die3, die4, die5;
die1 = generator.nextInt(6)+1;
System.out.println("Die 1: " + die1);
die2 = generator.nextInt(6)+1;
System.out.println("Die 2: " + die2);
die3 = generator.nextInt(6)+1;
System.out.println("Die 3: " + die3);
die4 = generator.nextInt(6)+1;
System.out.println("Die 4: " + die4);
die5 = generator.nextInt(6)+1;
System.out.println("Die 5: " + die5);
**if(die1==die2&==die3==die4&==die5&&);**
{
System.out.println("Yahtzee!!!!");
}
}
Run Code Online (Sandbox Code Playgroud) 我只是想学习按位/移位操作.
我遇到了以下程序,但是不了解以下程序中的AND条件部分(检查器和(1 << val).最终值何时大于0?有人可以解释那里发生的事情吗?
示例输入:xyzz
样本输出:
8388608Value 0checker 0final value
16777216Value 8388608checker 0final value
33554432Value 25165824checker 0final value
33554432Value 58720256checker 33554432最终价值
public static boolean isUniqueChars(String str) {
int checker = 0;
for (int i = 0; i < str.length(); i++) {
int val = str.charAt(i) - 'a';
System.out.println((1 << val) + "Value");
System.out.println((checker) + "checker");
System.out.println(((checker & (1 << val))) + "final value\n");
if ((checker & (1 << val)) > 0) {
return false;
} else {
checker = checker …Run Code Online (Sandbox Code Playgroud) 我有这个代码
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)
但我无法理解"&"的含义.它与"&&"不同吗?
java ×9
operators ×2
and-operator ×1
bit-shift ×1
boolean ×1
compilation ×1
conditional ×1
if-statement ×1