Java基础之运算符


一、运算符[重点]

常用的运算符

  • 赋值运算
  • 算术运算
  • 关系运算
  • 逻辑运算
  • 三目运算

2.1 赋值运算

将数据赋值给变量

= ,直接赋值
+= , -= , *= , /= 运算完再赋值

演示
public class Test01 {

    public static void main(String[] args) {

        /**
         *  = 赋值,将右边的赋值给左边
         *  注意,赋值时数据类型要匹配
         *  不匹配时需要强制转换
         */
        int a = 1;
        int b = (int)1.1;

        /**
         * += ,赋值
         *  是先+后赋值
         */
        int c = 1;
        // c += 3; // 相当于是c = c + 3
        c = c + 3;
        System.out.println("c = " + c);

        short s = 1;
        /** 通过下面的演示, += 会默认进行类型转换 */
        // s += 3;
        /** s是short,3是int,+后结果是int,赋值给short,类型不匹配 */
        // s = s + 3;
        s = (short)(s + 3);
        System.out.println("s = " + s);

    }
}

2.2 算术运算

算术运算是进行数学运算

+加 -减 *(乘) /(除) %(取余)
++

演示

public class Test02 {

    public static void main(String[] args) {

        /**
         * +
         * 1) 数字相加
         * 2) 当两边数字数据类型不一致的时候,
         *    运算完结果的数据类型是向大的转换
         * 3) 当遇到字符串,会做拼接
         *   只要遇到字符串,后续全部是拼接
         */
        int a = 1;
        int b = 2;
        int c = a + b; // 正常相加
        System.out.println("c = " + c);

        double d = 1.1;
        int e = (int) (a + d);// a是int,d是double,+后结果提升为double
        System.out.println("e = " + e);

        System.out.println(1 + 1);// 2
        System.out.println(1 + 1 + "1");//21
        System.out.println(1 + 1 + "1" + 1);//211
        System.out.println(1 + 1 + "1" + 1 + 1);//2111
        // 有括号先算括号
        System.out.println(1 + 1 + "1" + (1 + 1));//212

        /** =================================== */

        /**
         * - 减法
         * 1) 只能做数字相减
         * 2) 字符串不能相减
         */
        System.out.println(1 - 1);
        System.out.println(0 - 1);
        int f = 2;
        double g = 2.0;
        double h = f - g;

        /** =================================== */
        /**
         * *(乘法)
         * 1) 只能数字相乘
         */
        System.out.println(2 * 3 );
        System.out.println(2 * 3.0 );

        /** =================================== */

        /**
         * /(除法)
         * 1) 数字相除
         * 2) 整数相除取整,舍弃小数
         */
        System.out.println(4 / 2 );// 2
        System.out.println(4 / 2.0 );// 2.0
        System.out.println(10 / 3 );// 3,整数相除取整,舍弃小数
        System.out.println(10 / 4 );// 2,整数相除取整,舍弃小数
        System.out.println(10 / 4.0 );// 2.5

        /** =================================== */
        /**
         * %(取余,取模)
         * 场景: 1) 判断整除(判断余数是否为0)
         *      2) 判断奇偶性(除2判断余数是为0)
         */
        System.out.println(10 % 3 );// 余1

        // 练习题,分别求出三位数157的每一位(个十百位),然后输出
        int num = 157;
        int ge = num % 10;
        int shi = num / 10 % 10;
        int bai = num / 100;
        System.out.println("ge = " + ge);
        System.out.println("shi = " + shi);
        System.out.println("bai = " + bai);


        /** =================================== */
        /**
         * ++,--
         * 自增1,自减1
         */
        int i = 1;
        i++;
        System.out.println("i = " + i);
        i--;
        System.out.println("i = " + i);

        /**
         * 1) ++不管前后,本身会自增1
         * 2) j++,++在后数字在前,先把数字拿去使用,后本身自增
         * 3) ++k,++在前数字在后,先自增1,然后再使用
         * -------------------
         * 谁在前先用谁
         */
        int j = 1;
        int r = j++;
        System.out.println("j = " + j);//j=2
        System.out.println("r = " + r);//r=1

        int k = 1;
        int r2 = ++k;
        System.out.println("k = " + k);//k=2
        System.out.println("r2 = " + r2);//r2=2


        int x = 1;
        System.out.println(x++ );//1,x++,x在前,先拿去输出,然后x再自增
        System.out.println(x );//2
    }
}
练习 ++ - -

b =++a 先a+1,再进行b=a

package com.qf.operation;

public class Test03 {

