Java学习笔记02
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. 隐式转换
概念
也叫自动类型转换。就是把一个取值范围小的数据或者变量,赋值给另一个取值范围大的变量时,不需要我们额外写代码单独实现,程序自动帮我们完成的功能。
转换规则
- 取值范围小的和取值范围大的进行运算,先把小的转换为大的,再进行运算。
byte
、short
、char
三种类型的数据在运算时,都会直接先转换为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
自增/自减运算符可以放在变量的前面和后面,如:++a
,a++
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
取反就是true
,true
取反就是false
。
注意:取反最多只用一个。
12. 短路逻辑运算符
&&
运算规则与&
是一致的,具有短路效果。
||
运算规则与|
是一致的,具有短路效果。
短路效果
当左边不能确定整个表达式的结果时,右边才会执行。反之,当左边能确定整个表达式的结果时,右边不会执行。这样做可以提高代码的运行效率。
注意:
&&
和&
、||
和|
的运行结果是一致的,但是短路逻辑运算符可以提高程序的运行效率,所以更推荐使用短路逻辑运算符。
13. 三元运算符
格式
关系表达式 ? 表达式1 : 表达式2;
运算规则
- 计算关系表达式的值
- 如果关系表达式的值为
true
,执行表达式1 - 如果关系表达式的值为
false
,执行表达式2
注意:三元运算符的最终结果一定要被使用,要么赋值给一个变量,要么打印输出。
Java学习笔记02的更多相关文章
- Java学习笔记 02 String类、StringBuilder类、字符串格式化和正则表达式
一.String类一般字符串 声明字符串 >>String str 创建字符串 >>String(char a[])方法用于将一个字符数组创建为String对象 >> ...
- 【8-20】java学习笔记02
others 初始化块在构造器前执行: 静态初始化块和实例变量显示初始化执行顺序为各自定义的位置: final类不能派生子类,final方法不可覆盖,final变量不可重新赋值: 判定值相等,Stri ...
- Java学习笔记:02面向对象-重写_this_super_抽象类
02面向对象-重写/this/super/抽象类 ****1.this和super 作用: this: 区分本类的成员变量和局部变量同名情况 super:区分父类的成员变量和局部变量同名情况 用法: ...
- Java学习笔记(04)
Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...
- 0032 Java学习笔记-类加载机制-初步
JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...
- Java学习笔记4
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Run ...
- Redis:学习笔记-02
Redis:学习笔记-02 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 4. 事物 Redis 事务本 ...
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
- 0035 Java学习笔记-注解
什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...
- 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用
垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...
随机推荐
- PRVF-4007 : User equivalence check failed for user "grid"
PRVF-4007 : User equivalence check failed for user "grid" 问题:Oracle安装Grid Infrastructure之前 ...
- 关于lesscss和颜色梯度(linear-gradient )的一些问题
一.什么是less? 一种 动态 样式 语言. LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承,运算, 函数. LESS 既可以在 客户端 上运行 (支持IE 6+, Webkit, F ...
- mac 安装go语言以及配置环境变量
Go官网下载地址:https://golang.org/dl/ Go官方镜像站(推荐):https://golang.google.cn/dl/ 其他版本自己根据系统版本下载,这里只介绍mac下载 一 ...
- C++11:初始化列表
在老版本的C++中,我们可以比较方便得对结构体.数组等对象利用{}进行初始化,而类变量的初始化则取决于构造函数的形式,例如: struct A { int a, b, c; }; class Foo ...
- 6-SSRF漏洞
1.SSRF漏洞介绍 SSRF是一种由攻击者构造请求,由服务端发起请求的安全漏洞.一般情况下,ssrf攻击的目标是外网无法访问的内部系统. 2.SSRF原理 Ssrf的形成大多是由于服务端提供了从其他 ...
- 使用Kong网关API接口配置
一.Upstream1.创建Upstream: curl -i -X POST IPAddress:8001/upstreams -d 'name=upstream-test' -d 'slots=1 ...
- C#清空控件的值
/// 清除容器里面某些控件的值 /// </summary> /// <param name="parContainer">容器类控件</param ...
- 在服务器建立git服务端接收push后覆盖部署记录
1.在本地要部署的目录 git initgit clone --bare ./ my_project.git 把本地init仓库克隆到 my_project.git 2.上传my_project.gi ...
- 自动化兼容性测试工具——WeTest
这个作业属于哪个课程 2021春软件工程实践|W班(福州大学) 这个作业要求在哪里 软件工程实践总结&个人技术博客 这个作业的目标 分享自动化兼容性测试工具的使用 其他参考文献 ... 目录 ...
- Python:合并两个列表成为一个list
如何合并两个列表,今天就来探讨一下: 方法一:最笨的方法实现 list1=[1,2,3]list2=[4,5,6]new_list=[]for item in list1: new_list.appe ...