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. vue中router.resolve

    resolve是router的一个方法, 返回路由地址的标准化版本.该方法适合编程式导航. let router = this.$router.resolve({ path: '/home', que ...

  2. 狂神的学习笔记demo0607

    Ctrl+D 复制此行到下一行 sout   快捷打出System.out.println(); 修饰符 static 静态的 finalf 常量 变量的命名规范 见名知意 类成员变量:首字母小写和驼 ...

  3. HOOK大法

    // 请求头hook 测试网站同花顺 OK var header_old = window.XMLHttpRequest.prototype.setRequestHeader;window.XMLHt ...

  4. CatDCGAN项目复现与对抗网络初识

    CatDCGAN项目复现与对抗网络初识 作者 CarpVexing 日期 100521 禁止转载 目录 CatDCGAN项目复现与对抗网络初识 引言 CatDCGAN项目基本信息 复现项目的准备工作 ...

  5. mysql知识点一

    1.mysql中造成索引失效的原因有哪些?如何分析和解决? 原因: 1.like以通配符%开头索引失效 通常用的索引数据结构是B+树,而索引是有序排列的 优化:一种是使用覆盖索引,另一种是把%放后面 ...

  6. Spring AOP的动态代理原理和XML与注解配置

    AOP 实现底层就是对上面的动态代理的代码进行了封装,封装后我们只需要对需要关注的部分进行代码编写,并通过配置的方式完成指定目标的方法增强. 相关术语: Target(目标对象):代理的目标对象 Pr ...

  7. C/C++ 异常处理机制(例:文件拷贝)

    异常是一种程序控制机制,与函数机制互补. 函数是一种以栈结构展开的上下函数衔接的程序控制系统,异常是另一种控制结构,它可以在出现"意外"时中断当前函数,并以某种机制(类型匹配)回馈 ...

  8. 使用ansible批量推送公钥

    准备两个yml文件 send-pubkey.yml - hosts: all remote_user: root # 连接远程主机的用户,密码就是文件中设置好的 ansible_ssh_pass 的值 ...

  9. Ansible 工具参数详解自动化运维

    一.Ansible基本概述: Ansible是一个配置管理系统(configuration management sysytem )你只需要可以使用ssh访问你的服务器或设备就行 Ansible 是近 ...

  10. python pandas dataframe excel xlwings docx 常用简单函数方法汇总

    # -*- coding: UTF-8 -*-import pandas as pdimport numpy as npimport datetimeimport osimport sysimport ...