Java基础篇--基本数据类型的运算规则,三元运算,++运算和逻辑运算

运算规则

  Java中有两种运算规则:第一种“自动转换”;第二种:强制转换。

自动转换


  自动转换的结论就是当容量小的数据类型与容量大的数据类型做运算的时候,结果会自动提升为容量大的数据类型(就跟大鱼吃小鱼一样,大的鱼把小的鱼出来就只会剩下大鱼了)

但是自动转换的前提之包括七种基本类型,不包括boolean类型的。

有三个特别的byte,char,short这三种数据类型进行运算的时候会自动转换为int类型,我感觉可能是他们容量并列,然后被int这个更大的鱼给吃掉了

数据容量大小排行:

byte,char,short--->int--->long--->float--->double

强制转换


强制转换需要用到强制转换符号()

强制转换的格式:

数据类型  名称  = (数据类型)装换类型名

要注意的是在强制转换的时候会出现精度损失。

例如我要将浮点型转变为整数型,浮点型后面的小数就会丢失

这里说的容量是数据类型的数的范围大小

byte sum1 = 24;//byte的范围:-128-127
        int sum2 = 234;//int的范围;-2147483648-2147483647
        int sum3 = sum1 + sum2;
        System.out.println("两个变量类型之和的结果:" + sum3);//范围不同的变量型相加时,最后结果需要大的变量型来储存结果
        System.out.println("-------------");
        byte sum4 = 25;
        int sum5 = 345;
        float sum6 = sum4 + sum5;//float的范围:-3.403E38-3.403E38
        System.out.println("两个变量类型之和的结果:" + sum6);
        System.out.println("-------------");
        short sum9 = 8547;
        double sum10 = sum9;
        System.out.println(sum10);//当整数型转换成为浮点型也可以,只是后面会加一个.0
        System.out.println("-------------");
        char num1 = 'a';
        int sum7 = 2325;
        int sum8 = sum7 + num1;
        //当char类型和其他的基本类型相加时,会把char类型转换为他相应的数值然后在进行相加
        System.out.println("两个变量类型之和的结果:" + sum8);
        System.out.println("-------------");
        char num4 = 'b';
        short num5 = 7845;
//		short num6 = num4 + num5;char的容量与short的容量一样大,所以不能用short类型的来接收char和short两个数据类型相加的结果
//		char num6 = num4 + num5;char和short是相同的相加都不可以 用
        int num6 = num4 + num5;//必须要使用大他们的类型来接收
        System.out.println(num6);
        System.out.println("-------------");
        double cj1 = 12.3;//精度损失
        int cj2 = (int) cj1;//截断操作
        System.out.println(cj2);//当浮点型的装换成为整数型的时候,小数点后面的数将会被舍去
        System.out.println("-------------");
        long cj3 = 451;
        short cj4 = (short) cj3;
        System.out.println(cj4);
        System.out.println("-------------");
        int cj5 = 250;
        byte cj6 = (byte)cj5;//精度损失
        System.out.println(cj6);
        System.out.println("-------------");
        long aj1 = 123457169745L;
        System.out.println(aj1);//当数值超过int范围的时候就要在相应的变量后面加上变量类型首字母
        System.out.println("-------------");
        float aj2 = 12.3F;
        System.out.println(aj2);//当是浮点型时除了double型之外,float要在数值后面加一个F
        System.out.println("-------------");
        byte aj3 = 12;
        int aj4 = aj3 + 1;//常量默认为int型,所以当一个别的比int小的整数型在与常量运算的时候,必须要用int接收
        System.out.println(aj4);
        System.out.println("-------------");
        float aj5 = 12.5F;
        double aj6 = aj5 + 1.2;
        System.out.println(aj6);//浮点型默认为double型,所以在运算时也要用double进行接收

 

 三元运算符

凡是可以使用到三元运算符的地方,都可以将他转换成if-else,反之,也成立。

格式


(条件表达式)?表达式1:表达式2。

说明


①条件表达式的结果必须为boolean类型,就是他最后结果只能反悔true会做false

②跟你条件表达式的truefalse,决定执行表达式1还是表达式2,如果表达式的结果为true,就执行表达式1;如果表达式的结果为false,就执行表达式2

③表达式1和表达式2的类型必须相同,要么就都是基本数据类型(例如int,float,char),要么就都是引用类型(例如String,数组)

④三元运算符是可以进行嵌套使用,就是可以进行套娃(例如:(条件表达式1)? ((条件表达式2)?表达式1:表达式2):((条件表达式3)?表达式3:表达式4));

