类型转换
为什么会发生数据类型转换呢?
不同数据类型的变量相互赋值时,会发生数值范围不匹配的问题,就需要类型转换
类型转换概念
把一种数据类型直接赋值给另外一种数据类型称为数据类型的转换
隐式类型转换(又叫做自动类型转换)
概念
又叫做自动类型转换,系统自动把小类型转为大类型
规则
数据范围从小到大
byte -> short/char --> int --> long --> float -- > double
图示
强制类型转换
概念
由大的数据类型转为小的数据类型,系统不能自动完成
格式
目标类型 变量名 = (目标类型)被转换的数据;
最纯粹的格式其实就是在你想转换的数据前面加个(目标类型)就可以了
注意事项
强制类型转换一般不推荐使用,因为可能会发生精度损失,数据溢出.只有你确定了我这个转换不会发生这些问题,或者就算出现了也无所谓的时候我们才用.
理解:相当于把大杯子里的水放到了小杯子里,(大范围->小范围)可能会有水的溢出等问题,所以计算机在编译的时候会给出提示.这个时候我们加上了强制类型转换相当于告诉计算机你尽管倒.
ASCLL码表
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码):包括了数字、英文、符号。
ASCII使用1个字节存储一个字符,一个字节是8位,总共可以表示128个字符信息,对于表示英文、数字来说是够用,但对于汉字来说就不够用了
运算符
算术运算符
+
+号**左右两边全都是数字**,执行的是**加法运算**。例如:5 + 5
+号在**字符**参与运算的时候,将**字符对应的码表值**进行运算 'a' + 2
+号在**字符串**参与运算的时候,做字符串的**拼接**
-
与数学中减相同
*
与数学中乘相同
/
/ 和数学中的除不太一样.两个整数相除只能得到整数,如果需要得到小数要求至少其中一个数是浮点数.
%
%取余数 比如10%3结果为1
应用场景:判断奇偶数(一个数对2取余,结果如果为0说明是偶数,不是0说明是奇数)
++ ,--
a++; //相当于 a = (a的数据类型) (a+1);
a--; //相当于 a = (a的数据类型) (a-1);
注意
++:自增
单独使用:不管放在变量的前面还是后面,都是将变量+1
参与运算:
如果++放在变量的前面,是先将变量+1.然后再参与运算
如果++放在变量的后面,是先将变量的原值进行参与运算。然后再+1
--:自减
单独使用:不管放在变量的前面还是后面,都是将变量-1
参与运算:
如果--放在变量的前面,是先将变量-1.然后再参与运算
如果--放在变量的后面,是先将变量的原值进行参与运算。然后再-1
赋值运算符
基本赋值运算符
=
代表将右侧的数据交给左侧的变量.
扩展赋值运算符
+=,-=,*=,/=,%=
只要知道一种的含义,其它的就都知道了,
但是需要注意一点: 扩展赋值运算符底层自带强转功能
比较(关系)运算符
== 比较左右两边是否相等,结果是布尔类型的
< 比较左边是否小于右边,结果是布尔类型
> 比较左边是否大于右边,结果是布尔类型
<= 比较左边是否小于等于右边,结果是布尔类型
>= 比较左边是否大于等于右边,结果是布尔类型
!= 比较左右两边是否不相等,如果不相等结果是true,否则是false
逻辑运算符
&& 与 并且 true & false
|| 或 或者 true | false
! 非 取反 非true则false。非false则true
^ 异或 相同为false , 不同才为true true^true=false true^false=true false^false=flase
短路:左边表达式的结果确定之后,如果整个表达式的结果已经被确定了,就不会去执行右边的表达式
&& (短路与) 双与 具有短路的效果 并且的意思 如果左边是false,右边就不再执行了
|| (短路或) 双或 具有短路的效果 或者的意思 如果左边是true,右边就不再执行了
三元(目)运算符
格式
数据类型 变量名= 比较表达式 ? 表达式1 : 表达式2
执行流程
先判断布尔表达式的结果,如果结果为true三元表达式的结果就是表达式1,否则就是表达式2
分支语句
if语句3种定义格式
格式1
if(比较表达式) {
语句体;
}
执行流程
判断比较表达式。如果是true,就执行语句体
如果是false。就不执行语句体了
示例代码
public class Demo02If {
public static void main(String[] args) {
System.out.println("今天天气不错,正在压马路……突然发现一个快乐的地方:网吧");
int age = 16;
if(age >= 18) {
System.out.println("进入网吧,开始high!");
}
System.out.println("回家学习");
}
}
注意事项
如果大括号中的语句体只有一行代码的时候可以把大括号省略.但是墙裂建议永远不要省略
格式2
if(比较表达式1) {
语句体1;
}else {
语句体2;
}
执行流程
先判断比较表达式的值。
如果为true,就执行语句体1
如果为false,就执行语句体2
示例代码
public class Demo03IfElse {
public static void main(String[] args) {
int num = 666;
if (num % 2 == 0) { // 如果除以2能够余数为0,说明是偶数
System.out.println("偶数");
} else {
System.out.println("奇数");
}
}
}
注意事项
①. 一旦执行了某一个大括号中的语句体,整个if语句就结束了.不可能出现执行两个语句体的情况.
②. 有else{}的情况下,不可能一个语句体都不执行.因为else{}是收尾工作,他的作用就是前边的条件不满足,那么就会执行它.
格式3
if(比较表达式1) {
语句体1;
}else if(比较表达式2) {
语句体2;
}else if(比较表达式3){
语句体3;
}else {
语句体n;
}
执行流程
判断比较表达式1的值。
如果是true,就执行语句体1.
如果是false,判断比较表达式2的值
如果是true,就执行语句体2.
如果是false,判断比较表达式3的值
如果是true,就执行语句体3
如果是false,就执行最后的else语句中的语句体n
示例代码
public class Demo04IfElseExt {
public static void main(String[] args) {
int a=10;
int b=20;
if(a>5){
System.out.print(1);
}else if(b>10){
System.out.print(2);
}else{
System.out.print(3);
}
System.out.print(4);
}
}
注意事项
首先开头有且仅有一个if,后面会有0个到多个else if语句,最后可能没有else,有也仅仅只会有一个else.
世界上最遥远的距离就是你在if里,我在else里,似乎一直相伴,却永远无法结伴而行.