一、自动类型转换
1、什么是自动类型转换?
自动类型转化是范围小的数据可赋值给范围大的数据且精度不损失,且可以跨越式转化。
基础数据类型之间的转换如下:
byte(1)—short(2)—char(2)—int(4)—long(8)—float(4)—double(8)
2、表达式的自动类型转换
表达式的小范围类型变量会自动转换为当前最大范围的类型再进行运算,最终结果类型由表达式中的最大范围类型决定。
byte a = 97;
short b = 97;
char c = 'a';
int d = a+b+c;
System.out.println(d); //291
这里需要注意的是:当byte,short,char进行运算时,会同步转换为int类型进行运算,以避免数据越界。
3、强制类型转换
当我们需要将大范围类型变量赋值给小范围类型变量时,我们需要用到强制类型转换,若截取长度超过小范围类型变量长度,则精度损失。当浮点型转为整数时,向下取整返回。
- 格式:【(类型)变量/数据】
- 原理:以小范围类型变量长度截取大范围变量数据并赋值。
二、运算符
- 基本运算符(+,-,*,/,%)
/*由于数与数计算是通过int进行计算
所以需要与浮点数相乘才能以浮点数的形式进行输出
*/
int a = 10;
int b = 3;
System.out.println(a + b);//13
System.out.println(a - b);//7
System.out.println(a * 1.0 * b);//30.0
System.out.println(a * 1.0 / b);//3.3333333333333335
System.out.println(a % b);//1
- +符号运算符
**两种形式:**连接符(字符串连接)、计算符(数值计算)
**原则:**能算就算,不能算则连接。 - 自增自减
符号 | 作用 | 说明 |
---|---|---|
++ | 自增 | 变量自身加1 |
– | 自减 | 变量自身减1 |
自增自减运算符在变量的位置不同,则效果不同。
(1)当运算符在变量之前,则表示本次变量先运算,下一次调用运算后的变量。
(2)当运算符在变量之后,则表示下次调用运算前的变量值,再运算,当下一次调用运算为运算后的变量。
- 赋值运算符
基本赋值 “=”,将右侧数值赋值给左侧变量。
扩展赋值是隐含强制转换数据类型。
符号 | 作用 | 说明 |
---|---|---|
+= | 加后赋值 | 先加后赋,类似与前置++运算 |
-= | 加后赋值 | 先减后赋,类似与前置–运算 |
/= | 加后赋值 | 先除后赋 |
*= | 加后赋值 | 先乘后赋 |
%= | 加后赋值 | 先余后赋 |
- 关系运算符
作用: 对数据进行判断,并返回一个布尔结果
符号 | 说明 |
---|---|
== | 数值相等条件 |
!= | 左侧不等于右侧条件 |
<= | 左侧小于等于右侧条件 |
>= | 左侧大于等于右侧条件 |
> | 左侧大于右侧条件 |
< | 左侧小于右侧条件 |
- 逻辑运算符
作用: 可以把多个布尔结果整体运算,最终返回一个布尔结果。
符号 | 介绍 | 说明 |
---|---|---|
& | 逻辑与 | 比较值都为true则为true |
| | 逻辑或 | 比较值一个为true则为true |
^ | 逻辑异或 | 比较值不同则为true |
! | 逻辑非 | 比较值取反 |
&& | 短路与 | 效果与&相同,若前一个结果为false则后表达式不执行 |
|| | 短路或 | 效果与|相同,若前一个结果为true则后表达式不执行 |
- 三元运算符
作用: 简易判断语句
格式: 【数据类型 变量 = 条件表达式?值1:值2】
注意: 值1和值2不能是表达式。
JaveSE 目录
Java学习路线(1)——Java开端
Java学习路线(2)——基础语法
Java学习路线(3)——基础数据类型操作
Java学习路线(4)——程序流程控制
Java学习路线(5)——数组
Java学习路线(6)——方法
Java学习路线(7)——面向对象基础
Java学习路线(8)——面向对象基础(2)
Java学习路线(9)——包、权限、常量、枚举、抽象类、接口
Java学习路线(10)——多态与内部类
Java学习路线(11)——常用API
Java学习路线(12)——日期、包装类、正则表达式、数组、常见算法与Lambda表达式
Java学习路线(13)——Collection集合类:List集合与Set集合
Java学习路线(14)——Map集合类
Java学习路线(15)——不可变集合,Stream操作类
Java学习路线(16)——异常
Java学习路线(17)——日志框架
Java学习路线(18)——File、递归、字符集和IO流(上)
Java学习路线(19)——IO流(下)
Java学习路线(20)——多线程
Java学习路线(21)——网络通信
Java网络通讯案例——即时通讯(控制台版)
Java网络通信案例——B/S结构模拟
Java学习路线(22)——测试框架Junit
Java学习路线(23)——反射机制
Java学习路线(24)——注解
Java学习路线(25)——动态代理
Java学习路线(26)——XML与设计模式