章节目录

  • 1. 算术运算符
    • 1.1. 除号(/)
    • 1.2 取模(%)
    • 1.3 自增运算符(++)、自减运算符(- -)
    • 1.4 前缀++、- -与后缀++、- -的区别:
  • 2. 逻辑运算符
    • 2.1 逻辑与运算符&
    • 2.2 逻辑或运算符|
    • 2.3 逻辑非运算符!
    • 2.4短路与运算符&&
    • 2.5短路或运算符||
  • 3. 关系运算符
  • 4. 位运算符
    • 4.1按位与运算(&)
    • 4.2按位或运算(|)
    • 4.3按位异或运算(^)
    • 4.4按位取反运算(~)
    • 4.5左移位运算符(<<)
    • 4.6右移位运算符(>>与>>>)
  • 5. 赋值运算符 =
  • 6. 条件运算符

1. 算术运算符

加号(+)、 减号(-)、 乘号(*)、 除号(/) 、取模(%) 、自增运算符(++) 、自减运算符(- -)

1.1. 除号(/)

取商运算

int a = 10;
int b = 3;
System.out.println(a / b); // 3

1.2 取模(%)

取余运算

int a = 10;
int b = 3;
System.out.println(a % b);// 1

1.3 自增运算符(++)、自减运算符(- -)

a++自增就相当于a=a+1;a- -相当于a=a-1;

int a=10;
int b=3;
a++;
b--;
System.out.println(a);//11
System.out.println(b);//2

1.4 前缀++、- -与后缀++、- -的区别:

++i(前缀++)在使用 i 之前,使 i 的值加 1,因此执行完++i 后,整个表达式和 i 的值均为 i+1;

i++(后缀++)在使用 i 之后,使 i 的值加 1,因此执行完 i++后,整个表达式的值为 i,而 i 的值变为 i+1

–i 在使用 i 之前,使 i 的减 1,因此执行完–i 后,整个表达式和 i 的值均为 i-1;

i–在使用 i 之后,使 i 的减 1,因此执行完 i–后,整个表达式的值为 i,而 i 的值变为 i-1

练习:
1)

int i =1;
System.out.println(i++);

2)

int i = 1;
for (; i < 5; i++) {System.out.println(i);
}
System.out.println(i);

2. 逻辑运算符

2.1 逻辑与运算符&

两者都为true才为true:
0&0=0, 0&1=0, 1&0=0, 1&1=1

2.2 逻辑或运算符|

两者都为false才为false:
1|1=1, 1|0=1, 0|1=1, 0|0=0

2.3 逻辑非运算符!

对值进行取反:
!1=0,!0=1

2.4短路与运算符&&

如果左边表达式的值为 false,则不必对右边的表达式求值,整个表达式的结果为 false。

2.5短路或运算符||

如果运算符左边的表达式的值为 true,则整个表达式的结果为 true,不必对运算符右边的表达式再进行运算。


练习:

int a = 1;
int b = 2;
int c = 3;
//System.out.println(b++ < a++ && c++ < a++);
//System.out.println(a + "\t" + b + "\t" + c);
//System.out.println(b++ < a++ & c++ < a++);
//System.out.println(a + "\t" + b + "\t" + c);

3. 关系运算符

4. 位运算符

4.1按位与运算(&)

参与运算的两个值,如果两个相应位都为 1,则该位的结果为 1,否则为 0。
即:0&0=0,0&1=0,1&0=0,1&1=1

4.2按位或运算(|)

参与运算的两个值,如果两个相应位都是 0,则该位结果为 0,否则为 1。
即:0|0=0,0|1=1,1|0=1,1|1=1

4.3按位异或运算(^)

参与运算的两个值,如果两个相应位的某一个是 1,另一个是 0,那么按位异或(^)在该位的结果为 1。也就是说如果两个相应位相同,输出位为 0,否则为 1。
即:0 ^ 0=0,0 ^ 1=1,1 ^ 0=1,1^1=0

4.4按位取反运算(~)

按位取反运算(~)属于一元运算符,它只对一个自变量进行操作(其他所有运算符都是二元运算符)。按位取反生成与输入位的相反的值——若输入 0,则输出 1;输入 1,则输出 0。
即:~ 0=1,~1=0

4.5左移位运算符(<<)

运算符<<执行一个左移位。作左移位运算时,高位溢出,低位补零,右边的空位补 0。在不产生溢出的情况下,数据左移 1 位相当于乘以 2。其实就是计算机组成原理中的逻辑左移

例如:
int a=64,b; b=a<<1; //b=128

4.6右移位运算符(>>与>>>)

运算符>>执行一个右移位(带符号),操作数的构成二进制位右移若干位,低位溢出舍弃,高位补充原来高位的值。(右移一位相当于除 2 取商)

例如:
int a=16,b; b=a>>2; //b=4

5. 赋值运算符 =

//一次可以给多个变量赋值
int i = 1000;
int a, b, c, d; a = b = c = d = i;
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);

6. 条件运算符

条件表达式?值 1(表达式 1):值 2(表达式 2);
当条件表达式位 true 是取值值 1,false 取值值 2;

//求两个数的较大值int a=10,b=5;System.out.println("max="+(a>b?a:b));//max=10

PS:如何避免多个运算符带来的问题

• 不要在一行中编写太复杂的表达式,也就是不要在一行中进行太多的运算

• 在一行中进行太多的运算并不能为你带来什么好处,相反只能带来坏处,它并不比改成几条语句的运行速度快,它除可读行差外,还极容易出错。

