Java操作符

Java操作符

操作符接受一个或多个参数,并生成一个新值。参数的形式与普通的方法调用不同,但效果是相同的。
操作符作用于操作数,生成一个新值。另外,有些操作符可能会改变操作数自身的值,这被称为“副作用”。那些能改变其操作数的操作符,最普遍的用途就是来产生副作用,但要记住,使用此类操作符生成的值与使用没有副作用的操作符生成的值,没有什么区别。
几乎所有的操作符都只能操作“基本类型”。例外的操作符是“=”、“==”、“!=”,这些操作符能操作所有的对象。除此之外Strig类支持“+”和“+=”。要注意的是System.out.println()语句中还包含“+”操作符。在这种上下文环境中,“+”意味着“字符串连接”并且如果必要,它还要执行“字符串转换”。

Java运算符分类

运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。运算符按照其要求的操作数数目来分,可以有单目运算符、双目运算符和三目运算符,它们分别对应于1个、2个、3个操作数。运算符按其功能来分,有算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符和其他运算符。

Java运算符

Java运算符优先级
当一个表达式中存在多个操作符时,操作符的优先级决定了各部分的计算顺序。下图是Java对运算符优先级顺序所做的规定。
这里写图片描述
Java运算符的作用及用法
1、方法调用[ ] . ( )

        int[] array = {1,2,3,4};//[]  声明一个数组
        array[0] = 2;//[]   属性获取  下标里面的内容
        System.out.println(array);
        System.out.println(array[0]);
        int len = array.length;//. 方法调用
        System.out.println(len);

运行结果如下
这里写图片描述
2、算术操作符
Java的算数操作符与其它大多数程序设计语言都是相同的,其中包括加号(+)、减号(-)、乘号(×)、除号(÷)以及取模(%)。整数的除法将会去掉小数位而不是四舍五入。

        System.out.println(10%3);//1  
        System.out.println(-10%3);//-1 
        System.out.println(-10%-3);//-1  
        System.out.println(10%-3);//1 

取模即为取余。运行结果为:
这里写图片描述

3、&&(与), ||(或), !(非),~(按位取反),|(按位或),&(按位与),^(按位异或),>>(右移),<<(左移),>>>(无符号右移)。双目运算符,运算时均把运算数转换为二进制再做比较


    public  static boolean fun1(int val){
        System.out.println("val < 1");
        return val < 1;// true
    }
    public  static boolean fun2(int val){
        System.out.println("val < 2");
        return val < 2;// false
    }
    public  static boolean fun3(int val){
        System.out.println("val < 3");
        return val < 3;//true
    }
    public static void main(String[] args) {
        boolean b1= fun1(0) && fun2(2) && fun3(1);
        //执行val < 1; true,return val < 2; false
        System.out.println(b1);
        boolean b2 = fun1(0) || fun2(2) || fun3(1);
        //执行val < 1; true
        System.out.println(b2);
        //boolean b1 = false;
        //boolean b2 = true;
}

这里写图片描述
||(或) 只要有一个真,后面一概不执行,有1则为 1,全0才为0。
&&(与) 只要有一个假,后面一概不执行,有0则为0,全1才为1。
~(按位取反):0变1,1变0。
|(按位或):当两边操作数的位有一边为1时,结果为1,否则为0。
&(按位与):当相同的位上均为1时结果为1,否则结 果为0。
^(按位异或):两边的位不同时,结果为1,否则为0.如1100^1010=0110。
(带符号右移)>>:使指定值的所有位都右移规定的次数。(高位是什么就在前面补什么)。
(带符号左移)<<:使指定值的所有位都左移规定的次数。丢弃最高位,0补最低位。
(无符号右移)>>>:忽略符号位扩展,0补最高位。

        byte b1 = 11;
        byte b2 = 13;
        byte b3 = (byte) (b1<<4);
        System.out.println(b3);

这里写图片描述
这里写图片描述

        int a2 = 10;
        a2++;//11
        ++a2;//11
        int a3 = a2++;//a3=10,a2=11
        int a4 = ++a2;//a4=12,a2=12
        System.out.println(a3);
        System.out.println(a4);

这里写图片描述
在这里,a3=a2++;表示把a2的值先寄存在一个临时变量tmp里,然后a2自增,最后将tmp的值赋给a3。而a4=++a2;表示a2先自增,然后把值寄存在一个临时变量tmp里,最后将tmp的值赋给a4。(i–,–i同理)。

        float f1 = 5/2;//5/2=2.5取整,再转为float类型为2.0
        float f2 = (float)5.0/2;//5.0/2=2.5
        float f3 = (float)5/2;//5/2=2.5强转为float类型为2.5
        float f4 =  5/(float)2;//5/2.0=2.5 
        System.out.println(f1);
        System.out.println(f2);
        System.out.println(f3);
        System.out.println(f4);

这里写图片描述

int a = 40;//赋值号
if(a == 40)//判断是否相等,if语句里面一定是一个布尔值false true,
千万不要写一个“=”
if(a != 40)//判断是否不相等
 int i = 1;
 int sum = 0;
 sum += i; //意思为 sum = sum + i; 

其他*=,/=,-=等均与+=类似。
三目运算符:expression ? sentence1 : sentence2

三目运算符用作判断,当expression的值为真时执行sentence1,否则执行 sentence2,相当于if + else。

if(expression){ 
      sentence1;
   } else {
      sentence2;
   }
   int b = 1,
   int c = 1 
   int a = 2;
   a >= 2 ? b++ : b--;
   b   // 2
   a < 2 ? c++ : c--;
   c   // 0

猜你喜欢

转载自blog.csdn.net/mars1997/article/details/79794885