运算符是一种特殊的符号,运算符是经过必定的运算规则操做一个或多个操做数,并生成结果的特定符号,运算符和操做数的有效组合称为表达式。html
Java中运算符主要分为如下几类:编程
赋值运算符用于给变量或者常量指定值,赋值运算符的符号是"="。测试
例spa
int a = 1; //定义时直接赋值 int b; int c; b = c = 2; //能够在一个语句内为多个变量赋值 int d = b + 3; //变量运算后再赋值,先执行右边,再执行左边
Java支持加减乘除和求余等基本数学运算。分别是如下几种:htm
运算符blog |
说 明ip |
|
一元ci |
-数学 |
一元减,即取负table |
++ |
自增,如:++a等价于a = a + 1 |
|
-- |
自减,如:--a等价于a = a – 1 |
|
二元 |
+ |
加法,返回两个操做数的和 |
- |
减法,返回两个操做数的差 |
|
* |
乘法,返回两个操做数的积 |
|
/ |
除法,返回两个操做数的商 |
|
% |
取模,返回两个操做数整除后的余数 |
加法运算符:+
double a = 1.1; double b = 1.2; double sum = a + b; System.out.println(sum); //输出2.3
减法运算符:-
double a = 2.2; double b = 1.1; double sub = a - b; System.out.println(sub); //输出1.1
乘法运算符:*
int a = 11; double b = 1.2; double multiply = a * b; System.out.println(multiply); //输出1.32
除法运算符:/
除法运算符有点特殊:若是运算的两个值都是int,获得的结果也是int类型,会把小数点直接去掉,也不会四舍五入
int a = 10; int b = 4; double c = a/b; System.out.println(c); //10初4原本结果是2.5,可是两个int类型数相除结果是int类型数,尽管将结果值赋给了double, //但输出结果变成了2.0,至关于运算完成时将小数点给去了,再转换为2.0 double a2 = 5.2; double b2 = 3.1; double c2 = a2/b2; System.out.println(c2); //两个double值运算,输出结果:1.6774193548387097 System.out.println(5 / 0.0); //除数为double型0.0,输出负无穷大 System.out.println(5 / 0); //除数为0,运行时会报错
求余运算符:%
int a = 5; int b = 3; double c = 3.2; System.out.println(a%b); //输出2 System.out.println(a%c); //1.7999999999999998 System.out.println(0%5); //输出0 System.out.println(5%0); //运行会出错
求负:-
int i = -1; int i2 = -i; System.out.println(i2); //输出1
自加:++
int i = 1; i++; //至关于将i的值加1; System.out.println(i); //输出2
自加符号既能够放在变量前面,也能够放在变量后面,放在前面先把操做数加1,再进行表达式的运算,放在后面则相反。
int i1 = 1; int i2 = 1; int i3 = i1++; //此时i3的值为1,i1的值为2;它是先将i1的值赋给了i3,再将i1加1; int i4 = ++i2; //此时i4的值为2,i2的值也为2;它是先将i2的值加1,再将值赋给i4;
自减:--
做用相似于自加
int i1 = 1; int i2 = 1; int i3 = i1++; //此时i3的值为1,i1的值为0;它是先将i1的值赋给了i3,再将i1减1; int i4 = ++i2; //此时i4的值为0,i2的值也为0;它是先将i2的值减1,再将值赋给i4;
关系运算符能够测试两个操做数之间的关系(但不会改变操做数的值),关系表达式的结果为boolean型true/false:
运算符 |
说 明 |
== |
等于,检查两个操做数是否相等 |
!= |
不等于,检查两个操做数是否不相等 |
> |
大于,检查左操做数是否大于右操做数 |
>= |
大于等于,检查左操做数是否大于或等于右操做数 |
< |
小于,检查左操做数是否小于右操做数 |
<= |
小于等于,检查左操做数是否小于或等于右操做数 |
System.out.println(4 == 4); //结果为true System.out.println(4 != 3); //结果为true System.out.println(true == false); //结果为false
逻辑运算符用于操做boolean类型的变量或常量
运算符 |
说 明 |
|
Java |
||
一元 |
! |
逻辑非(NOT) |
二元 |
& |
逻辑与(AND)(不短路) 左边为false,依然会运算右边
|
| |
逻辑或(OR) 如左操做数为true,依然运算右边操做数 |
|
&& |
短路与 如左操做数为false,则不运算右操做数 |
|
|| |
短路或 如左操做数为true,则不运算右操做数 |
|
^ |
异或 当两个操做数不一样时返回true,相同则返回false |
看例子
System.out.println(!true); //结果为false System.out.println(2 > 1 && 1 > 1); //结果为false System.out.println(2 > 1 || 1 > 1); //结果为true System.out.println(true ^ false); //结果为true,异或,至关于把第一个前面一个值true取反,再进行“或”运算
下面咱们来看一下 |于||的区别
int a = 1; int b = 1; if(a == 1 | b++ > 1){ System.out.println(b); //输出b的值为2,按位或虽然|符号左边结果为true,但依然会执行|符号右边的代码 }
将|改成||
int a = 1; int b = 1; if(a == 1 || b++ > 1){ System.out.println(b); //输出b的值为1,||符号左边结果为true,不会再执行||符号右边的代码 }
它的通常形式是:
表达式1 ? 表达式2 : 表达式3
根据表达式1的结果来判断执行表达式2仍是表达式3,若是表达式1的结果为true,则执行表达式2,不然执行表达式3;
条件运算符在某些状况下可以替代小型的if…else语句。
String s = 1 > 2 ? "1大于2" : "1不大于2"; System.out.println(s); //输出 1不大于2
位运算符既参加运算的两个数据,按二进制位进行运算。Java的位运算符有以下7个:按位与(&)、按位或(|)、按位非(~)、按位异或(^)、左移运算符(<<)、右移运算符(>>)、无符号右移运算符(>>>)。
具体介绍能够参考下面这篇文章:
http://www.cnblogs.com/yezhenhan/archive/2012/06/20/2555849.html
不少状况下,一个表达式由多个运算符组成,优先级决定运算符的计算顺序:
优先级 |
运 算 符 |
1 |
括号: ()和[] |
2 |
一元运算符:-、++(前置)、--(前置)、! |
3 |
算术运算符:*、/、%、+和- |
4 |
关系运算符:>、>=、<、<=、==和!= |
5 |
逻辑运算符:&、|、&&和|| |
6 |
条件运算符:? : |
7 |
赋值运算符:=、*=、/=、%=、+=和-= |
尽管运算符有优先级,一个表达式中会根据表达式运算符的优先级进行前后运算,可是在实际编程中若是一个表达式很长也不会推荐这样写,而是分为几步写,由于写在一块儿可读性太差。