Java运算符

分享到:

Java运算符用于执行程序代码运算,是表达式的组成单位,运算符针对一个以上操作数项目来进行运算。例如:2+3,其操作数是2和3,而运算符则是"+"。在Java语言中运算符大致可以分为5种类型:算术运算符、连接运算符、关系运算符、赋值运算符和逻辑运算符

Java运算符整理如下表:

优先级 运算符 名称 结合性
1 () 小括号运算符 从左至右
1 [] 方括号运算符 从左至右
2 !(叹号)、 +(加号)、 -(减号) 一元运算符 从右至左
2 ~ 位逻辑运算符 从右至左
2 ++ 、 -- 递增与递减运算符 从右至左
3 * 、 / 、 % 算术运算符 从左至右
4 + 、- 算术运算符 从左至右
5 << 、 >> 位左移,位右移运算符 从左至右
6 > 、 >= 、 < 、 <= 关系运算符 从左至右
7 == 、!= 关系运算符 从左至右
8 &(位运算符 and) 位逻辑运算符 从左至右
9 ^(位运算符 xor) 位逻辑运算符 从左至右
10 |(位运算符 or) 位逻辑运算符 从左至右
11 && 逻辑运算符 从左至右
12 || 逻辑运算符 从左至右
13 ?: 条件运算符 从右至左
14 = 赋值运算符 从右至左

Java常用运算符实例:

(1) "+" 加号运算符
在数值运算中表示相加, 举例说明:

int a = 10;
int b = 10;
int c = a + b;
//变量C的值等于20,相当于10+10

加号运算符应用在字符串变量时,就不再是算术中的求合运算了,而是连接符。可以把多个字符串拼成一个更长的字符串。代码如下:

String str1 = "abc";
String str2 = "def";
String str3 = str1+str2;

//通过加号运算符连接了str1与str2,运算步骤分解如下:
// str3 = "abc" + "def"
// str3 = "abcdef"

(2) "()"小括号运算符,如果在一个表达式中有多种运算符,小括号的级别最高也就是说小括号最先被处理,这一点和数学中的表达式原则是相同的。举例说明:

int a = 10;
int b = 10;
int c = 2 * ( a + b );

//首先处理小括号中的内容,然后和前面的数字相乘,运算步骤分解如下:
//c = 2 * (10+10)
//c = 2 * (20)
//c = 40

当一个表达式中出现多个小括号运算符时,按从左往右的循序逐一处理,举例说明:

int a = 10;
int b = 10;
int c = 10;
int d = 2 * ( a + b ) * ( c - 9 );

//首先处理左边的第一个括号(a+b),然后处理第二个括号(c-9),最后相乘,运算步骤分解如下:
//d = 2 * (10+10) * (10-9)
//d = 2 * 20 * 1
//d = 40 * 1
//d = 40

(3)++递增、--递减 运算符,无论是递增还是递减都有两种用法:
放在变量之前,例如 ++a 是 a 参与计算之前自增1
放在变量之后,例如 a++ 是 a 参与计算之后自增1
下面举例说明:

int a = 1;
int b =a++ + ++a + a++;
System.out.print(b); // 输出b的值

//结果 b = 7 ,按照规则分解步骤如下:
//第1个加数 a++ 等于1 ,++之后等于2 ,2用于下一个++运算
//第2个加数 ++a 等于3 , ++之后仍然是3,3用于下一个++运算 因为++放在前面表示在运算之前就要+1
//第3个加数 a++ 等于3 ,++之后等于4

// b = 1 + 3 + 3 
// b = 7

++运算对初学者可能有些混乱,我们可以再进一步分解:
a++ 相关于 a = a + 1 ,如果 a 的初始值为1的话 a = 1 + 1 , 这时的 a 还没发生变化,一但运行完毕 a就等于2了
++a 相当于提前执行了 a = a + 1这个表示式,在参与其它运算之前自身已经完成了加1运算
我个人是这么理解的,不知道这样形容是否更直观一点。

--递减运算和++递增运算是一个道理,只不过从+1变成了-1,就不再举例了。

(4) "/" 除法运算符,除法运算在Java里比较复杂,如果不事先了解其规则在编程时往往得不到想要的结果,先列举几点注意事项:
1 零在整数运算中不可以做除数,否则抛出运行时异常
2 零在浮点运算中可以做除数,返回值为无穷大,例如1.0f/0,将得到结果 :Infinity(无穷大的意思)
3 浮点型(Float或Double)的除法运算可以接受任何数值,并且结果总是返回一个浮点型的数值。这个数值可能并不是正确的结果。
下面举例说明:

整数之间的除法运算,先看代码

System.out.print("5/10=" + 5/10);
System.out.print("\n"); //换行符
System.out.print("15/10=" + 15/10);

/*
上述代码运行结果分别是:
5/10=0
15/10=1 */

java整数相除实际结果和我们想像的并不一样,例如5/10为什么等于0?而不是0.5。15/10为什么等于1?面不是1.5原因如下 :
Java已经规定好了整数相除得到的结果也一定是个整数,不管能不能整除只保留商的整数部分,忽略商的小数部分。例如5/10=0.5取整之后就是0, 15/10=1.5取整之后就是1

有浮点数参数的除法运算,举例如下 :

System.out.print("15f/10=" + 15f/10);
System.out.print("\n"); //换行符
System.out.print("15/10f=" + 15/10f);
System.out.print("\n"); //换行符
System.out.print("15f/10f=" + 15f/10f);

/*
上述代码运行结果分别是:
15f/10=1.5
15/10f=1.5
15f/10f=1.5 */

通过这个例子可以得到一个结论:表达式中不管是除数还是被除数只要有浮点数参与运算,得到的结果一定是浮点类型的

先介绍这几个常用的Java运算符,其余的以后慢慢补充。

昵    称:
验证码:

相关文档: