零基础学Java之Java学习笔记(四):运算符
算术运算符:
算术运算符是对数值类型的变量进行运算的,在 Java 程序中使用的非常多。
| 运算符 | 说明 | 例子 | 结果 |
| + | 加法-相加运算符两侧的值 | 9+9 | 18 |
| - | 减法-左操作数减去右操作数 | 10-8 | 2 |
| * | 乘法-相乘操作符两侧的值 | 7*8 | 56 |
| / | 除法-左操作数除以右操作数 | 9/9 | 1 |
| % | 取余-左操作数除以右操作数的余数 | 11%9 | 2 |
| ++ |
自增(前):先运算后取值 自增(后):先取值后运算 |
a=2;b=++a; a=2;b=a++; |
a=3;b=3 a=3;b=2 |
| -- |
自减(前):先运算后取值 自减(后):先取值后运算 |
a=2;b=--a; a=2;b=a--; |
a=1;b=1 a=1;b=2 |
算术运算符注意事项:
(1)对于除号"/",它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。
int x = 10/3;//结果是3

(2)当对一个数取模时,可以等价a%b=a-a/b*b,这样我们看到取模的一个本质运算。
(3)当自增当做一个独立语言使用时,不管是++i;还是i++;都是一样的。
关系运算符(比较运算符):
| 运算符 | 说明 | 例子 | 结果 |
| == | 检查如果两个操作数的值是否相等,如果相等则条件为真。 | 8==7 | false |
| != | 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 | 8!=7 | true |
| < | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 | 8<7 | false |
| > | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 | 8>7 | true |
| <= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 | 8<=7 | false |
| >= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 | 8>=7 | true |
关系运算符注意事项:
(1)关系运算符组成的表达式,我们称为关系表达式。eg:a > b
(2)比较运算符"=="不能误写成"="。==是关系运算符,判断是不是相等,一个=是赋值
(3)关系运算符的结果都是 boolean 型,也就是要么是 true,要么是 false。
(4)关系表达式 经常用在 if 结构的条件中或循环结构的条件中
逻辑运算符:
用于连接多个条件(多个关系表达式),最终的结果也是一个 boolean 值。
| a | b | a&b | a&&b | a|b | a||b | !a | a^b |
| true | true | true | true | true | true | false | false |
| true | fasle | false | false | true | true | false | true |
| false | true | false | false | true | true | true | true |
| false | false | false | false | false | false | true |
false |
逻辑运算规则:
(1) a&b : & 叫逻辑与:规则:当 a 和 b 同时为 true ,则结果为 true, 否则为 false
(2) a&&b : && 叫短路与:规则:当 a 和 b 同时为 true ,则结果为 true,否则为 false
(3) a|b : | 叫逻辑或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
(4) a||b : || 叫短路或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
(5) !a : 叫取反,或者非运算。当 a 为 true, 则结果为 false, 当 a 为 false 是,结果为 true
(6) a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false
&& 和 &基本规则:
短路与&& : 条件 1&&条件 2
两个条件都为 true,结果为 true,否则 false
逻辑与&: 条件 1&条件 2
两个条件都为 true,结果为 true,否则 false
对于&&短路与而言,如果第一个条件为 false ,后面的条件不再判断
对于&逻辑与而言,如果第一个条件为 false ,后面的条件仍然会判断
//&&短路与 使用
int age = 50;
if(age > 20 && age < 90) {
System.out.println("&&短路与的使用");
} //&逻辑与使用
if(age > 20 & age < 90) {
System.out.println("&逻辑与的使用");
}

&& 和 &使用区别:
(1) &&短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false,效率高
(2) & 逻辑与:不管第一个条件是否为 false,第二个条件都要判断,效率低
(3) 开发中, 我们使用的基本是使用短路与&&, 效率高
|| 和 | 基本规则:
短路或||: 条件 1||条件 2
两个条件中只要有一个成立,结果为 true,否则为 false
|逻辑或: 条件 1|条件 2
只要有一个条件成立,结果为 true,否则为 false
||短路或:如果第一个条件为 true,则第二个条件不会判断,最终结果为 true,效率高
| 逻辑或:不管第一个条件是否为 true,第二个条件都要判断,效率低
// 短路或|| 的使用
int age = 50;
if(age > 20 || age < 30) {
System.out.println("短路或|| 的使用");
} // 逻辑或| 的使用
if(age > 20 | age < 30) {
System.out.println("逻辑或| 的使用");
}

