一、类型转换
不同类型的变量赋值给其他类型的变量需要进行类型转换
1、自动转换
类型范围小的变量,可以直接赋值给类型范围大的变量就是自动转换
表达式的最终结果类型由表达式中的最高类型决定,其中byte、short、char 是直接转换成int类型参与运算的
byte b1 = 22;
byte b2 = 54;
//求b1+b2的和
byte b3 = b1 + b2;//错误
int b3 = b1 +b2;//正确
2、强制转换
大范围类型的变量或者数据不能直接赋值给小范围类型的变量,必须进行强制类型转换。
格式: 数据类型 变量 = (数据类型)其他类型的变量/数据
int a = 17;
byte b =(byte) a;
注意:
- 强制类型转换可能造成数据(丢失)溢出
- 浮点型强转成整型,直接丢掉小数部分,保留整数部分返回
二、运算符
1、算数运算
符号 | 作用 |
+ | 加 |
- | 减 |
* | 乘 |
/ | 除 |
% | 取余 |
两个整数相除的结果一定是整数因为最高类型是整数。
int a = 10;
int b = 3;
int c = a / b; //int c = 3
double d = 1.0*a / b; //double d=3.33
2、符号链接
+符号与字符串一起运算时,充当连接符,连接后的结果还是一个字符串。
3、自增自减
符号 | 作用 |
++ | 自增(变量+1) |
-- | 自减(变量 -1) |
注意:
- 只能操作变量,不能操作字面量
- 自增、自减运算符:
- 如果单独使用放前后是没有区别的。
- 非单独使用:
- 在变量前 ,先进行变量自增/自减,再使用变量。
- 在变量后 ,先使用变量,再进行变量自增/自减
4、赋值运算符
符号 | 作用 |
+= | 加后赋值 |
-= | 减后赋值 |
*= | 乘后赋值 |
/= | 除后赋值 |
%= | 取余后赋值 |
赋值运算符隐含了强制类型转换,实现数据的累加
5、关系运算符
符号 | 作用 |
== | 判断是否相等 |
!= | 判断是否不相等 |
> | 判断是否大于 |
>= | 判断是否大于等于 |
< | 判断是否小于 |
<= | 判断是否小于等于 |
判断是否满足条件的,返回true 和 false
6、逻辑运算符
&(逻辑与) : 且的意思,必须前后都是true,结果才是true
|(逻辑或) : 或的意思,只要前后有一个是true,结果就一定是true
&&(短路与) : 且的意思,必须前后都是true,结果才是true
||(短路或) : 或的意思,只要前后有一个是true,结果就一定是true
- &&如果发现前面是false 后面不执行,直接返回结果
- ||如果发现前面是true 后面不执行,直接返回结果
! (取反) !false = true !true = fals
^ (异或操作):前后一样返回false ,前后不一样返回true.(男男/女女都不行,男女搭配才可以)
注意:
- 实际开发中、常用的逻辑运算符是:&& 、 || 、 !
7、三元运算符
格式: 条件表达式?值1:值2;
int a = 10;
int b = 20;
int c = 30
//求最大值
int max = a > b ? ( a > c ? a : c ) : ( b > c ? b : c )
8、运算符优先级
- ()优先级最高
- * / 高于 + -
- && 优先级高于||
三、键盘录入
//导包
import java.util.Scanner;
//创建一个扫描对象
Scanner sc = new Scanner(System.in);
//等待接收用户的数据
int age = sc.nextInt();
String name = sc.next();