类型转换
自动类型转换:
类型范围小的变量,可以直接赋值给范围大的变量
底层原理: 数据在计算机底层的表示
表达式的自动类型转换:
在表达式中,小范围类型的变量会自动转换成当前较大范围的类型再运算
byte、short、char——>int——>long——>float——>double
-
表达式的最终结果类型由表达式中的最高类型决定
-
在表达式中,byte、short、char是直接转换成int类型参与运算的
例如:byte b1=3,b2=4;
b=b1+b2; //错误 运算时会自动转换为int类型 而int类型的值不能赋值给byte 需要强制类型转换
b=3+4;//正确 常量具有常量类型优化机制 可以直接识别为byte
强制类型转换:
将范围大的变量直接赋值给范围小的变量会报错
强制类型转换: 强行将类型范围大的变量赋值给范围小的变量(数据可能会丢失)
数据类型 变量2 = (数据类型)变量1
底层原理: 数位截断
运算符
运算符: 属于字面量或变量进行操作的符号
算术运算符:
符号 | 作用 | 说明 |
---|---|---|
+ | 加 | 加法 |
- | 减 | 减法 |
* | 乘 | 乘法 |
/ | 除 | 除法(在Java中两个整数相除结果还是整数) |
% | 取余 | 获取两个数据做除法的余数 |
“+”做连接符:
字符串拼接
“+”符号做字符串运算的时候是用作连接符的,其结果依然是一个字符串
自增自减运算符:
符号 | 作用 | 说明 |
---|---|---|
++ | 自加 | 变量自身的值加一 |
– | 自减 | 变量自身的值减一 |
自增自减符号在变量的前后会存在明显差别
- 放在变量的前面,先对变量+1、-1,再拿变量的值进行运算
int a = 10;
int rs = ++a;
//rs = 11,a=11
- 放在变量的后面,先对变量变量的值进行运算,再对变量的值进行+1、-1
int b = 10;
int rs = b++;
//rs = 10,b = 11
赋值运算符
基本赋值运算符:“=” int a = 10;//把数据10赋值给左边的变量a存储
扩展赋值运算符:
符号 | 作用 | 说明 |
---|---|---|
+= | 加后赋值 | a += b 等价于 a =(a的数据类型)( a + b);将a+b的值给a |
-= | 减后赋值 | a -= b 等价于 a =(a的数据类型)( a - b);将a-b的值给a |
*= | 乘后赋值 | a *= b 等价于 a =(a的数据类型)( a * b);将a*b的值给a |
/= | 除后赋值 | a /= b 等价于 a =(a的数据类型)( a / b);将a/b的值给a |
%= | 取余后赋值 | a %= b 等价于 a =(a的数据类型)( a % b);将a%b的值给a |
扩展的赋值运算符隐含了强制类型转换
关系运算符
关系运算符是对数据进行条件判断的符号,最终会返回一个比较的布尔结果(false,true)
符号 | 说明 |
---|---|
== | a==b,判断a和b的值是否相等,成立为true,不成立为false |
!= | a!=b,判断a和b的值是否不相等,成立为true,不成立为false |
> | a>b,判断a是否大于b,成立为true,不成立为false |
>= | a>=b,判断a是否大于等于b,成立为true,不成立为false |
< | a<b,判断a是否小于b,成立为true,不成立为false |
<= | a<=b,判断a是否小于等于b,成立为true,不成立为false |
相等判断是“==”,而不是“=”。
逻辑运算符
可以把多个条件的布尔结果放在一起运算,最终返回一个布尔结果
符号 | 介绍 | 说明 |
---|---|---|
& | 逻辑与 | 必须都是true,结果才是true |
| | 逻辑或 | 只要有一个为true,结果就是true |
! | 逻辑非 | 你真我假,你假我真。!true=false,!false=true |
^ | 逻辑异或 | 如果两个条件都是false或true则结果是false,条件不同结果是true |
&& | 短路与 | 有一个为false,结果为false(前一个为false,后一个条件就不执行了) |
|| | 短路或 | 有一个为true,结果为true(前一个为true,后一个条件就不执行了) |
三元运算符
格式: 条件表达式 ? 值1 : 值2 ;
执行流程: 首先计算关系表达式的值,如果为true,返回值1;如果为false,返回值2
优先级
在表达式中,运算符的执行顺序由优先级决定
如果不确定优先级,可以使用括号运算符来提高某个运算符优先级
输入函数
从键盘获取输入的步骤
- ①导包:告诉程序去jdk的哪个包中找扫描器技术
import java.util.Scanner; - ②:写一行代码获取键盘扫描器对象
Scanner sc = new Scanner(System.in); - ③:等待接受用户输入数据
int age = sc.nextInt(); // 接受数字输入
String name = sc.next(); // 接受字符串输入
System、String在JDK的java.lang包下,lang包是默认包,不需要导入