1. 运算符和表达式

运算符

​ 就是对常量或者变量进行操作的符号。

​ 如:+ - * /

表达式

​ 用运算符把常量或者变量连接起来的,符合Java语法的式子就是表达式。

​ 如:a + b

​ 其中,+是算术运算符的一种,所以这个表达式也称为算术表达式。

2. 算术运算符

+、-、*、/、%

运算特点:

+ - * :跟小学数学中的加减乘一模一样,没有任何区别。
/ :
1. 整数相除结果只能得到整数(小数取整数部分),如果结果想要是小数,必须要有小数参数。
2. 小数直接参与运算,得到的结果有可能是不精确的。
案例:
System.out.println(10 / 3);//3
System.out.println(10.0 / 3)//3.3333333333333335
% :取模、取余,也是进行除法运算,只不过获取的是余数。
案例:
System.out.println(10 % 2);//0
System.out.println(10 % 3);//1

3. 隐式转换

概念

​ 也叫自动类型转换。就是把一个取值范围小的数据或者变量,赋值给另一个取值范围大的变量时,不需要我们额外写代码单独实现,程序自动帮我们完成的功能。

转换规则

  • 取值范围小的和取值范围大的进行运算,先把小的转换为大的,再进行运算。
  • byteshortchar三种类型的数据在运算时,都会直接先转换为int,然后再进行运算。

取值范围大小关系:byte < short < int < long < float < double

4. 强制转换

概念

​ 如果要把一个取值范围大的数据或者变量赋值给另一个取值范围小的变量,Java中是不允许直接操作的,如果一定要这样干,就需要加入强制转换。

书写格式

目标数据类型 变量名 = (目标数据类型) 被强制转换的数据或变量名

注意:强制转换可能会导致数据的精度丢失。

5. 字符串的+操作

规则

  • 当+操作中出现字符串时,+就是字符串的连接符,会将前后的数据进行拼接,并产生一个新的字符串。
  • 当连续进行+操作时,执行顺序时从左到右逐个执行。

案例

案例1:

1 + "abc" + 1

​ 结果:"1abc1"

案例2:

1 + 2 + "abc" + 2 +1

​ 结果:"3abc21"

6. 字符的+操作

规则

​ 当+操作中出现了字符,会转换为计算机内置的ASCII码表中对应的数字,然后再进行运算。

案例

char c = 'a';
int result = c + 0;
System.out.println(result);//97

7. 自增/自减运算符

++ 自增运算符,就是把变量里面的值+1
-- 自减运算符,就是把变量里面的值-1

​ 自增/自减运算符可以放在变量的前面和后面,如:++aa++

8. 赋值运算符

= 赋值运算符

​ 运算过程:就是把等号右边的结果赋值给左边的变量。

注意:

  • 在赋值运算中,当自增/自减运算符出现在变量前时,先对变量进行自增/自减运算,再赋值。

  • 在赋值运算中,当自增/自减运算符出现在变量后时,先赋值,再对变量进行自增/自减运算。

案例:

int a = 10;
int b = ++a;
System.out.println(a);//11
System.out.println(b);//11
int c = 10;
int d = c++;
System.out.println(c);//11
System.out.println(d);//10
//自减运算符同理

9. 扩展赋值运算符

+=、-=、*=、/=、%=

规则

​ 把左边跟右边进行运算,最终结果赋值给左边,对右边无任何影响。

案例

int a = 10;
int b = 20;
a += b;//相当于a = a + b
System.out.println(a);//30
System.out.println(b);//20

注意:

扩展赋值运算符中隐层还包含了一个强制转换。

+=为例:a += b实际上相当于a = (byte)(a + b)

10. 关系运算符

​ 又称为比较运算符。

符号 解释
== 就是判断左边跟右边是否相等,如果成立就是true,如果不成立就是false
!= 就是判断左边跟右边是否不相等,如果成立就是true,如果不成立就是false
> 就是判断左边是否大于右边,如果成立就是true,如果不成立就是false
>= 就是判断左边是否大于等于右边,如果成立就是true,如果不成立就是false
< 就是判断左边是否小于右边,如果成立就是true,如果不成立就是false
<= 就是判断左边是否小于等于右边,如果成立就是true,如果不成立就是false

注意:

  • 关系运算符的运算结果一定是布尔类型(boolean)。
  • ==是判断左右两边是否相等的关系运算符,而=是赋值运算符

11. 逻辑运算符

&:逻辑与(而且)

​ 两边都为真,结果才是真,只要有一个为假,结果就是假。

|:逻辑或(或者)

​ 两边都为假,结果才是假,只要有一边为真,结果就是真。

