Java运算符

Java运算符

Java运算符概述:

运算符是指明对操作数的运算方式。组成表达式的Java操作符有很多种(什么是操作数和操作符,例如1+2,其中1和2都是操作数,+是操作符,操作符和操作数联合起来构成表达式)。运算符按照其要求的操作数数目来分,可以有单目运算符(1个操作数)、双目运算符(2个操作数)和三目运算符(3个操作数)。运算符按其功能来分,有算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符、条件运算符、字符串连接运算符和其他运算符。常见的运算符如下表:

算术运算符+、-、*、/、%(取模)、++(自加1【单目】)、–(自减1【单目】)
关系运算符>、>=、<、<=、==、!=
逻辑运算符&(逻辑与)、|(逻辑或)、!(逻辑非)、&&(短路与)、||(短路或)
赋值运算符=、+=、-=、*=、/=、%=、^=、&=、|=、<<=、>>=
位运算符&(按位与)、|(按位或)、^(按位异或)、~(按位取反【单目】)、<<(左移)、>>(带符号右移)、>>>(无符号右移)
条件运算符布尔表达式?表达式1:表达式2 (三目)
字符串连接运算符+
其它运算符instanceof、new

运算符也是有优先级的,如果不确定优先级可以加小括号进行运算,添加小括号优先级是最高的。

1 算术运算符

