如果觉得自增与自减迷惑性强的话可以灵活使用x += 1
或x -= 1
来替换。
public class TestDemo{ // 定义一个程序类
public static void main(String args[]){
int x = 10 ;
int y = 20 ;
// 先执行x += 1再进行乘法运算
int result = ++x * y ;
System.out.println("result =" + result) ; // 220
System.out.println("x =" + x) ; // 11
/* 先进行乘法运算再执行x += 1
int result = x++ * y ;
System.out.println("result =" + result) ; // 200
System.out.println("x =" + x) ; // 11
*/
}
}
三目是一种赋值运算,根据条件判断来进行赋值。
基本使用语法:
type variable = 条件判断式 ? true赋值 : false赋值 ;
public class TestDemo{ // 定义一个程序类
public static void main(String args[]){
int x = 10 ;
int y = 20 ;
// type variable = 条件判断式 ? true赋值 : false赋值 ;
// 如果x > y判断结果为true,x值赋给result;结果为false,y值赋给result
int result = x > y ? x : y ;
System.out.println(result) ;
}
}
如果觉得三目表达式迷惑性强的话可以用if语句来判断、赋值。当然最好还是用三目运算符,因为其更简洁。
>、<、>=、<=、!=、==
所有关系运算符返回结果都是boolean型。
public class TestDemo{ // 定义一个程序类
public static void main(String args[]){
int x = 10 ;
int y = 20 ;
System.out.println(x > y) ;
System.out.println(x < y) ;
System.out.println(x >= y) ;
System.out.println(x <= y) ;
System.out.println(x != y) ;
System.out.println(x == y) ;
System.out.println(‘a‘ == 97) ;
System.out.println(‘0‘ == 0) ;
}
}
麻烦之处在于与和或,因为它们各有两种写法。
&
、&&
|
、||
在多个条件进行与运算时,只有所有的条件都为true才可以判定为true。理解:有0就0,全1才1。
public class TestDemo { // 定义一个程序类
public static void main(String args[]) {
// 设置一个有错误的条件看看会不会参与到运算中
if (1 > 2 & 10 / 0 == 0) {
System.out.println("条件满足!") ;
}
// 报错:除数为0
}
}
public class TestDemo { // 定义一个程序类
public static void main(String args[]) {
// 设置一个有错误的条件看看会不会参与到运算中
if (1 > 2 && 10 / 0 == 0) {
System.out.println("条件满足!") ;
}
}
}
&
会判断所有条件,不管true或false,因此判断到第二条有错误的条件时会报错;双与&&
判断到所有条件中第一条为false的判断之后会停止运算,因为后面条件无论如何判断结果最终都会是false。因此双与&&
又称短路与,双与&&
的性能更好。在多个条件进行或运算时,只要所有的条件中有一个是true就可以判定为true。理解:有1就1,全0才0。
public class TestDemo { // 定义一个程序类
public static void main(String args[]) {
if (1 != 2 | 10 / 0 == 0) {
System.out.println("条件满足!") ;
}
// 报错:除数为0
}
}
public class TestDemo { // 定义一个程序类
public static void main(String args[]) {
if (1 != 2 || 10 / 0 == 0) {
System.out.println("条件满足!") ;
}
}
}
|
会判断所有条件,不管true或false,因此判断到第二条有错误的条件时会报错;双或||
判断到所有条件中第一条为true的判断之后会停止运算,因为后面条件无论如何判断结果最终都会是true。因此双或||
又称短路或,双或||
的性能更好。所以以后都使用短路与&&
、短路或||
。
&&``||
是二目运算符,!
是单目运算符
位运算符可以用于逻辑运算,逻辑运算符不能用于位运算,在18已经讨论过这个问题。
位运算是按照二进制、八进制、十六进制进行数据处理,最常用的还是二进制。在位运算中可以采用数据移位的方式实现一些数据的内容变化。
0
+数字
;十六进制标志:0x
+数字
位运算:按位与&
、按位或|
、按位非~
、按位异或^
、左移<<
、右移>>
、不带符号右移>>>
。
&
:双目运算符,有0就0,全1才1;|
:双目运算符,有1就1,全0才0;~
:单目运算符,0非是1,1非是0;^
:双目运算符,相同是0,不同是1。
public class TestDemo { // 定义一个程序类
public static void main(String args[]) {
int numA = 14 ; // 00000000 00000000 00000000 00001110
int numB = 7 ; // 00000000 00000000 00000000 00000111
System.out.println(numA & numB) ; // 6 00000110
System.out.println(numA | numB) ; // 15 00001111
System.out.println(~numA) ; // -15 10000000 00000000 00000000 00001111
System.out.println(numA ^ numB) ; // 9 00001001
}
}
<<
:x << y —— x向左移动y位,低位补零>>
:x >> y —— x向右移动y位,正数高位补零,负数高位补1;>>>
:x >>> y —— x向右移动y位,高位补0
public class TestDemo { // 定义一个程序类
public static void main(String args[]) {
int numA = 7 ; // 00000000 00000000 00000000 00000111
System.out.println(numA << 4) ; // 112 01110000
System.out.println(numA >> 4) ; // 0 00000000
System.out.println(numA >>> 4) ; // 0 00000000
}
}
总结:&&
和&
、||
和|
的区别
&&
表示逻辑与运算,若干个判断条件中如果前面有条件返回了false,那么后面的条件不再判断,最终结果就是false;&
表示按位与运算和逻辑与运算。当表示按位与运算时如果有一个0结果就是0,全为1时结果才是1;当表示逻辑与运算时要比较所有的判断条件;||
表示逻辑或运算,若干个判断条件中如果前面有条件返回了true,那么后面的条件不再判断,最终结果就是true;|
表示按位或运算和逻辑或运算。当表示按位或运算时如果有一个1结果就是1,全为0时结果才是0;当表示逻辑或运算时要比较所有的判断条件;阿里云【名师课堂】Java零基础入门15 ~ 19:Java运算符
原文:https://www.cnblogs.com/playerone/p/13052852.html