文章目录
类型转换
自动类型转换
把一个表示范围小的类型变量赋值给表示范围大的类型变量,这个过程会自动转换
强制类型转换
把一个表示范围大的类型变量赋值给表示范围小的类型变量,这个过程需要做强制类型转换
- 格式:
目标数据类型 变量名 = (目标数据类型) 值或变量;
运算符
什么是运算符
- 运算符
对变量或常量进行操作的符号,注意符号都是特定的,不能改变量
- 表达式
用运算符把变量或常量连接起来符合Java语法的式子称为表达式
算术运算符
| 符号 | 作用 | 说明 |
|---|---|---|
| + | 加 | 数学算法 |
| - | 减 | 数学算法 |
| * | 乘 | 与“×”相同 |
| / | 除 | 与“÷”相同 |
| % | 取余/取模 | 获取的是两个数据做除法的余数 |
- 注意事项
/和%的区别,两个数据做除法,/取得商,%取得余
整数操作只能得到整数,需要小数,必须有浮点类型参与运算
字符“+”的操作
- char类型参与算术运算
使用的是字符对应的ASCII表中的数值
- ‘a’ – 97 \quad\quad a~z是连续的
依次递加- ‘A’ – 65 \quad\quad A~Z是连续的
依次递加- ‘0’ – 48 \quad\quad 0~9是连续的
依次递加
- 算术表达式
算术表达式中包含不同的基本数据类型的值的时候,整个算术表达式的类型会自动进行提升。
-
提升规则
byte类型,short类型和char类型将被提升到int类型,不管是否有其他类型参与运算。
整个表达式的类型自动提升到与表达式中最高等级的操作数相同的类型
等级顺序:byte,short,char --> int --> long --> float --> double -
演示
byte b1 = 10; byte b2 = 20; // byte b3 = b1 + b2; // 该行报错,因为byte类型参与算术运算会自动提示为int,int赋值给byte可能损失精度 int i3 = b1 + b2; // 应该使用int接收 byte b3 = (byte) (b1 + b2); // 或者将结果强制转换为byte类型 ------------------------------- int num1 = 10; double num2 = 20.0; double num3 = num1 + num2; // 使用double接收,因为num1会自动提升为double类型
-
字符串“+”的操作
当“+”操作中出现字符串时,这个”+”是字符串连接符,而不是算术运算。
System.out.println("我最"+ 666); // 输出:我最666
在”+”操作中,如果出现了字符串,就是连接运算符,否则就是算术运算。当连续进行“+”操作时,从左到右逐个执行。
//字符串拼接
int a = 520;
System.out.println("hello"+'a'+1);//helloa1
System.out.println('a'+1+"hello");//98hello
System.out.println("5+5="+5+5);//5+5=55
System.out.println(5+5+"=5+5");//10=5+5
赋值运算符
赋值运算符的作用是将一个表达式的值赋给左边,左边必须是可修改的,不能是常量。
| 符号 | 作用 | 说明 |
|---|---|---|
| = | 赋值 | a=10,将10赋值给变量a |
| += | 先加后赋值 | a+=b,将a+b的值给a |
| -= | 先减后赋值 | a-=b,将a-b的值给a |
| *= | 先乘后赋值 | a*=b,将a×b的值给a |
| /= | 先除后赋值 | a/=b,将a÷b的商给a |
| %= | 先取余后赋值 | a%=b,将a÷b的余数给a |
- 注意
扩展的赋值运算符隐含了强制转换
面试题:
short s=1; s = s+1;
short s=1; s+=1;
上面两个代码有没有问题,如果有,那里有问题。
为什么第二个木有问题呢?
扩展的赋值运算符其实隐含了一个强制类型转换。
s += 1;
不是等价于 s = s + 1;
而是等价于 s = (s的数据类型)(s + 1);
自增自减运算符
| 符号 | 作用 | 说明 |
|---|---|---|
| ++ | 自增 | 变量的值加1 |
| - - | 自减 | 变量的值减1 |
- 注意事项
- ++和- -既可以放在变量的后边,也可以放在变量的前边。
- 单独使用的时候,++和- -无论是放在变量的前边还是后边,结果是一样的。
- 参与操作的时候,如果放在变量的后边,先拿变量参与操作,后拿变量做++或者- -
- 参与操作的时候,如果放在变量的前边,先拿变量做++或者- -,后拿变量参与操作。
关系运算符
关系运算符有6种关系,分别为小于、小于等于、大于、等于、大于等于、不等于。最终于的结果是boolean类型
| 符号 | 说明 |
|---|---|
| == | 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 |
- 注意事项
- 关系运算符的结果都是boolean类型,要么是
true,要么是false - 千万不要把
==误写成=,=是赋值,==是判断是否相等的关系
- 关系运算符的结果都是boolean类型,要么是
逻辑运算符
逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。 最终的结果也是boolean
| 符号 | 作用 | 说明 |
|---|---|---|
| & | 逻辑与 | a&b,a和b都是true,结果为true,否则为false |
| | | 逻辑或 | a|b,a和b都是false,结果为false,否则为true |
| ^ | 逻辑异或 | a^b,a和b结果不同为true,相同为false |
| ! | 逻辑非 | !a,结果和a的结果正好相反 |
短路逻辑运算符
| 符号 | 作用 | 说明 |
|---|---|---|
| && | 短路与 | 作用和&相同,但是有短路效果 |
| || | 短路或 | 作用和|相同,但是有短路效果 |
在逻辑与运算中,只要有一个表达式的值为false,那么结果就可以判定为false了,没有必要将所有表达式的值都计算出来,短路与操作就有这样的效果,可以提高效率。同理在逻辑或运算中,一旦发现值为true,右边的表达式将不再参与运算。
- 逻辑与&,无论左边真假,右边都要执行。
- 逻辑或|,无论左边真假,右边都要执行。
- 短路与&&,如果左边为真,右边执行;【如果左边为假,右边不执行】。
- 短路或||,如果左边为假,右边执行;【如果左边为真,右边不执行】。
三目(元)运算符
-
格式
关系表达式 ? 表达式1 : 表达式2; -
格式解析
问号前面的位置是判断的条件,判断结果为boolean型,为true时调用表达式1,为false时调用表达式2。其逻辑为:如果条件表达式成立或者满足则执行表达式1,否则执行第二个。
键盘录入
我们可以通过 Scanner 类来获取用户的输入。使数据达到灵活性
使用步骤
导包
Scanner 类在java.util包下,所以需要将该类导入。导包的语句需要定义在类的上面。
在这里插入代码片import java.util.Scanner;
创捷对象
Scanner sc = new Scanner(System.in);// 创建Scanner对象,sc表示变量名,其他均不可变
接收数据
int i = sc.nextInt(); // 表示将键盘录入的值作为int数返回。
本文介绍了Java中的自动和强制类型转换,算术、字符、字符串操作,以及赋值、关系、逻辑和短路逻辑运算符。同时讲解了如何使用Scanner类进行键盘录入。

被折叠的 条评论
为什么被折叠?



