逻辑运算符
与或非(&& ,||,!(&&))
package Operator;
public class 逻辑运算符 {
public static void main(String[] args) {
boolean a=true;
boolean b=false;
System.out.println("a&&b:"+(a&&b));//a与b,b为假,结果为假
System.out.println("a||b:"+(a||b));//a或b,a为真,结果为真
System.out.println("!(a&&b):"+!(a&&b));//非运算是取反与运算,结果为真
//短路运算
int c= 6;
boolean d=(c<4)&&(c++<4);//与运算看第一个为true则执行下一句,为false则直接判定为false不执行下一句
System.out.println(c);
System.out.println(d);
}
}
注意c=6,与运算,若头为false则不运算下一句,c&&d,若运算则输出c=7,但结果c=6,所以,没执行c++<4
位运算
& | ^ ~(与,或,异或,非)二进制有关
package Operator;
import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
public class 位运算 {
public static void main(String[] args) {
/*
a=0000 1111
b=1111 0000
a&b =0000 0000//与运算,针对二进制,若一位有0则都为0
a|b =1111 1111//或运算,若一位有1,则都为一
a^b =0000 0000//异或运算,若两者相同为1,反之则为0
~b =0000 1111//非运算,取反
2*8=16//怎样运算最快,用<< >>,与二级制有关
<<,
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
.....
0001 0000 16
<< 意思*2
>> 意思/2
* */
System.out.println(2<<3);
}
面试题
2*8=16,怎样运行最快?
用<<左推运算符,效率最高
意思是四个2相乘
2<<3=2* 2 *2 * 2=16
<<意思 *2 >>意思 /2
扩展运算符
+= 意思a+=b 为a=a+b
package Operator;
public class 扩展运算符 {
public static void main(String[] args) {
int a=10;
int b=20;
a+=b;//a=a+b
System.out.println(a);
}
}
//字符串连接符 +
System.out.println(""+a+b);//+号前有String类型的字符输出结果为10和20连接起来1020
System.out.println(a+b+"");//+号后有"",运算前面的操作
面试题,问(” ”+a+b)与(a+b+“ ”)区别
第一个字符串在前+号是一个字符串连接符结果应该是ab
第二个字符串在后,应该输出前面的运算a+b
三元运算符
条件运算符? :
x ? y : z 如果x==true,则结果为y,否则结果为z