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的垃圾回收机制 ...
随机推荐
- nRF51822蓝牙学习 进程记录 3:蓝牙协议学习--简单使用
三天打鱼两天晒网,又学起了蓝牙,不过还好的是终于开始学习蓝牙协议部分了. 但是,一看起来增加了蓝牙协议的例程,真是没头绪啊.本身的教程资料解说太差了,看青风的蓝牙原理详解也是一头雾水. 经过不断地看各 ...
- python for houdini——python在houdini中的基础应用02
内容来源于网上视频 一.houdini python编译器 1.python shell 2.python source editor----代码可以随场景保存 构造的函数可以在外部通过hou.ses ...
- rust-must-know-crates-5ad8 100DayOfRust
https://dev.to/cad97/rust-must-know-crates-5ad8 https://dev.to/search?q=100DayOfRust https://fastert ...
- Spyglass CDC工具使用(三)
最近一直在搞CDC (clock domain crossing) 方面的事情,现在就CDC的一些知识点进行总结. 做CDC检查使用的是Spyglass工具.以下内容转载自:Spyglass之CDC检 ...
- 代码片断:GDI绘制带一定角度的椭圆
//先将DXF文件中的Ellipse 解析到elpList 中 foreach (Ellipse ellipse in elpList) { //定义一个矩形 RectangleF rect = ne ...
- 快速乘_c/c++
快速乘的使用主要是这种情形:要计算(a * b) % p时,发现a * b爆 long long 了,而a, b, p没有爆 long long 快速乘的原理: 比如当我们需要要计算3 * 2 ...
- 记我的第一个UVM项目
没有天天写博客的习惯,后果就是老是忘记自己的排版风格.为了追求统一还要翻一下之前是怎么写的.这也算是意料之外的发现吧. 说实话,没人教的话从零开始学一个新的东西实在是太难了.即使互联网的存在已经大幅降 ...
- 11. ASCII, unicode, utf-8, gbk的区别
这是几种编码方式 ASCII是包含英文字母数字特殊字符等, 长度是1字节, 前128个是基础ASCII码, 128个以后是扩展ASCII码 GBK是国标扩展码, 长度2字节, 表示汉字以及各少数民族语 ...
- Shell脚本之while read line的用法
Shell脚本之while read line的用法 while read line do - done < file read通过输入重定向,把file的第一行所有的内容赋值给变量line,循 ...
- Android笔记--图形控制
图形Drawable 形状图形(其定义文件是以shape标签为根节点的XML描述文件,支持四种类型的形状) 具体实现: 在shape标签里面,solid指定填充的颜色,stroke指定边框颜色,cor ...