|| 和 | 使用区别:
(1) ||短路或:如果第一个条件为 true,则第二个条件不会判断,最终结果为 true,效率高
(2) | 逻辑或:不管第一个条件是否为 true,第二个条件都要判断,效率低
(3) 开发中,我们基本使用 ||
! 取反 基本规则:
! 非(取反): !条件
如果条件本身成立,结果为 false,否则为 true
a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false
//! 操作是取反 T->F , F -> T
System.out.println(60 > 20); //T
System.out.println(!(60 > 20)); //F

^ 基本规则:
a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false
//a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false
boolean b = (10 > 1) ^ ( 3 > 5);
System.out.println("b=" + b);//T

赋值运算符:
赋值运算符就是将某个运算后的值,赋给指定的变量。
赋值运算符的分类:
基本赋值运算符: eg: int a = 10;
复合赋值运算符:+= ,-= ,*= , /= ,%= 等
eg:a += b; [等价 a = a + b; ] a -= b; [等价 a = a - b; ]
赋值运算符的特点:
(1) 运算顺序从右往左 int num = a + b + c;
(2) 赋值运算符的左边 只能是变量,右边 可以是变量、表达式、常量值
int num = 20;
int num2= 78 * 34 - 10;
int num3 = a;

(3) 复合赋值运算符等价于下面的效果。比如:a+=3;等价于 a=a+3; 其他类推
(4) 复合赋值运算符会进行类型转换。
byte b = 3;
b += 2; // 等价 b = (byte)(b + 2);
b++;// b = (byte)(b+1);