public class NumTest {
    public static void main(String[] args) {
        int a = 10;
        int b = 3;
        System.out.println(a + b); //13
        System.out.println(a - b); //7
        System.out.println(a * b); //30
        /*
         * 在java语言中10除以3结果不是3.3333..
         * 因为java中有一个语法规则:int类型和int类型
         * 做运算,最终的结果还是int类型,所以10除以3
         * 的结果就是3,这个过程会取整数位。
         */
        System.out.println(a / b); //3
        /*
         * 10对3求余数,3乘3得9,余1。
         */
        System.out.println(a % b); //1
      
    }

运算结果:

image-20210729101713248
public class NumTest{
    public static void main(String[] args){
          /*
         * ++和--都是单目运算符,++负责自加1,--负责自减1
         * 以下程序重点研究++运算符,--运算符可以依照++运算
         * 符进行类推。
         */
        int i = 10;
        i++;
        System.out.println("i = " + i); //11
        int j = 10;
        ++j;
        System.out.println("j = " + j); //11
        /*
         * 根据以上的程序可以得出结论:++可以出现在变量前,也
         * 可以出现在变量后,无论是变量前还是变量后,只要执行完
         * ++,最终的结果都会让变量自加1。那么++出现在变量前
         * 和变量后到底有什么区别呢?请看以下程序
         */
        int k = 10;
        int m = k++;
        /*
         * 根据以上结论,++无论是出现在变量前还是变量后,只要++执行
         * 变量一定会自加1,那么k变量一定会自加1,所以以下输出k=11
         */
        System.out.println("k = " + k); //11
        /*
         * 以上int m = k++;代码中++和=两个运算符同时存在,
         * 那么此时这两个运算符哪个优先级高呢?java语法中是这样
         * 规定的,当++运算符出现在变量后,会先做赋值运算,再自
         * 加1,所以最后m = 10
         */
        System.out.println("m = " + m); //10
        int x = 10;
        int y = ++x;
        //上行代码执行结束后,我们可以确定x变量一定自加1了,所以x=11
        System.out.println("x = " + x); //11
        /*
         * java语法中又有这样的规定,++出现在变量前,会先进行自加1
         * 的操作,然后再做赋值运算,所以y = 11
         */
        System.out.println("y = " + y); //11
    }
}

运算结果:

image-20210729101752869
  • 两个int类型数据进行数学运算之后的结果一定是int类型;
  • ++或–可以出现在变量前也可以是变量后;
  • ++无论出现在变量前还是变量后,只要执行了++,那么变量必然会自加1;
  • ++出现在变量后会先进行赋值运算,再自加1;
  • ++出现在变量前会先自加1,再进行赋值运算。

2 关系运算符

public class RelationTest {
    public static void main(String[] args) {
        int a = 10;
        int b = 10;
        System.out.println(a > b);//false
        System.out.println(a >= b);//true
        System.out.println(a < b);//false
        System.out.println(a <= b);//true
        System.out.println(a == b);//true
        System.out.println(a != b);//false

        //比较两个字符串是否相等,不能使用“==”,
        //必须调用equals方法
        System.out.println("abc".equals("abc")); //true
    }
}

通过以上代码可以看出,任何一个关系运算符的运算结果都是布尔类型,最后的结果不是true就是false,没有其他值,并且我们也看到a变量和b变量在比较的时候是拿着变量当中保存的值进行比较。也就是说a == b实际上是拿着a变量中保存的10和b变量中保存的10进行比较,看它们是否相等

3 逻辑运算符

操作符例子结果描述
&true&truetrue(5>3)&(5>4):5大于3并且5大于4
|true|falsetrue(5>3)|(5>10):5大于3或者5大于10
!falsetruefalse取反是true,true取反就是false
^true^falsetrue异或运算符,只要两边的操作数不同,结果就是true
&&true&&truetrue短路与(&&)和逻辑与(&)实际上最终的运行结果是完全相同的,只不过短路与(&&)会存在短路现象。
||true||falsetrue短路或(||)和逻辑或(|)实际上最终执行的运行结果完全相同,只不过短路或(||)会存在短路现象。

4 赋值运算符

public class Test {
    public static void main(String[] args) {
        //基本的赋值运算符
        int i;
        i = 10;
        System.out.println("i = " + i);
        i = 100;
        System.out.println("i = " + i);
        //扩展的赋值运算符
        int x = 10;
        x += 1; //等同于x = x + 1
        System.out.println("x = " + x); //11
        int y = 10;
        y -= 1; //等同于y = y - 1
        System.out.println("y = " + y); //9
        int z = 10;
        z *= 2; //等同于z = z * 2
        System.out.println("z = " + z); //20
        int m = 10;
        m /= 3; //等同于m = m / 3
        System.out.println("m = " + m); //3
        int n = 10;
        n %= 3; //等同于 n = n % 3
        System.out.println("n = " + n); //1
    }
}

x +=1和x = x+1又不完全相同:

public class Test {
    public static void main(String[] args) {
        byte x = 1;
        // x=x+1;  error:byte类型跟int类型混合运算结果为int类型,int类型的不能赋值给byte类型
        x += 1; //相当于 x = (byte) (x + 1);
        System.out.println(x);
    }
}

5 条件运算符

public class Test {
    public static void main(String[] args) {
        boolean flag = true;
        int k = flag ? 1 : 0; //flag为true所以选1
        System.out.println("k = " + k); //1

        int x = 100;
        int y = 100;
        System.out.println(x == y ? "x和y相等" : "x和y不相等"); //x == y为true 所以x和y相等
    }
}

6 字符串连接运算符

public class StringTest {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = a + b; //加号两边都是int类型,执行求和运算
        /*
         * 以下代码虽然有两个加号,第一个加号在双引号当中,
         * 不起任何作用,只是一个普通字符串,第二个加号由于
         * 左边操作数是一个字符串,所以这个加号一定会进行
         * 字符串连接,连接之后的结果还是一个字符串。
         */
        System.out.println("a + b = " + c); //a + b = 30

        //定义一个字符串类型变量
        String name = "jack";
        /*
         * 字符串拼接在实际开发中很常用,拼接的时候是有口诀,大家记住,
         * 将变量放到字符串当中进行拼接,可以这样做:1、在拼接的位置添加
         * 一个英文双引号;2、在双引号中间添加两个加号;3、把字符串变量放到
         * 两个加号中间。
         */
        System.out.println("登录成功,欢迎" + name + "回来!");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值