零基础学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>专栏的第五篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号[编程攻略] 类与对象 在哲学体系中,可以分为主 ...
随机推荐
- 学习django的日子
bilibii这个网站是个学习者网站,里面有很多学习视频
- Centos中安装Node.Js
NodeJs安装有好几种方式: 第一种: 最简单的是用yum命令,可惜我现在用的时候 发现 镜像中没有nodejs:所以这种方式放弃: 第二种:去官网下载源码,然后自己编译:编译过程中可能会出现问题, ...
- IDEA连接数据库出现报错
解决办法 jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useJDBCComplia ...
- mybatis框架的第二天
一.mybatis的基础crud的操作 先在接口中,写对应的方法名称,返回类型,访问符. 之后在映射配置文件中,写具体的实现 二.mybati中crud的细节 1.模糊查询 这是接口中 这是xml中 ...
- 二进制方式搭建Kubernetes集群
环境准备: 演练暂时用单节点一台master和一台node节点来进行部署搭建(kubernetes 1.19版本) 角色 IP 组件 master 10.129.246.114 kube-apiser ...
- git配置多个ssh key
随着工作的深入,我们通常都会有多个git账户.比如公司gitlab一个账户,github或gitee有一个账户.而平时我们又回通过 配置ssh公私钥认证的方式省去繁琐的登录远程仓库的操作,不同的git ...
- java基础---数组的查找算法(2)
一.查找的基本概念 查找分为有序查找和无序查找,这里均以数组为对象,有序查找指的是数组元素有序排列,无序查找指的是数组元素有序或无序排列 平均查找长度(Average Search Length,AS ...
- java集合(3)-Java8新增的Predicate操作集合
Java8起为Collection集合新增了一个removeIf(Predicate filter)方法,该方法将批量删除符合filter条件的所有元素.该方法需要一个Predicate(谓词)对象作 ...
- 字典get方法和setdesault方法,统计message中各元素的出现频次
message= 'There are moments in life when you miss someone so much that you just want to pick them fr ...
- MapReduce学习总结之简介
执行步骤:1)准备Map处理的输入数据 2)Mapper处理 3)Shuffle 4)Reduce处理 5)结果输出 三.mapreduce核心概念: 1)split:交由MapReduce作业来处理 ...