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章 运算符(上)相关推荐

  1. java下标运算符_《Java从小白到大牛精简版》之第6章 运算符(下)

    <Java从小白到大牛>纸质版已经上架了!! 6.4 位运算符 位运算是以二进位(bit)为单位进行运算的,操作数和结果都是整型数据.位运算符有如下几个运算符:&.|.^.~.&g ...

  2. Java从小白到大牛第4篇项目实战视频课程2——Java版QQ-关东升-专题视频课程

    Java从小白到大牛第4篇项目实战视频课程2--Java版QQ-1778人已学习 课程介绍         本项目是Java SE技术实现的QQ2006聊天工具,所涉及到的知识点:Java面向对象.L ...

  3. 《Java从小白到大牛》之第14章 异常处理(上)

    <Java从小白到大牛>纸质版已经上架了!!! 很多事件并非总是按照人们自己设计意愿顺利发展的,而是有能够出现这样那样的异常情况.例如:你计划周末郊游,你的计划会安排满满的,你计划可能是这 ...

  4. 《Java从小白到大牛》之第9章 字符串

    <Java从小白到大牛>纸质版已经上架了!!! 由字符组成的一串字符序列,称为"字符串",在前面的章节中也多次用到了字符串,本章将重点介绍. Java中的字符串 Jav ...

  5. 《Java从小白到大牛》之第11章 对象

    <Java从小白到大牛>纸质版已经上架了!!! 类实例化可生成对象,实例方法就是对象方法,实例变量就是对象属性.一个对象的生命周期包括三个阶段:创建.使用和销毁.前面章节已经多少用到了对象 ...

  6. Java从小白到大牛第1篇 Java基础-关东升-专题视频课程

    Java从小白到大牛第1篇 Java基础-3042人已学习 课程介绍         本视频是智捷课堂推出的一套"Java语言学习立体教程"的视频第一部分,读者以及观看群是初级小白 ...

  7. Java从小白到大牛第2篇 【面向对象】-关东升-专题视频课程

    Java从小白到大牛第2篇 [面向对象]-2739人已学习 课程介绍         本视频是智捷课堂推出的一套"Java语言学习立体教程"的视频第二部分,读者以及观看群是初级小白 ...

  8. Java从小白到大牛第4篇项目实战1——PetStore宠物商店-关东升-专题视频课程

    Java从小白到大牛第4篇项目实战1--PetStore宠物商店-1764人已学习 课程介绍         PetStore是Sun(现在Oracle)公司为了演示自己的Java EE技术,而编写的 ...

  9. 《Java从小白到大牛》纸质版已经上市了!!

    内容简介 本书是一本Java语言学习立体教程,读者群是零基础小白,通过本书的学习能够成为Java大牛.主要内容包括:Java语法基础.Java编码规范.数据类型.运算符.控制语句.数组.字符串.面向对 ...

  10. 完整的Java从小白到大牛的自学路线

    点击关注"码农小胖哥" 右上角"设为星标"好文章送达比别人快 最近很多读者在问:Java 怎么学习啊?有没有什么学习路线? 我相信这些读者或多或少都有一些 Ja ...

最新文章

  1. pyqt qdialog 默认按钮_python – QDialog无法从主窗口打开(pyQt)
  2. 区块链的那些事,你知道和不知道的都在这里!
  3. 【DP】【期望】$P1850$换教室
  4. 使用bypy从ubuntu通过命令行上传文件到百度云
  5. mysql 主从同步不一致_为什么mysql会经常出现主从同步不一致的情况
  6. libusb libusbk
  7. mybatis实战教程(mybatis in action)之三:实现数据的增删改查
  8. liunx 常用操作
  9. android.mk 依赖关系,Android NDK学习(二):编译脚本语法Android.mk和Application.mk
  10. Java并发包源码学习系列:AQS共享式与独占式获取与释放资源的区别
  11. 微信小程序开发的基本流程__BaiMoci
  12. 软件工程——快速原型模型
  13. Python中Oracle的连接、增删改查
  14. 拉普拉斯算子的疑惑--拉普拉斯算子作用于矢量和定义Hessian矩阵时遇到的问题
  15. 002 Figuring in C/C++
  16. ubuntu18.04下复现 singleshotpose(yolo-6D) 源代码复现
  17. android自动登录简书,Android 自动登录——持久化Cookie
  18. 10亿级存储挑战!看一看、微信广告、微信支付、小程序都在用的存储系统究竟是怎么扛住的?!
  19. Ubuntu安装pidgin及QQ插件
  20. 模型中各变量对模型的解释程度

热门文章

  1. java中 CopyOnWriteArrayList 的使用
  2. 除了自定义cell以为,还可以通过属性来控制cell线条的长度
  3. 先装ubuntu后装windows时遇到的问题的解决办法
  4. HTML 转 PDF的两种实现方式
  5. 洛谷P3369-----普通平衡树
  6. 为ScrollView增加圆角的三种方式,及自定义属性【在Linearlayout中新增ScrollView支持滚动 后续】...
  7. Lucene.Net
  8. stochastic noise and deterministic noise
  9. YII 返回值为JSON格式
  10. tiny4412 串口驱动分析五 --- LDD3上TTY驱动程序源码