类型转换

为什么会发生数据类型转换呢?

不同数据类型的变量相互赋值时,会发生数值范围不匹配的问题,就需要类型转换

类型转换概念

把一种数据类型直接赋值给另外一种数据类型称为数据类型的转换

隐式类型转换(又叫做自动类型转换)

概念

又叫做自动类型转换,系统自动把小类型转为大类型

规则

数据范围从小到大
byte -> short/char --> int --> long --> float -- > double

图示

隐式类型转换.png

强制类型转换

概念

由大的数据类型转为小的数据类型,系统不能自动完成

格式

目标类型   变量名 = (目标类型)被转换的数据;

最纯粹的格式其实就是在你想转换的数据前面加个(目标类型)就可以了

注意事项

强制类型转换一般不推荐使用,因为可能会发生精度损失,数据溢出.只有你确定了我这个转换不会发生这些问题,或者就算出现了也无所谓的时候我们才用.

理解:相当于把大杯子里的水放到了小杯子里,(大范围->小范围)可能会有水的溢出等问题,所以计算机在编译的时候会给出提示.这个时候我们加上了强制类型转换相当于告诉计算机你尽管倒.

ASCLL码表

ASCLL码表.jpg

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里,似乎一直相伴,却永远无法结伴而行.

最后修改:2023 年 04 月 10 日
如果觉得我的文章对你有用,请随意赞赏