java中&和&&的区别 位运算

简介: 1.1. 逻辑与的运算符功能1.1.1. 测试&&public static void main(String[] args) {int x=5;if (x==6 && saySpringok()) {}} private static boolean saySpringok() {System.out.println("saySpringok");return false;}没有输出:因为用的&& 第一个不满足条件则不在判断后面的条件。

1.1. 逻辑与的运算符功能

1.1.1. 测试&&

public static void main(String[] args) {
int x=5;
if (x==6 && saySpringok()) {
}
}
 
private static boolean saySpringok() {
System.out.println("saySpringok");
return false;
}


没有输出:因为用的&& 第一个不满足条件则不在判断后面的条件。

修改代码如下:

public static void main(String[] args) {
int x=5;
if (x==5 && saySpringok()) {
}
}
 
private static boolean saySpringok() {
System.out.println("saySpringok");
return false;
}


输出saySpringok

1.1.2. 测试&

public static void main(String[] args) {
int x=5;
if (x==3 & saySpringok()) {
}
}
private static boolean saySpringok() {
System.out.println("saySpringok");
return false;
}


输出saySpringok

修改第一个表达式为true测试如下:

public static void main(String[] args) {
int x=5;
if (x==5 & saySpringok()) {
}
}
private static boolean saySpringok() {
System.out.println("saySpringok");
return false;
}


输出saySpringok

1.1.3. 总结

&&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false

区别:

&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式以及后面的表达式。(如果遇到true就一直向下判断条件直到遇到false的表达式返回)

&不具有短路的功能,逻辑运算表达式条件都会执行。

1.2. 位运算符

&&不支持位运算符 &支持位运算。

 

两个运算的操作数位都为1,结果为1不然结果为0,例如下面的程序段。

// 101
int a=5;
//111
int b=7;
//101 是5 结果是5
System.out.println(a&b);
//100
int c=4;
//100  结果是4
System.out.println(a&c);


1.2.1. 总结

0x0f 15 二进制 1111

我们通常使用0x0f来与一个整数进行&运算,来获取该整数的最低4bit位,例如,0x31 & 0x0f的结果为0x01

相关文章
|
6天前
|
Java
Java代码解释++i和i++的五个主要区别
本文介绍了前缀递增(++i)和后缀递增(i++)的区别。两者在独立语句中无差异,但在赋值表达式中,i++ 返回原值,++i 返回新值;在复杂表达式中计算顺序不同;在循环中虽结果相同但使用方式有别。最后通过 `Counter` 类模拟了两者的内部实现原理。
Java代码解释++i和i++的五个主要区别
|
15天前
|
Java
通过Java代码解释成员变量(实例变量)和局部变量的区别
本文通过一个Java示例,详细解释了成员变量(实例变量)和局部变量的区别。成员变量属于类的一部分,每个对象有独立的副本;局部变量则在方法或代码块内部声明,作用范围仅限于此。示例代码展示了如何在类中声明和使用这两种变量。
|
2月前
|
Java
java基础(4)public class 和class的区别及注意事项
本文讲解了Java中`public class`与`class`的区别和注意事项。一个Java源文件中只能有一个`public class`,并且`public class`的类名必须与文件名相同。此外,可以有多个非`public`类。每个类都可以包含一个`main`方法,作为程序的入口点。文章还强调了编译Java文件生成`.class`文件的过程,以及如何使用`java`命令运行编译后的类。
36 3
java基础(4)public class 和class的区别及注意事项
|
27天前
|
Java
Java基础之 JDK8 HashMap 源码分析(中间写出与JDK7的区别)
这篇文章详细分析了Java中HashMap的源码,包括JDK8与JDK7的区别、构造函数、put和get方法的实现,以及位运算法的应用,并讨论了JDK8中的优化,如链表转红黑树的阈值和扩容机制。
20 1
|
30天前
|
Java 编译器 C语言
【一步一步了解Java系列】:探索Java基本类型与C语言的区别
【一步一步了解Java系列】:探索Java基本类型与C语言的区别
36 2
|
30天前
|
存储 缓存 Java
【用Java学习数据结构系列】HashMap与TreeMap的区别,以及Map与Set的关系
【用Java学习数据结构系列】HashMap与TreeMap的区别,以及Map与Set的关系
31 1
|
1月前
|
自然语言处理 Java 数据处理
Java IO流全解析:字节流和字符流的区别与联系!
Java IO流全解析:字节流和字符流的区别与联系!
67 1
|
1月前
|
缓存 安全 Java
Java中 final、finally、finalize 有什么区别?
本文详细阐述了Java中`final`、`finally`和`finalize`的区别:`final`用于修饰类、方法和变量以表示不可变性;`finally`是用于确保在`try-catch`结构中无论是否发生异常都能执行的代码块;而`finalize`是`Object`类的方法,用于在对象被垃圾回收前执行清理工作,但在JDK 9中已被标记为弃用。
22 0
Java中 final、finally、finalize 有什么区别?
|
1月前
|
Java
Java中抽象类和接口有什么区别?
本文阐述了Java中抽象类和接口的区别,包括类型扩展、方法/属性访问控制符、方法实现、使用目的等方面的不同,并提供了抽象类和接口的使用示例,以及Java中其他类型的类(普通类、内部类等)的简介。
68 0
Java中抽象类和接口有什么区别?
|
18天前
|
Java
Java代码解释静态代理和动态代理的区别
### 静态代理与动态代理简介 **静态代理**:代理类在编译时已确定,目标对象和代理对象都实现同一接口。代理类包含对目标对象的引用,并在调用方法时添加额外操作。 **动态代理**:利用Java反射机制在运行时生成代理类,更加灵活。通过`Proxy`类和`InvocationHandler`接口实现,无需提前知道接口的具体实现细节。 示例代码展示了两种代理方式的实现,静态代理需要手动创建代理对象,而动态代理通过反射机制自动创建。