不管什么时候,都要保持足够的警戒性。比你聪明的人都在努力,再不动起来,咱们就老了。欢迎你们扫描下方的二维码关注个人微信公众号,与我一块儿学习Java。vue
上一节,咱们讲了Java中的算术操做符、自增自减操做符以及关系操做符,并经过案例进行了相应的说明。请回答如下几个问题:java
今天咱们继续讲解Java中操做符的相关知识,主要涉及两块的内容:微信
逻辑操做符负责链接多个关系表达式,其能根据参数的逻辑关系,生成一个boolean值。逻辑操做符有与(&&)
、或(||)
、非(!)
。“与”、“或”、“非”只能应用于boolean值,而不能将一个非布尔值看成布尔值在逻辑表达式中使用。markdown
&&
操做符表示全部的关系表达式都为true时才为true||
操做符表示只要有一个关系表达式为true就为true!
操做符表示取当前的相反量()
来肯定优先级public class LogicExp {
public static void main(String [] args) {
//&& 全部的关系表达式都为true时才为true
System.out.println(5>3&&5>4);
System.out.println(5>3&&5>6);
//|| 只要有一个关系表达式为true就为true
System.out.println(5>3||5>4);
System.out.println(5>3||5>6);
//! 取当前的相反量
System.out.println(5>3);
System.out.println(!(5>3));
//混合使用逻辑操做符()内的表达式优先进行运算
System.out.println((5>6&&5>3) || 5>4);
System.out.println(5>6 && (5>3||5>4));
}
}
//output
//true
//false
//true
//true
//true
//false
//true
//false
&&
、||
操做符每每还有短路的做用,短路的做用体如今:好比说&&
操做符,若是第一个表达式为false,那么它便不会去对第二个表达式进行运算
。||
操做符具备一样的特性,若是第一个表达式为true,那么它便不会去对第二个表达式进行运算
。app
public class LogicExp {
public static void main(String [] args) {
System.out.println("&&短路操做:"+(test3()&&test1()));
System.out.println("====================================")
System.out.println("||短路操做:"+(test1()||test2()));
}
public static test1() {
System.out.println("5>3:"+(5>3));
return (5>3);
}
public static test2() {
System.out.println("5>4:"+(5>4));
return (5>4);
}
public static test3() {
System.out.println("5>6:"+(5>6));
return (5>6);
}
}
//output
//5>6:false
//&&短路操做:false
//====================================
//5>3:true
//||短路操做:true
所以在写逻辑表达式的时候,把重要判断的条件表达式放在前面优先判断,能够减小没必要要的运算,从而得到潜在的性能提高。性能
除了Java中的八种基本数据类型外,还有一个比这些基本数据类型还小的单位bit(位)
,如1 byte = 8 bit
。按位操做符就是对这个二进制位进行操做。按位操做符会对两个参数中对应的位执行布尔(boolean)代数运算(由于二进制位只可能为0或者为1),并生成一个boolean结果。学习
按位操做符主要分为&(按位与)
、|(按位或)
、^(按位异或)
、~(非)
四种。ui
假设输入值的二进制数是下列的输入值1和输入值2 输入值1:00011010 输入值2:00110011 => 比较后的结果是:00010010
假设输入值的二进制数是下列的输入值1和输入值2 输入值1:00011010 输入值2:00110011 => 比较后的结果是:00111011
假设输入值的二进制数是下列的输入值1和输入值2 输入值1:00011010 输入值2:00110011 => 比较后的结果是:00101001
假设输入值的二进制数是下列的输入值1 输入值1:00011010 => 取反后的结果是:11100101
对于boolean值而言,因为其做为一种单bit值,按位操做符具备与逻辑操做符相同的效果,只是其没有逻辑操做符的短路功能
。url
今天主要讲解了逻辑操做符和按位操做符,对boolean类型而言,两种操做符具备大体相同的逻辑判断效果,可是也有必定的区别,这是咱们须要谨记的地方。spa
而在使用逻辑操做符时,必定要记得,把优先级高的、更顶层的关系表达式放在前面,这样可以避免没必要要的运算,从而必定程度上提升程序性能。
若是以为我写的内容对你有帮助,欢迎关注个人微信公众号: