运算符的分类
java
算术运算符中 = - * / % 属于二元运算符,二元运算符指的是须要两个操做数才能完成的运算的运算术。
整数运算规则设计
一、若是两个操做数有一个为Long,则结果也为Long。
二、若是没有Long,结果则为int,即便操做数为short、byte,结果也为int。code
int a =1; long b = 2; //int c = a + b; //报错 由于有一个为Long,则结果也为Long byte a1 = 1; short a2 = 1; int d = a1 + a2; //正确 由于若是没有Long,结果则为int
浮点运算规则blog
一、若是两个操做数有一个为double,则结果为double。
二、只有两个操做数都为float,结果才为float。字符串
double a = 1.1; //float b = a + 2.2f; //报错,由于操做数有一个为double,则结果为double
取模运算:其操做数能够为浮点数,通常使用整数,结果是余数,余数符号和左边操做数相同。class
一元运算符是该类运算只须要一个操做数的时候,好比:++,--效率
int a = 2; int b = a++; //先是执行,b = 3,而后运算完之后再给a自增。 System.out.println("a=" + a + "\tb=" + b); //运行结果:a=3 b=2 a = 2; b = ++a; //先是执行a的自增,而后再赋值给b System.out.println("a=" + a + "\tb=" + b); //运行结果:a=3 b=3
int a = 2; int b = 3; a+=b; //这个至关于a = a + b; System.out.println("a=" + a); //结果为:a = 5 a = 2; a *= b + 3; //这个至关于 a = a * (b + 3) //是先运算后面的,再运算前面的 System.out.println("a=" + a); //结果为:a = 12;
关系运算符号是用来比较的,因此返回值只会是boolean,只有true/false
数据类型
int a = 2; int b = 3; boolean c = b > a; System.out.println("c="+c); //结果为:c=true
注意事项:引用
- == 和 != 是全部类型,引用和基本数据类型均可以用的。
- .>、<、>=、<=只是针对于数值类型,还有char可使用。
Java中逻辑运算符的操做数和结果都是boolean类型的。二进制
boolean a = true; boolean b = false; //逻辑与 & //只有同时为true的时候才返回true,只要有一个为false,返回false boolean c = a & b; System.out.println("c=" + c); //结果为:c=false; //逻辑或 | //只要有一个值为true,结果就为true c = a | b; System.out.println("c=" + c); //结果为:c=true //逻辑非 //取a的相返的值,若是a为true,c则为false,若是a为false,c则为true c = !a; System.out.println("c=" + c); //结果为:c=false; //逻辑异或 //两个值相同的时候为false,不一样的时候为true c = a ^ b; System.out.println("c=" + c); //结果为:true //短路或 //由于逻辑或只要有一个值为true,结果就为true,可是仍是为验证第二个值 //短路或不同,只要第一个值为true,第二个值就不验证了,直接返回true,这样作是为了提升效率。 c = a || b; System.out.println("c=" + c); //结果为:c=true //短路与 //由于逻辑与必须两个都为true,结果才为true,只要有一个为false结果就为false //短路与不同,只要第一个值为false,结果就为false,第二个值就不验证了,这样作是为了提升效率。 c = b && a; System.out.println("c=" + c); //结果为:false
位运算符是进行二进制运算的。
int a = 3; int b = 4; //取返操做 System.out.println("~a=" + ~a); //结果为:~a=-4 //按位与 System.out.println("a&b=" + (a&b)); //3的后四位二进制为 0011 //4的后四位二进制为 0100 //与 运算符是相同的为 1 不一样的为 0 因此最后的结果为 0000 //结果为:a&b = 0 //按位或 System.out.println("a|b=" + (a|b)); //3的后四位二进制为 0011 //4的后四位二进制为 0100 //或 运算符是只要有一个为1,就为1 因此结果为 0111 //结果为:a|b = 7 //按位异或 System.out.println("a^b=" + (a^b)); //3的后四位二进制为 0011 //4的后四位二进制为 0100 //异或 运算符是不一样的为1,相同的为0 因此最后结果为 0111 //结果为:a^b = 7 //左移运算符 << //这个运算符的右边是要移运的位数,左边才是要运算的值 System.out.println("a<<1=" + (a << 1)); //向左边移动一位数是把a乘以2 , 因此结果是 3 * 2 //结果为:6 //右移运算符 << //这个运算符的右边是要移运的位数,左边才是要运算的值 System.out.println("a>>1=" + (a >> 1)); //向右边移动一位数是把a除以2 , 因此结果是 3 / 2 //结果为应该为1.5的,可是由于是整数运算,算动取整,因此才为1 //结果为:a>>1=1 System.out.println("b>>1=" + (b >> 1)); //结果为:b>>1=2
& 、| 、^ 运算符:若是运算符,若是运算两边是boolean类型的值,那么这三个运算符就是逻辑运算符,若是是数值类型的,就是位运算符号。
在咱们前面的例子中,咱们使用了 + 号,可是有的地方的 + 号不参与运算,是由于,这个时候, + 号变成了一个链接符号了,它变成链接符号的条件是 左右两边只要有一个String 类型的字符串,就会变成链接符号。
int a = 2; //这里的3为字符串,由双引号引发来的都是字符串 System.out.println(a + "3"); //结果为:23
条件运算符号也叫三目条件运算符号。格式为:
x ? y : z
这个运算表达式,有三个参数,x只能为boolean,另外两个参数能够为任意类型。
boolean a = true; boolean b = false; System.out.println("第一个参数为true="+(a?"输出为true":"输出为false")); System.out.println("第一个参数为false="+(b?"输出为true":"输出为false")); //结果为: //第一个参数为true=输出为true //第一个参数为false=输出为false
这个三目运算符能够作一些小的判断,可是若是是状况复杂的最好仍是用if else来进行计算。
运算符的优先级不用特意的记,只要看看就能够了,由于工做的时候,复杂的运算符号,都会有小括号来进行组织的。不会全都按照运算符号优先级来进行设计。