Java(1)_Java 运算符
自增自减运算符
- ++和-- 既可以放在变量的后边,也可以放在变量的前边
- 单独使用的时候, ++和-- 无论是放在变量的前边还是后边,结果是一样的。
- 参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者--。
参与操作的时候,如果放在变量的前边,先拿变量做++或者--,后拿变量参与操作。
/*
赋值运算符
*/
public class OperatorDemo {
public static void main(String[] args) {
//把10赋值给int类型的变量i
int i = 10;
System.out.println("i:" + i); //结果等于10
// += 把左边和右边的数据做加法操作,结果赋值给左边
i += 20;
//i = i + 20;
System.out.println("i:" + i); //结果等于30
//注意:扩展的赋值运算符底层隐含了强制类型转换
short s = 10;
s += 20;
//s = (short)(s + 20);
System.out.println("s:" + s); //结果等于30
}
}
逻辑运算符
package com_iteheima;
public class Java_3 {
public static void main(String[] args) {
//定义变量
int i = 10;
int j = 20;
int k = 30;
//& 有false则false
System.out.println((i > j) & (i > k)); //false & false 结果为:false
System.out.println((i < j) & (i > k)); //true & false 结果为:false
System.out.println((i > j) & (i < k)); //false & true 结果为:false
System.out.println((i < j) & (i < k)); //true & true 结果为:true
System.out.println("--------");
//| 有true则true
System.out.println((i > j) | (i > k)); //false | false 结果为:false
System.out.println((i < j) | (i > k)); //true | false 结果为:true
System.out.println((i > j) | (i < k)); //false | true 结果为:true
System.out.println((i < j) | (i < k)); //true | true 结果为:true
System.out.println("--------");
//^ 相同为false,不同为true
System.out.println((i > j) ^ (i > k)); //false ^ false 结果为:false
System.out.println((i < j) ^ (i > k)); //true ^ false 结果为:true
System.out.println((i > j) ^ (i < k)); //false ^ true 结果为:true
System.out.println((i < j) ^ (i < k)); //true ^ true 结果为:false
System.out.println("--------");
//!
System.out.println((i > j)); //false 结果为:false
System.out.println(!(i > j)); //!false 结果为:true
System.out.println(!!(i > j)); //!!false 结果为:false
System.out.println(!!!(i > j)); //!!!false 结果为:true
}
}
短路逻辑运算符
在逻辑与运算中,只要有一个表达式的值为false,那么结果就可以判定为false了,没有必要将所有表达式的值都
计算出来,短路与操作就有这样的效果,可以提高效率。同理在逻辑或运算中,一旦发现值为true,右边的表达式
将不再参与运算。
- 逻辑与&,无论左边真假,右边都要执行
- 短路与&&,如果左边为真,右边执行;如果左边为假,右边不执行。
- 逻辑或|,无论左边真假,右边都要执行。
- 逻辑或|,无论左边真假,右边都要执行。
举个例子:
int x = 3;
int y = 4;
System.out.println((x++ > 4) & (y++ > 5)); // 两个表达都会运算
System.out.println(x); // 4
System.out.println(y); // 5
System.out.println((x++ > 4) && (y++ > 5)); // 左边已经可以确定结果为false,右边不参与运算
System.out.println(x); // 4
System.out.println(y); // 4
三元运算符
三元运算符语法格式::关系表达式 ? 表达式1 : 表达式2;
- 解释:问号前面的位置是判断的条件,判断结果为boolean型,为true时调用表达式1,为false时调用表达式2。其
逻辑为:如果条件表达式成立或者满足则执行表达式1,否则执行第二个。
举例:
int a = 10;
int b = 20;
int c = a > b ? a : b; // 判断 a>b 是否为真,如果为真取a的值,如果为假,取b的 结果为:20