    public static void main(String[] args) {
        int a = 10;
        int b = 10;
        int c = 10;

        a = c++;//a=10,c=11
        b = --a;//a=9,b=9
        c = ++b;//b=10,c=10

        System.out.println("a = " + a);//9
        System.out.println("b = " + b);//10
        System.out.println("c = " + c);//10

        int x = 5;
        int y = x-- + ++x - --x;
        System.out.println("x = " + x);//4
        System.out.println("y = " + y);//6
    }
}

2.3 关系运算

关系运算,是指变量之间关系,主要大小关系

> 
<
>=
<=
==  判断是否相等
!=  判断是否不相等

关系运算,结果是布尔类型,即true或者false

演示

public class Test04 {

    public static void main(String[] args) {
        /**
         * 关系运算,就是判断大小
         * 结果是布尔值,true/false
         */
        int a = 1;
        double b = 2.0;
        boolean r = a > b;
        System.out.println("r = " + r);

        System.out.println(1 < 0 );// false
        System.out.println(1 > 0 );// true
        System.out.println(1 >= 1 );// true
        System.out.println(1 == 1 );// true
        System.out.println(1 != 2 );// true

        /**
         * 特殊的,String字符串只能使用==或者!=来进行判断
         */
        System.out.println("abc" == "ABC" );// false
        System.out.println("abc" != "abc" );// false

        /** 关系运算主要是后续放在if,for这些判断中去使用 */
    }
}

2.4 逻辑运算

逻辑运算是在关系运算基础上升级的, 实现关系的并列或者选择等操作

  • 与 &
  • 或 |
  • 非 !

逻辑运算的结果是布尔值: boolean,

演示

public class Test05 {

    public static void main(String[] args) {
        /**
         * & (与,和,and)
         * 语法
         *    boolean 变量 = 布尔表达式1 & 布尔表达式2;
         * 作用:
         *   条件并列,全对才对,一错就错
         */
        System.out.println(1 > 0 & 1 > 0);// T & T = T
        System.out.println(1 > 0 & 1 < 0);// T & F = F
        System.out.println(1 < 0 & 1 > 0);// F & T = F
        System.out.println(1 < 0 & 1 < 0);// F & F = F


        System.out.println("------" );
        /**
         * | (或,or)
         * 语法
         *    boolean 变量 = 布尔表达式1 | 布尔表达式2;
         * 作用:
         *   条件选择,一对就对,全错才错
         */
        System.out.println(1 > 0 | 1 > 0);// T | T = T
        System.out.println(1 > 0 | 1 < 0);// T | F = T
        System.out.println(1 < 0 | 1 > 0);// F | T = T
        System.out.println(1 < 0 | 1 < 0);// F | F = F

        System.out.println("----" );
        /**
         * ! , (非,not)
         * 语法:
         *    boolean 变量 = !布尔表达式;
         * 作用:
         *    对布尔值取反
         */
        System.out.println(!true );
        System.out.println(!(1 > 0) );
        System.out.println(!(1 > 0) | 1 > 0 );
    }
}

短路与,短路或

  • &&
  • ||

总结: 当前面第一个式子能够决定整体结果时,后面的式子就短路不再执行

强烈建议: 以后只要用到了逻辑运算,全部使用双的 ,即 && , ||

		int i = 1;
        // & 无论如何,两边式子都会执行
        // System.out.println(1 < 0 & ++i > 0 );
        // && ,因为&是一错就错,当第一个式子结果为错的时候,
        // 后面的短路跳过不再执行
        System.out.println(1 > 0 && ++i > 0);
        System.out.println("i = " + i);

        int j = 1;
        // | 两边都会执行
        // System.out.println(1 > 0 | ++j > 0);
        // || ,一对就对,前面的式子已经对了
        // 后面的式子就短路不执行
        System.out.println(1 > 0 || ++j > 0);
        System.out.println("j = " + j);

2.5 三目运算

语法:

数据类型 变量 =  布尔表达式 ? true时执行此处 : false时指出此处;

执行顺序:

  • 先判断表达式,如果结果是true,就执行?后,:前的地方,后面不再执行
  • 如果结果是false,就跳过:前的, 而是执行:后的


public class Test06 {

    public static void main(String[] args) {
        /**
         * 数据类型 变量 = 布尔表达式?true时执行此处:false时指出此处;
         */
        int r = 1 < 0 ? 1 : 0;
        System.out.println("r = " + r);

        int a = 1;
        double b = 2.0;
        String r2 = a > b ? "a较大" : "b较大";
        System.out.println("r2 = " + r2);

        // 重点是
        // 1) 语法写法
        // 2) 执行流程
        // 3) 返回值数据类型
    }
}
  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值