零基础学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>专栏的第五篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号[编程攻略] 类与对象 在哲学体系中,可以分为主 ...
随机推荐
- 资源:jenkins下载路径
Jenkins版本下载路径 所有版本:http://mirrors.jenkins.io/war/
- Spring:Spring中bean的生命周期
Spring中,从BeanFactory或ApplicationContext取得的实例为Singleton(单例模式),就是预设为每一个Bean的别名只能维持一个实例,而不是每次都产生一个新的对象使 ...
- tcp三次握手四次挥手----转
序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生:给字节编上序号后,就给每一个报文段指派一个序号:序列号seq就是这个报文 ...
- DHCP部署与安全
1.DHCP作用 (Dynamic Host Configure Protocol)自动分配ip地址 2.DHCP相关概念 地址池/作用域:(IP.子网掩码.网关.DNS.租期),DHCP协议端口是U ...
- 6.Java方法
一.什么是方法 方法:要去做某件事情,而采取的一些解决办法( Java 中的方法是完成某些事情的) System.out.println(); //类(系统类) 对象(标准输出对象) 方法(print ...
- 「 题解」NOIP2021模拟赛(2021-07-19)
小兔的话 欢迎大家在评论区留言哦~ D - 矩阵 简单题意 一个 \(i * i\) 的 \(01\) 矩阵,若满足 每一行 和 每一列 都满足 恰好 有 \(2\) 个位置是 \(1\) 时,称为 ...
- Java基础00-字符串14
1. API 1.1 API概述 2. String String常用类的常用方法 String字符串变量的创建: 声明: String 变量名; String str; 声明并初始化: Str ...
- vlc+flv.js 摄像头 H5 直播
背景 业务需求:用最短的时间搞定摄像头直播到Web页面.因为没有过这方面经验,所以走了很多弯路,其实也不算弯路吧,大部分时间花在学习基础概念,寻找快速方案中.惯性思维想当然的以为找组件,配地址就能搞定 ...
- 【剑指offer】51.构建乘积数组
51.构建乘积数组 知识点:数组: 题目描述 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0] * A[1] *... * A[i ...
- 类似express的路由封装方式
1.原理 主要过程涉及三个元素的定义,如下: //用于承载一系列方法的对象 var funObj = {}; //用于根据条件执行funObj中的方法 var app = function(){}; ...