JAVA中的运算符
运算符的分类
➤算术运算符:+,-,*,/,%,++,--
➤赋值运算符:=
➤扩展后的赋值运算符:+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=,>>>=
➤位运算符:&,|,~,^,<<,>>,>>>
➤比较运算符:>,>=,<,<=,==
➤逻辑运算符:&&,&,||,|,!,^
➤三目运算符:?
算术运算符所要注意的点(主要在除运算和模运算)
浮点数下的除运算和模运算
public class text02 { public static void main(String[] args) { float a = 15.0F; float b = 0.0F; System.out.println(a/b); //输出结果为 Infinity (无限性的意思) System.out.println(a%b); //输出结果为 NaN (非数字的意思) } }
整型的除运算结果出现小数的现象
public class text02 { public static void main(String[] args) { int a=1; int b= 2; System.out.println(a/b); //结果为0; System.out.println(a/(double)b); //结果为0.5; // double c = a/b; //结果为0.0; //double c = a/(double)b; //结果为0.5; //分析: 第一个double 是将a/b的整型 int 部分赋值给 double c; //分析: 第二个double 是先将a/b转换成 double 浮点的运算,再将浮点的运算结果赋值给 double c; } }
整型间数据类型输出值的类型
public class text02 { public static void main(String[] args) { long a = 1222222222222L; int b = 123; short c = 10; byte d = 8; //ctrl + D 快捷复制上一行到下一行; System.out.println(a+b+c+d); //Long 有Long最后数值为Long型 结果为1222222222363 System.out.println(b+c+d); //Int 没有Long剩下的结果默认Int型 结果为141 System.out.println(c+d); //Int 下行代码实现将默认的Int代码转成其他类型 结果为18 System.out.println((double)(c+d)); //(c+d)整体转成double型 结果为18.0 } }
比较运算符
比较运算符用于判断两个常量或变量的大小,比较结果是是一个布尔值(true或false)。
比较运算符有:>(大于),>=(大于等于),<(小于),<=(小于等于),==(等于)。
代码示例如下:
System.out.println(7>3); //输出true System.out.println(7<=3); //输出false
自增自减运算符
注意 自增自减 与 语句 间的顺序
int a = 1; int b = a++; //先执行b=a=1; 再执行a=a+1; int c = ++a; //先执行a=a+1; 再执行c=a; System.out.println(a); //3 System.out.println(b); //1 System.out.println(c); //3
调用Math数学库
Math 为编译器自带的可用类&库
//调用数学库 Math.abs(-10); System.out.println(Math.pow(3, 2));
短路运算
//短路运算 int d=2; boolean e = (d>4)&&(d++>10); //d>4&& 判断为假,所以不运行(d++>10) System.out.println(e); //假 System.out.println(d); //d=2 //短路运算的实验 int x = 4; boolean y = (x++>10)&&(++x>100); System.out.println(y); //false System.out.println(x); //x=5 (x++>10)&&判断为假后只执行x++, 不再执行(++x>100)
位运算(基于计算机的底层为二进制)
原理为: 基于计算机的底层二进制的运算
具有 运算效率高的性质
位运算 2*8 = 16 2*2*2*2 << *2 >> /2 0000 0001 1 0000 0010 2 0000 0100 4 0000 1000 8 类似于幂函数 1--->2--->4--->8 乘二 对应二进制编码 1 的位移
A = 0011 1100 B = 0000 1101 --------------------------- A&B = 0000 1100 与 A|B = 0011 1101 或 A^B = 0011 0001 异或 ~b = 1111 0010 非
字符串的连接
public class text01 { public static void main(String[] args) { int a = 10; int b = 20; //字符串的连接 System.out.println(""+a+b); //1020 执行”“将 a 与 b 作字符连接 System.out.println(a+b+""); //30 先执行a+b的加法运算 } }
三目运算符
public class Demo02 { public static void main(String[] args) { //三目运算符 // x ? y: z //如果 x 为真, 则结果为y; 否则结果为z; int score = 80; String type = score>60 ? "及格": "不及格"; System.out.println(type); //输出结果为 及格 } }
运算符的优先级