目录
▶类型转换
1.自动转换类型
2.表达式的自动转换
3.强制类型转换
▶运算符
1.基本算数运算符
2.+符号做连接符
3.自增自减运算符
4.赋值运算符
5.关系运算符
6.逻辑运算符
7.三目运算符
8.运算符优先级
♦自动转换类型
1.为什么要进行类型转换?
*存在不同类型的变量赋值给其他类型的变量
2.自动类型转换是什么样的?
*类型范围小的变量,可以直接转换为类型范围大的变量
package com.itheima.type;
public class TypeDemo01 {
public static void main(String[] args) {
//目标 理解自动类型转换:范围小的变量自动赋值给类型范围大的变量
byte a=20;
int b=a;
System.out.println(a);
System.out.println(b);//a,b均输出20 因为发生了自动转换:byte 8位——>int 32位
int age=23;
double db=age;//发生自动类型转换 int 32位——>double 64位
System.out.println(db);//输出23.0 因为double是单精度浮点型
char ch='a';
int code=ch;//发生自定类型转换 char 8位——>int 32位
System.out.println(code);//输出是97 因为int是整形 因此输出的是a对应的ASCII码值
}
}
♦表达式的自动转换
1.表达式的自动类型转换是什么样的?
*小范围的类型会自动转换成大范围的类型变量
2.表达式的最终结果类型是由谁决定的?
*由表达式的最高类型决定
3.表达式的有哪些类型转换需要注意?
*byte short char 是直接当成int类型参与运算的
package com.itheima.type;
public class TypeDemo02 {
public static void main(String[] args) {
//目标 掌握表达式的自动类型转换的规则
byte a=10;
int b=20;
double c=1.0;
double rs=a+b+c;//输出是31.0 最高类型是double 64位 因此表达式最终结果是double型的
System.out.println(rs);
double rs2=a+b-2.3;//输出是27.7 2.3是double型的 最高类型任然是double
int rs3=a+b;//输出是30 因为ab中最高类型是int 32位
System.out.println(rs2);
System.out.println(rs3);
//面试题
byte i=10;
byte j=20;
// byte k=i+j;//报错 此处就不可以用byte接k值 因为 byte要当成int类型参与运算 因此要用int接k值
int k=i+j;//输出30
System.out.println(k);
}
}
♦强制类型转换
1.什么是强制类型的转换?
*可以强行将类型范围大的变量、数据赋值给类型范围小的变量
2.强制类型转换的格式
*数据类型 变量名称=(数据类型)变量名称、数据
3.强制类型转换需要注意事项?
*可能造成数据丢失(数据溢出)
*小数强制转换成整数是直接截断小数保留整数
package com.itheima.type;
public class TypeDemo03 {
public static void main(String[] args) {
//目标 理解强制类型转换 alt+回车
int a=20;
// byte b=a;//报错
byte b=(byte) a;
System.out.println(a);
System.out.println(b);//20
int i=1500;
byte j= (byte) i;
System.out.println(j);//-36 数据丢失
double score=99.5;
int it= (int) score;
System.out.println(it);//99
}
}
♦基本算数运算符
1.算数运算符有哪些?
2.除法运算需要注意什么?
*如果两个整数做除法,则其结果也一定是整数,因为最高类型是整形
package com.itheima.operator;
public class OperatorDemo01 {
public static void main(String[] args) {
//目标 掌握基本算术运算符的使用 + - * / %
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.333333 但是低层强制转换 只取整形,因此输出3
System.out.println(a *1.0/ b);//3.3333333 若要输出的是小数 则加上*1.0
System.out.println(3 / 2);//1
System.out.println(3 *1.0/ 2);//1.5
System.out.println(3 / 2*1.0);//1.0 运算时先算的3/2 再算*1.0 因此*1.0应该加在前面
System.out.println(a % b);//1 取余数即可
}
}
package com.itheima.operator;
public class OperatorTest01 {
public static void main(String[] args) {
//目标 拆分三位数 把个位 十位 百分位分别输出
int date=589;
//1.个位
int ge=date%10;
System.out.println(ge);
//2.十位
int shi=date/10%10;
System.out.println(shi);
//3.百位
int bai=date/100;
System.out.println(bai);
}
}
♦ +符号做连接符