《Java从小白到大牛精简版》之第6章 运算符(上)
2017-11-27 09:09:07
《Java从小白到大牛》纸质版已经上架了!!!
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
《Java从小白大牛》纸质版:
京东地址
《Java从小白大牛》电子版:
百度阅读地址
《Java从小白到大牛精简版》之第6章 运算符(上)相关推荐
- java下标运算符_《Java从小白到大牛精简版》之第6章 运算符(下)
<Java从小白到大牛>纸质版已经上架了!! 6.4 位运算符 位运算是以二进位(bit)为单位进行运算的,操作数和结果都是整型数据.位运算符有如下几个运算符:&.|.^.~.&g ...
- Java从小白到大牛第4篇项目实战视频课程2——Java版QQ-关东升-专题视频课程
Java从小白到大牛第4篇项目实战视频课程2--Java版QQ-1778人已学习 课程介绍 本项目是Java SE技术实现的QQ2006聊天工具,所涉及到的知识点:Java面向对象.L ...
- 《Java从小白到大牛》之第14章 异常处理(上)
<Java从小白到大牛>纸质版已经上架了!!! 很多事件并非总是按照人们自己设计意愿顺利发展的,而是有能够出现这样那样的异常情况.例如:你计划周末郊游,你的计划会安排满满的,你计划可能是这 ...
- 《Java从小白到大牛》之第9章 字符串
<Java从小白到大牛>纸质版已经上架了!!! 由字符组成的一串字符序列,称为"字符串",在前面的章节中也多次用到了字符串,本章将重点介绍. Java中的字符串 Jav ...
- 《Java从小白到大牛》之第11章 对象
<Java从小白到大牛>纸质版已经上架了!!! 类实例化可生成对象,实例方法就是对象方法,实例变量就是对象属性.一个对象的生命周期包括三个阶段:创建.使用和销毁.前面章节已经多少用到了对象 ...
- Java从小白到大牛第1篇 Java基础-关东升-专题视频课程
Java从小白到大牛第1篇 Java基础-3042人已学习 课程介绍 本视频是智捷课堂推出的一套"Java语言学习立体教程"的视频第一部分,读者以及观看群是初级小白 ...
- Java从小白到大牛第2篇 【面向对象】-关东升-专题视频课程
Java从小白到大牛第2篇 [面向对象]-2739人已学习 课程介绍 本视频是智捷课堂推出的一套"Java语言学习立体教程"的视频第二部分,读者以及观看群是初级小白 ...
- Java从小白到大牛第4篇项目实战1——PetStore宠物商店-关东升-专题视频课程
Java从小白到大牛第4篇项目实战1--PetStore宠物商店-1764人已学习 课程介绍 PetStore是Sun(现在Oracle)公司为了演示自己的Java EE技术,而编写的 ...
- 《Java从小白到大牛》纸质版已经上市了!!
内容简介 本书是一本Java语言学习立体教程,读者群是零基础小白,通过本书的学习能够成为Java大牛.主要内容包括:Java语法基础.Java编码规范.数据类型.运算符.控制语句.数组.字符串.面向对 ...
- 完整的Java从小白到大牛的自学路线
点击关注"码农小胖哥" 右上角"设为星标"好文章送达比别人快 最近很多读者在问:Java 怎么学习啊?有没有什么学习路线? 我相信这些读者或多或少都有一些 Ja ...
最新文章
- pyqt qdialog 默认按钮_python – QDialog无法从主窗口打开(pyQt)
- 区块链的那些事,你知道和不知道的都在这里!
- 【DP】【期望】$P1850$换教室
- 使用bypy从ubuntu通过命令行上传文件到百度云
- mysql 主从同步不一致_为什么mysql会经常出现主从同步不一致的情况
- libusb libusbk
- mybatis实战教程(mybatis in action)之三:实现数据的增删改查
- liunx 常用操作
- android.mk 依赖关系,Android NDK学习(二):编译脚本语法Android.mk和Application.mk
- Java并发包源码学习系列:AQS共享式与独占式获取与释放资源的区别
- 微信小程序开发的基本流程__BaiMoci
- 软件工程——快速原型模型
- Python中Oracle的连接、增删改查
- 拉普拉斯算子的疑惑--拉普拉斯算子作用于矢量和定义Hessian矩阵时遇到的问题
- 002 Figuring in C/C++
- ubuntu18.04下复现 singleshotpose(yolo-6D) 源代码复现
- android自动登录简书,Android 自动登录——持久化Cookie
- 10亿级存储挑战!看一看、微信广告、微信支付、小程序都在用的存储系统究竟是怎么扛住的?!
- Ubuntu安装pidgin及QQ插件
- 模型中各变量对模型的解释程度
热门文章
- java中 CopyOnWriteArrayList 的使用
- 除了自定义cell以为,还可以通过属性来控制cell线条的长度
- 先装ubuntu后装windows时遇到的问题的解决办法
- HTML 转 PDF的两种实现方式
- 洛谷P3369-----普通平衡树
- 为ScrollView增加圆角的三种方式,及自定义属性【在Linearlayout中新增ScrollView支持滚动 后续】...
- Lucene.Net
- stochastic noise and deterministic noise
- YII 返回值为JSON格式
- tiny4412 串口驱动分析五 --- LDD3上TTY驱动程序源码