Java运算符介绍

文章目录

    • 一、算术运算符:
    • 二、关系运算符:
    • 三、逻辑运算符:
    • 四、赋值运算符:
    • 五、位运算
    • 六、其他运算符:
        • (1)、三目运算符(?:)
        • (2)、instanceof 运算符

Java运算符分成以下几组: 算术运算符、关系运算符、逻辑运算符、赋值运算符、其他运算符。

一、算术运算符:

操作符 描述
+ 加法 ­ 相加运算符两侧的值
- ­ 减法 ­ 左操作数减去右操作数
* 乘法 ­ 相乘操作符两侧的值
/ 除法 ­ 左操作数除以右操作数
取余 ­ 左操作数除以右操作数的余数
++ 自增: 操作数的值增加1
- - 自减: 操作数的值减少1

注意:自增(自减)在前面和在后面的区别:
++y(­­y):先将 y 的值自增(自减)1,然后再在当前表达式中使用 y 的值。
y++(y­­):先在当前表达式中使用 y 的值,然后再将 y 的值自增(自减)1。

二、关系运算符:

运算符 描述
> 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。
>= 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。
< 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。
<= 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。
== 检查如果两个操作数的值是否相等,如果相等则条件为真。
!= 检查如果两个操作数的值是否相等,如果值不相等则条件为真。

注意:Java中 = = 和 equals()方法的区别
== 在基本数据类型的时候就是比较值是否相同,在引用类型时是比较地址
equals 用于判断引用类型的值

三、逻辑运算符:

操作符 描述
&& 与,前后两个操作数必须都是true才返回true,否则返回false
& 不短路与,作用与&&相同,但不会短路。
| | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。
| 不短路或,作用与
称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。
^ 异或,当两个操作数不同时才返回true,如果两个操作数相同则返回false。

特点:
逻辑运算符除了 ! 外都是用于连接两个boolean类型表达式。
&: 只有两边都为true结果是true。否则就是false。
|:只要两边都为false结果是false,否则就是true
^:异或:和或有点不一样。
  两边结果一样,就为false。
  两边结果不一样,就为true.
& 和 &&区别:
& :无论左边结果是什么,右边都参与运算。
&&:短路与,如果左边为false,那么右边不参数与运算。
| 和|| 区别:
|:两边都运算。
||:短路或,如果左边为true,那么右边不参与运算。

四、赋值运算符:

操作符 描述
= 简单的赋值运算符,将右操作数的值赋给左侧操作数
+= 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数
= 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数
*= 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数
/= 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数
%= 取余和赋值操作符,它把左操作数和右操作数取余后赋值给左操作数

五、位运算

运算符 描述 范例
<< 左移 3<<2=12—>3 * 2 * 2=12
>> 右移 3>>1=1—>3/2=1
>>> 无符号右移 3>>>1=1—>3/2=1
& 与运算 6&3=2
| 或运算 6 | 3=7
^ 异或运算 6^3=5
~ 反码 ~6=-7

六、其他运算符:

(1)、三目运算符(?:)

三目运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的
值。该运算符的主要是决定哪个值应该赋值给变量。
格式:

variable x = (expression) ? value if true : value if false

(2)、instanceof 运算符

该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类
型、继承类型)。返回true或false。
格式:

 (Object reference variable) instanceof (class/interface type)

示例代码:

public static void main(String[] args) {
	// 算术运算符:+ - * / % ++ --
	// + 加 同时也是字符串的连接运算符
	int a = 19;
	int b = 4;
	int c = a + b;
	System.out.println("a+b=" + c);
	// - 减
	int d = a - b;
	System.out.println("a-b=" + d);
	// * 乘
	int e = a * b;
	System.out.println("a*b=" + e);
	// / 除
	int f = a / b;
	// 注:整数/整数=整数,是截断取整,而不是四舍五入取整
	// ****java.lang.ArithmeticException: / by zero
	// int g=a/0; //整数不能除0,
	// 当除数或者被除数中有一个为浮点型的,那么结果就是自然除法的结果,
	// 如果此时除数为0或者0.0,那么结果为正无穷或者负无穷
	// 0.0除0.0结果为NaN 非数
	System.out.println("a/b=" + f);
	System.out.println("a/0.0=" + (a / 0.0));
	System.out.println("-a/0.0=" + (-a / 0.0));
	System.out.println("0.0/0.0=" + (0.0 / 0.0));
	
	// % 取余
	// 两个整数时 第二个数不能是0
	// 一个或者2个为浮点数,第二个数为0或者0.0时,结果为NaN,
	// 第一个数为0或0.0时,结果为0.0
	int h = a % b;
	System.out.println("a % b=" + h);
	System.out.println("a % 0.0=" + (a % 0.0));
	System.out.println("0.0 & b=" + (0.0 % b));

	// ++ 自加 ;单目运算符
	int A = 20;
	int B = 20;
	int C = A++ + B;
	System.out.println("++A=" + (++A));
	System.out.println("B++=" + (B++));
	System.out.println("C=" + C);

	// -- 自减,单目运算符
	int D = 20;
	int E = 20;
	System.out.println("--D=" + (--D));
	System.out.println("E--=" + (E--));

	// 关系运算符:> >= < <= == !=
	System.out.println("5>4 = " + (5 > 4));
	System.out.println("5>=4 = " + (5 >= 4));
	System.out.println("5<4 = " + (5 < 4));
	System.out.println("5<=4 = " + (5 <= 4));
	System.out.println("5==4 = " + (5 == 4));
	System.out.println("5!=4 = " + (5 != 4));

	// == 和 equals() 方法
	// == 在基本数据类型的时候就是比较值是否相同,在引用类型时是比较地址
	// equals 用于判断引用类型的值
	String str = "123";
	int intA = 123;
	String strA = String.valueOf(intA);
	System.out.println("str==strA = " + (str == strA));
	System.out.println("str.equals(strA) = " + (str.equals(strA)));
	//int intA1 = 10;
	//int intA2 = 20 / 2;
	//System.out.println("intA1==intA2 :" + (intA1 == intA2));

	// //逻辑运算符
	// &&:与,前后两个操作数必须都是true才返回true,否则返回false。
	// &:不短路与,作用与&&相同,但不会短路。
	// ||:或,只要两个操作数中有一个是true,就可以返回true,否则返回false。
	// |不短路或,作用与||相同,但不会短路。
	// !:非,只需要一个操作数,如果操作数为true,则返回false;如果操作数为false,则返回true。
	// ^:异或,当两个操作数不同时才返回true,如果两个操作数相同则返回false。
	boolean boolValu1 = true;
	boolean boolValu2 = false;
	System.out.println("a && b = " + (boolValu1 && boolValu2));
	System.out.println("a || b = " + (boolValu1 || boolValu2));
	System.out.println("!(a && b) = " + !(boolValu1 && boolValu2));
	// !
	if (!(1 > 2)) {
		System.out.println("!(1>2)");
	}

	// ^
	if (true ^ false) {
		System.out.println("true ^ false");
	}
	
	// 短路和不短路
	int intB = 10;
	if (intB > 11 && intB++ > 9) {

	}
	System.out.println("intB="+intB);

	int intC = 10;
	if (intC > 11 & intC++ > 9) {

	}
	System.out.println("intC =" + intC);
	
	//===赋值运算符
	// 三目运算符: ? :
	int intValue = 5;
	System.out.println((intValue > 4) ? "5>4" : "5<4");

	//instanceof
    String str1="Name";
    boolean bool=str1 instanceof String; 
	System.out.println(bool);
}

你可能感兴趣的:(Java基础知识点(Java,SE))