《Java从小白到大牛精简版》之第6章 运算符(上)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《Java从小白到大牛精简版》之第6章 运算符(上)相关的知识,希望对你有一定的参考价值。
Java语言中的运算符(也称操作符)在风格和功能上都与C 和C++极为相似。本章为大家介绍Java语言中一些主要的运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符和其他运算符。
6.1 算术运算符
Java中的算术运算符主要用来组织数值类型数据的算术运算,按照参加运算的操作数的不同可以分为一元运算符和二元运算符。
6.1.1 一元运算符
算术一元运算一共有3个,分别是-、++和–。具体说明参见表6-1。
表6-1一元算术运算
运 算 符 | 名 称 | 说 明 | 例 子 |
---|---|---|---|
- | 取反符号 | 取反运算 | b = -a |
++ | 自加一 | 先取值再加一,或先加一再取值 | a++或++a |
– | 自减一 | 先取值再减一,或先减一再取值 | a–或–a |
表6-1中,-a是对a取反运算,a++或a–是在表达式运算完后,再给a加一或减一。而++a或–a是先给a加一或减一,然后再进行表达式运算。
示例代码如下:
int a = 12; System.out.println(-a); ①int b = a++; ② System.out.println(b); b = ++a; ③ System.out.println(b);1234567
输出结果如下:
-12 12 141234
上述代码第①行是-a,是把a变量取反,结果输出是-12。第②行代码是先把a赋值给b变量再加一,即先赋值后++,因此输出结果是12。第③行代码是把a加一,然后把a赋值给b变量,即先++后赋值,因此输出结果是14。
6.1.2 二元运算符
二元运算符包括:+、-、*、/和%,这些运算符对数值类型数据都有效,具体说明参见表6-2。
表6-2二元算术运算
运 算 符 | 名 称 | 说 明 | 例 子 |
---|---|---|---|
+ | 加 | 求a加b的和,还可用于String类型,进行字符串连接操作 | a + b |
- | 减 | 求a减b的差 | a - b |
* | 乘 | 求a乘以b的积 | a * b |
/ | 除 | 求a除以b的商 | a / b |
% | 取余 | 求a除以b的余数 | a % b |
示例代码如下:
//声明一个字符类型变量char charNum = ‘A‘; // 声明一个整数类型变量int intResult = charNum + 1; ① System.out.println(intResult); intResult = intResult - 1; System.out.println(intResult); intResult = intResult * 2; System.out.println(intResult); intResult = intResult / 2; System.out.println(intResult); intResult = intResult + 8; intResult = intResult % 7; System.out.println(intResult); System.out.println("-------");// 声明一个浮点型变量double doubleResult = 10.0; System.out.println(doubleResult); doubleResult = doubleResult - 1; System.out.println(doubleResult); doubleResult = doubleResult * 2; System.out.println(doubleResult); doubleResult = doubleResult / 2; System.out.println(doubleResult); doubleResult = doubleResult + 8; doubleResult = doubleResult % 7; System.out.println(doubleResult);12345678910111213141516171819202122232425262728293031323334353637
输出结果如下:
66 65 130 65 3 ------- 10.0 9.0 18.0 9.0 3.0123456789101112
上述例子中分别对数值类型数据进行了二元运算,其中代码第①行将字符类型变量charNum与整数类型进行加法运算,参与运算的该字符(‘A‘)的Unicode编码65。其他代码比较简单不再赘述。
6.1.3 算术赋值运算符
算术赋值运算符只是一种简写,一般用于变量自身的变化,具体说明参见表6-3。
表6-3 算术赋值符
运 算 符 | 名 称 | 例 子 |
---|---|---|
+= | 加赋值 | a += b、a += b+3 |
-= | 减赋值 | a -= b |
*= | 乘赋值 | a *= b |
/= | 除赋值 | a /= b |
%= | 取余赋值 | a %= b |
示例代码如下:
int a = 1;int b = 2; a += b; // 相当于 a = a + bSystem.out.println(a); a += b + 3; // 相当于 a = a + b + 3System.out.println(a); a -= b; // 相当于 a = a - bSystem.out.println(a); a *= b; // 相当于 a=a*bSystem.out.println(a); a /= b; // 相当于 a=a/bSystem.out.println(a); a %= b; // 相当于 a=a%bSystem.out.println(a);123456789101112131415161718
输出结果如下:
3 8 6 12 6 01234567
上述例子分别对整型进行了+=、-=、*=、/=和%=运算,具体语句不再赘述。
6.2 关系运算符
关系运算是比较两个表达式大小关系的运算,它的结果是布尔类型数据,即true或false。关系运算符有6种:==、!=、>、<、>=和<=,具体说明参见表6-4。
表6-4 关系运算符
[图片上传失败…(image-24a409-1510533942975)]
**提示 ==和!=可以应用于基本数据类型和引用类型。当用于引用类型比较时,比较的是两个引用是否指向同一个对象,但当时实际开发过程多数情况下,只是比较对象的内容是否相当,不需要比较是否为同一个对象。
**
示例代码如下:
int value1 = 1;int value2 = 2;if (value1 == value2) { System.out.println("value1 == value2"); }if (value1 != value2) { System.out.println("value1 != value2"); }if (value1 > value2) { System.out.println("value1 > value2"); }if (value1 < value2) { System.out.println("value1 < value2"); }if (value1 <= value2) { System.out.println("value1 <= value2"); }1234567891011121314151617181920212223
运行程序输出结果如下:
value1 != value2 value1 < value2 value1 <= value21234
6.3 逻辑运算符
逻辑运算符是对布尔型变量进行运算,其结果也是布尔型,具体说明参见表6-5。
表6-5 逻辑运算符
[图片上传失败…(image-6280e7-1510533942975)]
提示 短路与(&&)和短路或(||)能够采用最优化的计算方式,从而提高效率。在实际编程时,应该优先考虑使用短路与和短路或。
示例代码如下:
int i = 0;int a = 10;int b = 9;if ((a > b) || (i == 1)) { ① System.out.println("或运算为 真"); } else { System.out.println("或运算为 假"); }if ((a < b) && (i == 1)) { ② System.out.println("与运算为 真"); } else { System.out.println("与运算为 假"); }if ((a > b) || (a++ == --b)) { ③ System.out.println("a = " + a); System.out.println("b = " + b); }1234567891011121314151617181920
上述代码运行输出结果如下:
或运算为 真 与运算为 假123
其中,第①行代码进行短路计算,由于(a > b)是true,后面的表达式(i == 1)不再计算,输出的结果为真。类似地,第②行代码也进行短路计算,由于(a < b)是false,后面的表达式(i == 1)不再计算,输出的结果为假。
代码第③行中在条件表达中掺杂了++和—运算,由于(a > b)是true,后面的表达式(a++ == –b)不再计算,所以最后是a = 10, b = 9。如果把短路或(||)改为逻辑或(|),那么输出的结果就是a = 11, b = 8了。
配套视频
http://edu.51cto.com/topic/1246.html
配套源代码
http://www.51work6.com/book/java1.php
与本书免费版对应的还有一个收费版本:
本文出自 “「智捷课堂」关东升的博客” 博客,请务必保留此出处http://tonyguan.blog.51cto.com/701759/1981143
以上是关于《Java从小白到大牛精简版》之第6章 运算符(上)的主要内容,如果未能解决你的问题,请参考以下文章