三元运算符:
语法:
条件表达式 ? 表达式 1: 表达式 2;
使用规则:
1. 如果条件表达式为 true,运算后的结果是表达式 1;
2. 如果条件表达式为 false,运算后的结果是表达式 2;
3. 表达式 1 和表达式 2 要为可以赋给接收变量的类型(或可以自动转换)
4. 三元运算符可以转成 if--else 语句
运算符优先级:
| 类别 | 操作符 | 关联性 |
| 符号 | () , ; . {} | 从左到右 |
| 乘、除、余 | * / % | 从左到右 |
| 加、减 | + - | 从左到右 |
| 移位 | >> >>> << | 从左到右 |
| 关系 | > >= < <= | 从左到右 |
| 相等 | == != | 从左到右 |
| 按位与 | & | 从左到右 |
| 按位异或 | ^ | 从左到右 |
| 按位或 | | | 从左到右 |
| 逻辑与 | && | 从左到右 |
| 赋值 | = + = - = * = / =%= >> = << =&= ^ = | = | 从右到左 |
| 条件 | ?: | 从右到右 |
运算符优先级规则:
(1)运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。
(2)只有单目运算符、赋值运算符是从右向左运算的。
(3)不要背,使用多了,就熟悉了
总结:①(),{}等②单目运算 ++--③算术运算符④位移运算符⑤比较运算符⑥逻辑运算符⑦三元运算符⑧赋值运算符
零基础学Java之Java学习笔记(四):运算符的更多相关文章
- java之jvm学习笔记四(安全管理器)
java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...
- 《深入理解java虚拟机》学习笔记四/垃圾收集器GC学习/一
Grabage Collection GC GC要完毕的三件事情: 哪些内存须要回收? 什么时候回收? 怎样回收? 内存运行时区域的各个部分中: 程序计数器.虚拟机栈.本地方法栈这3个区域随 ...
- Java学习笔记四——运算符
算术运算符 加减乘除(+.-.*./)就不说了. 求余运算符% 描述:第一个操作数除以第二个操作数,得到一个整除的结果后剩下的值就是余数 注意:求余预算的结果不一定总是整数,当操作数是浮点数时,结果可 ...
- (C/C++学习笔记) 四. 运算符
四. 运算符 运算符优先级和结合性 Operator precedence and associativity (or fixity) 注意: ① 成员运算符MemberOperators可以称为点运 ...
- 《零基础学JavaScript(全彩版)》学习笔记
<零基础学JavaScript(全彩版)>学习笔记 二〇一九年二月九日星期六0时9分 前期: 刚刚学完<零基础学HTML5+CSS3(全彩版)>,准备开始学习JavaScrip ...
- 零基础学Java,PayPal技术专家手把手带你入门
在最权威的 TIOBE 编程语言排名榜单上,Java 常年稳居第一,可以说是世界上应用最为广泛的一门语言. 同时,在微服务.云计算.大数据.Android App 开发等领域,Java 也是当之无愧的 ...
- 零基础学Java第四节(字符串相关类)
本篇文章是<零基础学Java>专栏的第四篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! String 本文章首发于公众号[编程攻略] 在Java中,我们经 ...
- 零基础学Java第三节(基本输入输出)
本篇文章是<零基础学Java>专栏的第三篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号[编程攻略] Java程序的命令行参数 我们可以 ...
- 零基础学Java第一节(语法格式、数据类型)
本篇文章是<零基础学Java>专栏的第一篇文章,从本篇文章开始,将会连更本专栏,带领大家将Java基础知识彻底学懂,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! ...
- 零基础学Java第五节(面向对象一)
本篇文章是<零基础学Java>专栏的第五篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号[编程攻略] 类与对象 在哲学体系中,可以分为主 ...
随机推荐
- Docker:docker搭建redis6.0.8集群
下载redis镜像 #拉取镜像 docker pull redis:6.0.8 查看版本 #查看版本 docker inspect redis 生成redis.conf配置文件 #在 /home/re ...
- mDNS知识
1.域名系统(Domain Name System,缩写:DNS)是互联网的一项服务.它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网.DNS使用TCP和UDP端口53. ...
- windows下命令
shutdown -s -t 0 关机 shutdown -r -t 0 重启 mstsc 远程桌面 notepad 记事本 regedit 注册表 calc 计算器 start applicatio ...
- vue(16)vue-cli创建项目以及项目结构解析
vue-cli创建项目 上一篇我们安装了vue-cli,接下来我们就使用该脚手架进行创建项目 1.进入一个目录,创建项目 创建项目命令如下: vue create <Project Name&g ...
- Java开源协同办公项目:数据中心,自定义查询语句使用教程
O2OA提供的数据管理中心,可以让用户通过配置的形式完成对数据的汇总,统计和数据分组展现,查询和搜索数据形成列表数据展现.也支持用户配置独立的数据表来适应特殊的业务的数据存储需求.本文主要介绍如何在O ...
- [刘阳Java]_第一个Java程序_第7讲
1. 其实第一个Java程序是很简单,但是当自己编写第一个Java程序时候需要注意如下几个内容: 理解Java程序的运行环境 校验你的Java环境变量是否能够运行你所写的第一个Java程序 理解Jav ...
- Day10 类与对象-面向对象编程(1)
面向对象编程(OOP) 面向对象编程的本质就是:以类的方式组织代码,以对象的组织(封装)数据. 抽象 三大特征: 封装 继承 多态 从认识论角度考虑是先有对象后有类.对象,是具体的事物.类,是抽象的, ...
- ArrayList 深入浅出
ArrayList 特点:按添加顺序排列.可重复.非线程安全: 底层实现:数组 扩容原理:初始化集合时,默认容量为 0,第一次添加元素时扩容为 10,容量不够时扩容为原来容量的 1.5 倍. 这里扩容 ...
- js实现0ms延时定时器的几种方式
这两天看到一篇介绍<如何实现准时的 setTimeout?>的文章,文章起源于一道面试题:有什么办法让setTimeout准时呀?具体文章内容可查看附录[1],看完之后,引起了我对setT ...
- npm 安装、卸载模块
npm安装模块 [npm install xxx]利用 npm 安装xxx模块到当前命令行所在目录:[npm install -g xxx]利用npm安装全局模块xxx:本地安装时将模块写入packa ...