Java——类型转换+运算符
文章目录
- 1 类型转换
-
- 1.1 自动类型转换
- 1.2 强制类型转换
- 2 运算符
-
- 2.1 算术运算符
- 2.2 "+"作为连接符
- 2.3 自增自减运算符
- 2.4 赋值运算符
- 2.5 关系运算符
- 2.6 逻辑运算符
- 2.7 三元运算符
- 2.8 优先级
- 3 API介绍
1 类型转换
1.1 自动类型转换
- 类型范围小的变量,可以直接赋值给类型范围大的变量
- 表达式中,小范围类型的变量会自动转换成当前较大范围的类型再运算
- 表达式的最终结果类型由表达式中的最高类型决定
- 表达式中,
byte、short、char
是直接转换成int
类型参与运算的
//表达式的自动类型转换byte a = 10;int b = 20;double c = 1.0;double d = a+b+c;System.out.println(d);//31.0double v = a + b + 2.9//232.9;System.out.println(v);byte i = 10;byte j = 20;int k = i + j;//30System.out.println(k);
1.2 强制类型转换
- 强制类型转换可能会造成数据(丢失)溢出
- 浮点型强转成整型,直接丢掉小数部分,保留整数部分返回
//强制转换int a = 20;byte b = (byte)a;System.out.println(b);//20int i =1500;byte j =(byte)i;System.out.println(j);//-36double s = 99.8;int t = (int) s;System.out.println(t);//99
2 运算符
2.1 算术运算符
符号 | 作用 |
---|---|
+ |
加 |
- |
减 |
* |
乘 |
/ |
除 (两个整数相除结果仍是整数) |
% |
取余 |
//基本算术运算符int a=10;int b=3;System.out.println(a + b);System.out.println(a - b);System.out.println(a * b);System.out.println(a / b); //3.3333 --> 3System.out.println(a * 1.0/ b); //3.3333System.out.println(3 * 1.0/ 2); //1.5System.out.println(3 / 2 *1.0); //1.0//拆分三位数int d = 589;int g = d % 10;System.out.println(g); //9int s = d / 10 % 10;System.out.println(s); //8int b = d /100;System.out.println(b); //5
2.2 "+"作为连接符
能算则算,不能算就在一起
int a = 5;System.out.println("abc" + 'a'); //abcaSystem.out.println("abc" + a); //abc5System.out.println(5 + a); //10System.out.println("abc" + 5 + 'a'); //abc5aSystem.out.println(15 + "abc" + 15); //15abc15System.out.println(a + 'a'); //5+97=102System.out.println(a + "" + 'a'); //5aSystem.out.println(a + 'a' + "hello"); //102helloSystem.out.println("hello" + a + 'a'); //hello5aSystem.out.println("hello" + (a + 'a')); //hello102
2.3 自增自减运算符
符号 | 作用 |
---|---|
++ |
自增,变量自身的值加1 |
-- |
自减,变量自身的值减1 |
++
和--
既可以放在变量的后面,也可以放在变量的前面++
和--
只能操作变量,不能操作字面量
int a = 10;int b = 10;a++;b--;System.out.println(a); //11System.out.println(b); //9//表达式中非单独运算//放在变量的前面,先对变量进行+1/-1,再拿变量的值进行运算//放在变量的后面,先拿变量的值进行运算,再对变量的值进行+1/-1int i = 10;int j = ++i;int k = i++;System.out.println(i); //12System.out.println(j); //11System.out.println(k); //11//拓展案例int k = 3;int p = 5;int r = k++ + ++k - --p + p-- - k-- + ++p + 2;// r 3 + 5 - 4 + 4 - 5 + 4 + 2// k 3 4 5 4// p 5 4 3 4System.out.println(k); //4System.out.println(p); //4System.out.println(r); //9
2.4 赋值运算符
符号 | 作用 |
---|---|
= |
右赋值给左 |
+= |
a += b >> a=(a的数据类型)(a+b) |
-= |
a -= b >> a=(a的数据类型)(a-b) |
*= |
a * = b >> a=(a的数据类型)(a*b) |
/= |
a /= b >> a=(a的数据类型)(a/b) |
%= |
a %= b >> a=(a的数据类型)(a%b) |
- 扩展的运算符隐含了强制类型转换
2.5 关系运算符
- 对数据进行条件判断的符号,最终会返回一个比较的布尔结果(true,false)
符号 | 说明 |
---|---|
== |
是否相等,成立为true,不成立为false |
!= |
是否不相等,成立为true,不成立为false |
> |
大于,成立为true,不成立为false |
>= |
大于等于,成立为true,不成立为false |
< |
小于,成立为true,不成立为false |
<= |
小于等于,成立为true,不成立为false |
2.6 逻辑运算符
- 可以把多个条件的布尔结果放在一起运算,最终返回一个布尔结果
符号 | 说明 |
---|---|
& 逻辑与 |
必须都是true,结果才是true;只要有一个是false,结果一定是false |
| 逻辑或 |
只要有一个为true,结果就是true |
! 逻辑非 |
你真我假,你假我真 ; !true=false,!false=true |
^ 逻辑异或 |
如果两个条件都是false或者都是true则结果是false.两个条件不同结果是true. |
2.7 三元运算符
- 格式:
条件表达式 ? 值1 : 值2 ;
- 执行流程: 首先计算关系表达式的值,如果值为true,返回值1;如果为false,返回值2
//从两个整数中找到最大值int a= 10;int b = 200;int max = a>b ? a:b;System.out.println(max);//拓展int i = 10;int j = 30;int k = 50;//方法1:俩俩比较int temp = i > j ? i : j;int max = k > temp ? k : temp;//方法2: ()可以去掉int max = i > j ? (i>k ? i:k):(j>k ? j:k);System.out.println(max);
2.8 优先级
优先级 | 运算符 | 简介 | 结合性 |
---|---|---|---|
1 | [ ] . () |
方法调用,属性获取 | 从左向右 |
2 | ! ~ ++ -- |
一元运算符 | 从右向左 |
3 | * / % |
乘、除、取模(余数) | 从左向右 |
4 | + - |
加减法 | 从左向右 |
5 | << >> >>> |
左位移、右位移、无符号右移 | 从左向右 |
6 | < <= > >= instanceof |
小于、小于等于、大于、大于等于,对象类型判断是否属于同类型 | 从左向右 |
7 | == != |
2个值是否相等,2个值是否不等于下面有详细的解释 | 从左向右 |
8 | & |
按位与 | 从左向右 |
9 | ^ |
按位异或 | 从左向右 |
10 | | |
按位或 | 从左向右 |
11 | && |
短路与 | 从左向右 |
12 | || |
短路或 | 从左向右 |
13 | ?: |
条件运算符 | 从右向左 |
14 | = += -= *= /= %= &= |
混合赋值运算符 | 从右向左 |
3 API介绍
API(Application Programming Interface),应用程序编程接口,可直接调用
键盘录入的开发步骤:
- 导包:import Java.util.Scanner;
- 抄写代码得到扫描器对象:Scanner sc = new Scanner(System.in)
- 抄写代码等待接收用户输入的数据:sc.nextInt()、sc.next()