如果遇到的程序既可以使用三元运算符也可以使用if-else结构,尽量优先使用三元运算符。原因:简洁,执行率高。

 Scanner cj = new Scanner(System.in);
        int a = 25;
        int b = 21;
        int max = (a > b)?a:b;
        System.out.println("最大值为:" + max);
        System.out.print("请输入第一个数字:");
        int c = cj.nextInt();
        System.out.print("请输入第二个数字:");
        int d = cj.nextInt();
        System.out.print("请输入第三个数字:");
        int e = cj.nextInt();
        int max1 = (c > d) ? ((e > c) ? e : c) : ((e > d) ? e : d);
        System.out.println(max1);

 ++运算


++和后++的区别:

①单独使用的时候,前++和后++是没有区别的

②混合使用的时候,前++和后++存着巨大区别:

A.如果是前++,那么变量会立马+1,然后拿着结果进行使用。(先加后用)

B.如果是后++,先使用变量当前本来都数据进行使用,然后在进行+1。(先用后加)

--和后--跟前++和后++的使用都是一样的,只不过--是进行-1操作,++是进行+1操作

 int sum = 10;
//        单独使用前++
        ++sum;
        System.out.println(sum);//11
//        单独使用后++
        sum++;
        System.out.println(sum);//12
        System.out.println("---------------");
        int sum1 = 20;
//        和输出语句一起混合使用,前++
        System.out.println(++sum1);//21
        System.out.println(sum1);//21
        System.out.println("---------------");
//        和输出语句一起混合使用,后++
        System.out.println(sum1++);//21
        System.out.println(sum1);//22

 逻辑运算符

基本逻辑运算符一共有四种,分支还有两种,一共六种

基本逻辑运算符


逻辑运算符号

&:当条件运算结果全是true才是true,如果有一个是false那就都是false,就跟中文的与(并且)一样。

:当条件运算结果至少有一个true就是true,否则全是false就是false,跟中文的或(或者)一样。

^:当条件运算结果相同就true,不同就是false,跟中文的异或一样

:当条件运算结果为true就是false,当时false就是true,就是中文的取反一样

注意事项


①逻辑运算符通常是用来连接多高布尔值。

②如果两个布尔值进行连接:布尔值A&布尔值B。

③如果多个布尔值进行连接:布尔值A&布尔值B&布尔值C。

④如果是取反运算符,那么只能用于一个布尔值身上:布尔值

&与|的分支


&的分支为&&

&&&的相同点:

&&&的运算结果相同

②当运算符号左边是true,二则都会执行符合右边的运算

&与&&的不同点:

①当符合左边为false是,&会继续执行右边的运算,&&不会继续执行右边的运算(就相当于电路短路一样)

的分支

的相同点:

的运算结果相同

②当运算符左边为false时,二则都会执行右边的运算

的不同点:

当符合的左边为true会继续执行符合右边的运算,而不在执行符合右边的运算

在开发中不推荐使用&&

boolean sum1 = false;
        int sum2 = 10;
        if(sum1 & sum2++ > 0) {//当与&进行逻辑运算的时候&前面的那个为false后面那个为true时,这一整个逻辑运算都为false
            System.out.println("我现在在北京");
        }else {
            System.out.println("我现在在南京");
        }
        System.out.println("sum2 = " + sum2);
        System.out.println("*********************");
        boolean sum3 = false;
        int sum4 = 10;
        if(sum3 && sum4++ > 0) {//当进行&&逻辑运算时,&&前面的为false后面那个为true时,这一整个逻辑运算符都为false
            System.out.println("我现在在北京");
        }else {
            System.out.println("我现在在南京");
        }
        System.out.println("sum4 = " + sum4);
        //区分|和||
        //相同1:|与||的运算结果相同
        //相同2:当运算符左边为false时,二者都会执行右边的运算。
        //不相同3:当符号的左边为true时,|继续执行符号右边的运算,而||不在执行符号右边的运算。
        //开发中推荐使用||
        boolean num1 = true;
        int num2 = 10;
        if(num1 | num2++ > 0) {//当与|行逻辑运算的时候&前面的那个为true后面那个为true时,这一整个逻辑运算都为true
            System.out.println("我现在在北京");
        }else {
            System.out.println("我现在在南京");
        }
        System.out.println("num2 = " + num2);
        System.out.println("*********************");
        boolean num3 = true;
        int num4 = 10;
        if(num3 || num4++ > 0) {//当进行&&逻辑运算时,&&前面的为true后面那个为true时,这一整个逻辑运算符都为true
            System.out.println("我现在在北京");
        }else {
            System.out.println("我现在在南京");
        }
        System.out.println("num4 = " + num4);
        int x = 2;
        int y = 2;
        if(x++ == 3 & ++y == 3) {
            x = 7;
        }
        System.out.println("x = " + x + " y = " + y);

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值