算术运算符:

算术运算符是对数值类型的变量进行运算的,在 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学习笔记(四):运算符的更多相关文章

  1. java之jvm学习笔记四(安全管理器)

    java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...

  2. 《深入理解java虚拟机》学习笔记四/垃圾收集器GC学习/一

    Grabage Collection      GC GC要完毕的三件事情: 哪些内存须要回收? 什么时候回收? 怎样回收? 内存运行时区域的各个部分中: 程序计数器.虚拟机栈.本地方法栈这3个区域随 ...

  3. Java学习笔记四——运算符

    算术运算符 加减乘除(+.-.*./)就不说了. 求余运算符% 描述:第一个操作数除以第二个操作数,得到一个整除的结果后剩下的值就是余数 注意:求余预算的结果不一定总是整数,当操作数是浮点数时,结果可 ...

  4. (C/C++学习笔记) 四. 运算符

    四. 运算符 运算符优先级和结合性 Operator precedence and associativity (or fixity) 注意: ① 成员运算符MemberOperators可以称为点运 ...

  5. 《零基础学JavaScript(全彩版)》学习笔记

    <零基础学JavaScript(全彩版)>学习笔记 二〇一九年二月九日星期六0时9分 前期: 刚刚学完<零基础学HTML5+CSS3(全彩版)>,准备开始学习JavaScrip ...

  6. 零基础学Java,PayPal技术专家手把手带你入门

    在最权威的 TIOBE 编程语言排名榜单上,Java 常年稳居第一,可以说是世界上应用最为广泛的一门语言. 同时,在微服务.云计算.大数据.Android App 开发等领域,Java 也是当之无愧的 ...

  7. 零基础学Java第四节(字符串相关类)

    本篇文章是<零基础学Java>专栏的第四篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! String 本文章首发于公众号[编程攻略] 在Java中,我们经 ...

  8. 零基础学Java第三节(基本输入输出)

    本篇文章是<零基础学Java>专栏的第三篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号[编程攻略] Java程序的命令行参数 我们可以 ...

  9. 零基础学Java第一节(语法格式、数据类型)

    本篇文章是<零基础学Java>专栏的第一篇文章,从本篇文章开始,将会连更本专栏,带领大家将Java基础知识彻底学懂,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! ...

  10. 零基础学Java第五节(面向对象一)

    本篇文章是<零基础学Java>专栏的第五篇文章,文章采用通俗易懂的文字.图示及代码实战,从零基础开始带大家走上高薪之路! 本文章首发于公众号[编程攻略] 类与对象 在哲学体系中,可以分为主 ...

随机推荐

  1. Linux:Ka li 2020.4 安装教程

    下载地址 Ka li官网 :https://www.kali.org install 版本是安装版,安装后使用: Live    版本可以直接启动运行: netinstaller  版本是网络安装版, ...

  2. java:编写jar包加密工具,防止反编译

    懒人方案 网盘: 链接:https://pan.baidu.com/s/1x4OB1IF2HZGgtLhd1Kr_AQ提取码:glx7 网盘内是已生成可用工具,下载可以直接使用,使用前看一下READ. ...

  3. Arduino IDE 2.0 beta安装

    1.在官网(Software | Arduino)下载安装包,此次提供操作系统有:Windows.Linux和macOC系统 2.点击安装包进行安装 3.点击我同意 4.点击下一步 5.选择安装路径( ...

  4. 7.Java数组

    一.数组概念(最简单的数据结构) 数组是相同类型数据的有序集合. 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成. 其中每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问 ...

  5. 高校表白App-团队冲刺第六天

    今天要做什么 在引导页的基础上添加小红点,并且在滑动时进行增强用户体验的修饰 做了什么 在布局中成功添加小红点,并在activity中得到实现;滑动在3/4时发生渐变,增强用户体验;滑动可回退;在最后 ...

  6. IO流 connect reset

    目录 出现场景 解决思路 出现场景 通过外部OBS下载10文件,然后通过工具将这10个文件打包成一个文件A.zip上传,最后将这个A.zip下载并解压,解压A.zip后发现文件数量不是10个. 解决思 ...

  7. HelloWord!

    HelloWorld 1.新建一个文件夹,存放代码 2.新建一个java文件后缀为.java Hello.java (注意后缀 如系统没打开显示后缀需要打开) 3.编写HelloWorld代码 (建议 ...

  8. 如何使用odoo的compute方法,自动计算odoo字段

    前言 在odoo的ORM创建数据字段的过程中,我们会经常需要定义一些字段用来计算某一些字段只和或其他计算结果. 今天介绍一个很好用的方法compute计算属性,这个方法其实是属于写在odoo fiel ...

  9. 基于小熊派Hi3861鸿蒙开发的IoT物联网学习【五】

    BearPi-HM_Nano开发板鸿蒙OS内核编程开发--消息队列 什么是消息队列?        答:消息队列中间件是分布式系统中重要的组件,主要解决应用耦合.异步消息.流量削锋等问题.实现高性能. ...

  10. Qt 入门 ---- 布局管理

    这是运行后的程序界面: 这是点击右上角"最大化"之后的程序界面: 接下来讲一下如何进行自动布局解决窗口拉伸问题. ① 原理: 在项目"设计"模式的左侧有如下两个 ...