Java的算数运算符
运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。运算符按照其要求的操作数数目来分,可以有单目运算符、双目运算符和三目运算符,它们分别对应于1个、2个、3个操作数。运算符按其功能来分,有算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符和其他运算符
算术运算符
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。
算数运算符有:+ 、- 、* 、/ 、% 、++ 、--
举例:+,-,*
//算术运算符
// + - * / % ++(自增)--(自减)
int a=23;
int b=5;
//+,加,相加运算符两侧的值
//+,同时也是字符串的连接运算符
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*0;
/(除)
//除(整型不能除零,)
int f=a/b;//整数/整数=整数,是截断取整,而不是四舍五入取整
//int g=a/0;整数不能除零
//当除数或者被除数中有一个为浮点型的,那么结果就是自然除法的结果
//如果此时除数为0或者0.0那么结果为正无穷或者负无穷
//0.0除0结果为NaN非数;
System.out.println("Infinity 正无穷"+10/0.0);
System.out.println("没有四舍五入,直接截断 :a/b="+f);
System.out.println("0.0/0.0="+(0.0/0.0));
// System.out.println("除零异常"+10/0);
//java.lang.ArithmeticException除零异常
取余
取余运算符既可用于两个操作数都是整数的情况,也可用于两个操作数都是浮点数(或一个操作数是浮点)的情况。
int a=19;
int b=4;
float c = 3.8f;
float d = 1.8f;
//% 求余
/*两个整数时第二个数不能为零
* 一个或者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));
System.out.println("c % d="+(c % d));
++自加,--自减
自增(++)自减(--),运算符是一种特殊的算术运算符,在算术运算符中需要两个操作数来进行运算,而自增自减运算符是一个操作数
//++自增
//定义变量
int A=20;
int B=20;
int C=20;
int D=C++ + B;
//前缀自增自减法(++a,--a): 先进行自增或者自减运算,再进行表达式运算。
//后缀自增自减法(a++,a--): 先进行表达式运算,再进行自增或者自减运算
System.out.println("++A="+(++A));
System.out.println("B++="+(B++));
System.out.println("D="+D);
//--自减
D=20;
int E=20;
System.out.println("--D="+(--D));
System.out.println("E--="+(E--));
//int b = ++A; 拆分运算过程为: a=a+1=4; b=a=4, 最后结果为b=4,a=4
//int d = --C; 拆分运算过程为: c=c-1=2; d=c=2, 最后结果为d=2,c=2
比较运算符
>、 >= 、<、 <=、 == 、!=
//比较运算符
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));
成立则为true,不成立则为false。
逻辑运算符
//逻辑运算符
//&&:短路与,前后两个操作数必须都是true才返回true,否则返回false。
//&:不短路与,作用于&&相同,但不会短路
//||:或,只要两个操作数中有一个是true,就可以返回true,否则返回false。
//|:不短路或,作用与||相同,但不会短路。
//!:非,只需要一个操作数,如果操作数为true,则返回false;如果操作数为false,则返回true。
//^:异或,当两个操作数不同时才返回true,如果两个操作数相同则返回false
boolean a = true;
boolean b = false;
System.out.println("a && b = " + (a&&b));
System.out.println("a || b = " + (a||b) );
System.out.println("!(a && b) = " + !(a && b));
// 短路逻辑运算符
int a = 5;//定义一个变量;
boolean b = (a<4)&&(a++<10);
System.out.println("使用短路逻辑运算符的结果为"+b);
System.out.println("a的结果为"+a);
结果:
赋值运算符:
操作符
描述
=
简单的赋值运算符,将右操作数的值赋给左侧操作数
+=
加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数
-=
减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数
*=
乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数
/=
除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数
//赋值运算符
//= += -= /=
int intZ=1;
System.out.println(intZ+=1);
System.out.println(intZ-=1);
System.out.println(intZ*=1);
System.out.println(intZ/=1);
位运算符:
位运算是以二进制位为单位进行的运算,其操作数和运算结果都是整型值。 位与'&',位或'|',位非'~',位异或'^',右移'>>',左移'<<',0填充的右移'>>>' 位运算的位与'&',位或'|',位非'~',位异或'^'与逻辑运算的相应操作的真值表完全相同,其差别只是位运算操作的操作数和运算结果都是二进制整数,而逻辑运算相应操作的操作数和运算结果都是逻辑值boolean型。
int a = 60; /* 60 = 0011 1100 */
int b = 13; /* 13 = 0000 1101 */
int c = 0;
c = a & b; /* 12 = 0000 1100 */
System.out.println("a & b = " + c );
c = a | b; /* 61 = 0011 1101 */
System.out.println("a | b = " + c );
c = a ^ b; /* 49 = 0011 0001 */
System.out.println("a ^ b = " + c );
c = ~a; /*-61 = 1100 0011 */
System.out.println("~a = " + c );
c = a << 2; /* 240 = 1111 0000 */
System.out.println("a << 2 = " + c );
c = a >> 2; /* 15 = 1111 */
System.out.println("a >> 2 = " + c );
c = a >>> 2; /* 15 = 0000 1111 */
System.out.println("a >>> 2 = " + c );
其他运算符:
三目运算符(?:)
三目运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。
//三目运算符?:
System.out.println((5>4)?"5>4":"5<4");
instanceof 运算符
该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。
//instanceof
String str1="Name";
boolean bool=str1 instanceof String;
System.out.println(bool);