类型转换
原因:
在开发中会存在不同类型的变量或者数据赋值给其他类型的变量,也存在不同类型的数据一起运算,其结果类型要确定下来。
自动类型转换:
原理:
小范围类型的变量可以直接赋值给大范围类型的变量。
范围信息:
形式:
byte a=20;
int b=a;
注意:以下两种形式也是可以的。
char ch ='a';
int code =ch;
表达式的自动类型转换:
含义:
在表达时中,小范围类型的变量会自动提升成大范围运算。
结论:
表达式的最终结果的数据类型是由表达式的最高数据类型决定的,最高数据类型是什么,其结果数据类型就是什么。
注意:
byte,short,char 在表达式中是直接提升为int运算的。
案例题:
byte b1= 21; byte b2= 22;
byte b3=b1+b2; //这是错误的形式
int b3=b1+b2; byte b3=(byte)(b1+b2); //这两种是正确的
强制类型转换:
含义:
大范围类型的变量或者数据不能直接赋值给小范围类型的变量,否则报错!必须进行强制转换才可以。
格式:数据类型 变量 =(数据类型)其他类型的变量/数据。
注意:
1.强制类型转换可能会出现数据丢失的情况
int a =1500
byte b =(byte)a;//这段强制转换会出现数据丢失,导致b的结果不为1500
2.浮点型类型的变量或者数据强制转换成整型,保留整数部分进行返回,小数部分进行舍弃
double a=99.5;
int i=(int)a; //i==99
运算符:
基本算数运算符:
常见种类:
+ - * / %
注意:
1.两个整数相除的结果一定是整数。
例如:10/3==3
2.但如果需要最终结果为小数,在被除数前*1.0
例如:1.0*10/3=3.3333.....
+符号做连接符:
场景:
+符号与字符串一起运算时,充当连接符,连接后的结果还是一个字符串。
识别技巧:
能算则算,不能算就连在一起。
自增自减运算符:
++:
对变量进行+1操作。
--:
对变量进行-1操作。
注意事项:
只能操作变量,不能操作字面量:
a++; //没毛病
2++; //没有这个形式,会报错!
++ -- 单独使用,放在变量前后是没有区别的; 此时a++等价于++a。
++ --如果不是单独使用,放在变量前后就会有明显区别:
在变量前面:先+1 -1之后在使用变量
在变量后面:先使用变量,在对变量进行 +1 -1。
赋值运算符:
常见有:
=,+=,-=,*=,/=,%=
举例:a+=b
a+=b等价于:a=(a的类型)(a+b);
用处:
1.适合做数据的累加操作
int a=10;
int b=5;
a+=b; //15
2.自带强制类型转换
关系运算符:
常见有:==,!=,>,>=,<,<=
判断是否满足条件后返回true和false:
int age=19;
System.out.println(age>=18); //返回true
逻辑运算符:
与:
&(逻辑与):且的意思,必须前后都是true,结果才是true。
&&(短路与):且的意思,必须前后都是true,结果才是true。
区别:&&如果发现前面是false后面不执行,直接返回结果,性能较好一点,用的更多一点。
或:
| (逻辑或) :或的意思,只要前后有一个是true,结果就一定是true。
|| (短路或) : 或的意思,只要前后有一个是true, 结果就一定是true。
区别: ||如果发现前面是true后面不执行,直接返回结果,性能较好点,用的更多一点。
!:
取反操作 !false= true !true = false
^异或操作:
前后-样返回false ,前后不一样返回true
三元运算符:
三元运算符一做分支选择的,关键是格式是:条件表达式? 值1:值2; //若条件表达式为真,返回值1,为假返回值2.
运算符优先级:
运算符存在谁先谁后执行的情况:()优先级最高,* /优先级高于+ -,&&优先级高于||。
案例知识:键盘录入技术
Java自己提供好的程序给程序员调用的
API文档:应用程序编程接口,技术说明书,告诉我们该怎么使用Java的程序。
键盘录入技术:
import java.util. Scanner; //导包
Scanner sc = new Scanner(System.in); //创建一个扫描器对象
int age = sc.nextInt(); //等待用户接受数据 整型
String name = sc.next(); //等待用户接受数据 字符串类型