^:异或

​ 如果两边相同,结果为false;如果两边不相同,结果为true

!:取反

false取反就是truetrue取反就是false

注意:取反最多只用一个。

12. 短路逻辑运算符

&&

​ 运算规则与&是一致的,具有短路效果。

||

​ 运算规则与|是一致的,具有短路效果。

短路效果

​ 当左边不能确定整个表达式的结果时,右边才会执行。反之,当左边能确定整个表达式的结果时,右边不会执行。这样做可以提高代码的运行效率。

注意:&&&|||的运行结果是一致的,但是短路逻辑运算符可以提高程序的运行效率,所以更推荐使用短路逻辑运算符。

13. 三元运算符

格式

关系表达式 ? 表达式1 : 表达式2;

运算规则

  • 计算关系表达式的值
  • 如果关系表达式的值为true,执行表达式1
  • 如果关系表达式的值为false,执行表达式2

注意:三元运算符的最终结果一定要被使用,要么赋值给一个变量,要么打印输出。

Java学习笔记02的更多相关文章

  1. Java学习笔记 02 String类、StringBuilder类、字符串格式化和正则表达式

    一.String类一般字符串 声明字符串 >>String str 创建字符串 >>String(char a[])方法用于将一个字符数组创建为String对象 >> ...

  2. 【8-20】java学习笔记02

    others 初始化块在构造器前执行: 静态初始化块和实例变量显示初始化执行顺序为各自定义的位置: final类不能派生子类,final方法不可覆盖,final变量不可重新赋值: 判定值相等,Stri ...

  3. Java学习笔记:02面向对象-重写_this_super_抽象类

    02面向对象-重写/this/super/抽象类 ****1.this和super 作用: this: 区分本类的成员变量和局部变量同名情况 super:区分父类的成员变量和局部变量同名情况 用法: ...

  4. Java学习笔记(04)

    Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...

  5. 0032 Java学习笔记-类加载机制-初步

    JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...

  6. Java学习笔记4

    Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...

  7. Redis:学习笔记-02

    Redis:学习笔记-02 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 4. 事物 Redis 事务本 ...

  8. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

  9. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

  10. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

随机推荐

  1. 用python写xml文件

    def writeInfoToXml(filename, config_id, obj_name): from xml.dom.minidom import Document ''' eg: < ...

  2. 关于ADB命令工具

    android提供了不少命令行工具,方便我们调试和查看信息.下面是frameworks/base/cmds(android 6.0.1)中的命令. $ tree cmds -L 1 cmds am├─ ...

  3. js数组原型方法

    今天学习了一下js数组原型的操作方法,小结一下学习地址https://www.cnblogs.com/obel/p/7016414.html 1.join() join(separator): 将数组 ...

  4. C++11:初始化列表

    在老版本的C++中,我们可以比较方便得对结构体.数组等对象利用{}进行初始化,而类变量的初始化则取决于构造函数的形式,例如: struct A { int a, b, c; }; class Foo ...

  5. 虚拟机文件丢失,虚拟机无法启动,通过xx-flat.vmdk和xx-delta.vmdk恢复虚拟机

    突然掉电,导致虚拟机文件夹里面的文件丢失,只剩余-flat.vmdk和-delta.vmdk文件,其他文件全部丢失,文件格式原本为"文件"格式.新建虚拟机无法直接使用此文件夹里面的 ...

  6. UIPath踩坑记一开发环境检查

      第一步:设置--设计--关闭新项目使用新式体验   第二步:Uipath与浏览器的通信护展是否已安装,如果没有安装需要点击安装   第三步:浏览器中安装的扩展是否已经打开

  7. Git在使用过程中遇到的一些问题

    git默认对文件中的大小写不敏感. 方案1: 通过配置git来达到识别文件大小写的问题.命令如下: git config core.ignorcecase false 缺点:每个仓库都需要修改. 方案 ...

  8. buuoj.cn-web刷题记录-笔记

    1.万能密码 [极客大挑战 2019]EasySQL username=admin' or '1'='1&password=admin' or '1'='1 因为拼接为sql 会变成  sel ...

  9. 记录小程序字符串模板渲染WxParse

    1.先去https://github.com/icindy/wxParse上downLoad代码,然后直接复制到项目里,跟pages目录同级 2.在要用的js页面声明 var WxParse = re ...

  10. Windows 任务栏透明 居中

    任务栏设置 任务栏居中 由于windows默认的程序是从左往右显示,看着可能有一点不舒服,当然如果使用习惯的话,忽然居中,可能更不舒服 首先搜索字符映射表 点击字符映设表中第五行的空白字符,选择进行复 ...