• 对于优先级顺序,读者不用刻意去记,有个印象就行如果你实在弄不清这些运算先后关系的话,就用括号或是分成多条语句来完成你想要的功能,因为括号的优先级是最高的。

• 这也是软件编码规范和企业级开发的一个要求。

诸余罪中,杀业最重;诸功德中,放生第一。--《大智度论》

Java基础教程【第三章:Java运算符】相关推荐

  1. Java官方教程(三-1)运算符 operator(2020.12.18)

    前言 本文是橙子出于兴趣爱好对Java官方教程的尝试翻译,几乎每日更新,感兴趣的朋友可以关注一下橙子:翻译过程中尽可能多的对一些关键词保留了英文原文,如果你想看最纯正的英文原版教材却又看不懂,可以试着 ...

  2. java基础教程第三版耿祥义,后台开发JAVA岗

    Java虚拟机内存模型 Java虚拟机内存模型中定义的访问操作与物理计算机处理的基本一致! Java中通过多线程机制使得多个任务同时执行处理,所有的线程共享JVM内存区域main memory,而每个 ...

  3. Java基础教程,第三讲,运算符 变量定义 数据类型转换

    2019独角兽企业重金招聘Python工程师标准>>> 学完此次课程,我能做什么? 学完此次课程我们可以学会Java的运算符,以及数据类型的自动转换和强制转换. 学习此次课程,需要多 ...

  4. Java基础教程【第一章:Java概述】

    章节目录 1. JAVA 的发展史 2. JAVA 面向对象 3. JAVA 语言介绍.语言特性 4. JVM 虚拟机 1."一次编译,到处运行"的原理 2.JDK( Java D ...

  5. Java基础教程带你走进java的世界

    Java教程 Java简介 什么是Java? Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称. Java分为三个体系: Java ...

  6. Java并发编程 - 第三章 Java内存模型

    前言: Java 线程之间的通信对程序员完全透明,内存可见性问题很容易困扰 Java 程序员,本章将揭开 Java 内存模型神秘的面纱. 一.Java 内存模型的基础 1.1 并发编程模型的两个关键问 ...

  7. Python基础教程 | 第三章 字符串

    1. 基本字符串操作 标准序列操作:索引.分片.乘法. 成员资格.长度.最大最小值 >>> website = 'www.baidu.com' >>> websit ...

  8. Java基础教程【第九章:异常处理】

    章节目录 1. java 异常处理 1.1 什么是异常 1.2 java 的异常处理 1.3 异常示例 1.4 异常处理的基础 1.5 异常处理机制 1.6 常见异常及用途 2. throw 语句 3 ...

  9. Java基础教程【第二章:Java数据类型和变量】

    章节目录 1.java 的内存划分 1.1 内存空间 1.2 栈空间 1.3 堆空间 2. 变量 2.1 变量和字面量 2.2 变量的命名 2.3 注意点 2.4变量的定义 2.5.变量的初始化 2. ...

  10. Java程序设计教程——第三章习题

    1.简述面向对象的编程的特性和优势. 与现实世界相对应,使现实世界的人可以通过观察现实世界来编程,相比以结构化编程方法,面象对象方法更符合人的逻辑方法:同时在开发大的项目时,面象对象编程方法更符合工程 ...

最新文章

  1. 皮一皮:内涵了...
  2. [shell]shell中if语句的使用
  3. learnByWork
  4. 【错误记录】eclipse,android,logcat日志无法打印,真机调试
  5. python 超时重试方法
  6. python练习题-day25
  7. 背包——变向背包(hdu2546,1114,1203,2189)
  8. ajax兼容写法,Ajax的兼容性问题
  9. android实例教程_Android内部存储示例教程
  10. VO、DTO、POJO、PO的区别
  11. 节点服务器列表文件,服务器emule必备知识(更新服务器列表与kad节点文件)
  12. 树莓派 wiringpi 读取引脚_树莓派驱动的无人驾驶开发记录--驱动电机
  13. 传说中的世界500强面试题-情商
  14. 2020 的最后 1 天,写个年终总结吧!
  15. python图片转换成文字的手机软件_怎么把手机里的图片转换成WORD?迅捷文字识别帮你解决!...
  16. 职称计算机 2007 还是2003,职称计算机考试, PPT2003和2007 区别大吗?哪个版本更容易。...
  17. win10打开计算机加载很慢,Win10系统打开“此电脑”很慢总是在加载不显示怎么办...
  18. 64qam用matlab实现 使用matlab进行64qam调制,如何添加星座图程序?
  19. HTTP 协议简单理解与总结
  20. 一个平凡程序员的五年感悟:没有足够的付出,就没有热爱

热门文章

  1. cmake使用教(一)多目录下多个文件的构建
  2. 编译DCNv2网络:error: command ‘C:\\Program Files\\NVIDIAGPUComputingToolkit\\CUDA\\v10.0\\bin\\nvcc.exe‘
  3. 阿里云服务器web项目启动连接mysql_在腾讯云阿里云上部署JavaWeb项目(Tomcat+MySQL)...
  4. 洪水填充算法_区域填充算法和多边形填充的扫描线算法
  5. 最小二乘法 c 语言程序,最小二乘法采用C语言.docx
  6. vue 属性是变量_手把手教你如何在生产环境检查 Vue 应用程序
  7. android 用代码模拟滑动,Android开发之使用150行代码实现滑动返回效果
  8. P1308 统计单词数
  9. android studio gradle 打jar 包 (混淆+第三方库包)
  10. CentOS下vi编辑器