java--运算符

一.java运算符的种类

计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组:

  1. 算术运算符
  2. 关系运算符
  3. 位运算符
  4. 逻辑运算符
  5. 赋值运算符
  6. 其他运算符

二.算术运算符

算术运算符包括:+,-,*,/,%,++,--

示例一:普通的加减乘除和取余运算

package com.it_01;

public class OperatorDemo {
    public static void main(String[] args) {
        int a = 3;
        int b = 5;
        
        //普通的加减乘除运算
        System.out.println("a+b:"+(a+b));
        System.out.println("a-b:"+(a-b));
        System.out.println("a*b:"+(a*b));
        System.out.println("a/b:"+(a/b));
        
        // 整数相除只能得到整数,要想得到小数,就必须有浮点数参与运算
        System.out.println(3 / 4.0);
        System.out.println(3.0 / 4);
        
        /*
         * %:取余运算符。得到的是两个相除数据的余数。
         * /:除法运算符。得到是两个相除数据的商。
         * 
         * %:判断两个数据是否整除。
        */
        System.out.println("a/b:"+(a/b));
        System.out.println("a%b:"+(a%b));
        
    }

}

运行结果为:

a+b:8
a-b:-2
a*b:15
a/b:0
0.75
0.75
a/b:0
a%b:3

示例二:有字符和字符串参与的运算

package com.it_01;

public class OperatorDemo2 {
    public static void main(String[] args) {
        //整数加法
        int a = 10;
        int b = 20;    
        System.out.println("a+b:"+(a+b));
        System.out.println("--------------------");
        
        //字符参与的加法
        char c = '0';
        char d = 'a';
        //字符与数字相加,是ASCLL码进行相加
        System.out.println("a+c:"+(a+c));
        System.out.println("a+d:"+(a+d));
        
        //字符与字符相加,也是对应ASCLL码进行相加
        System.out.println("c+d:"+(c+d)); 
        System.out.println("--------------------");
        
        
        //字符串参与的加法
        System.out.println("hello"+a);
        System.out.println("hello"+d);
        System.out.println("hello"+a+b);// "hello"+10,然后再和b进行拼接
        System.out.println(a+b+"hello");// 10+20 = 30,然后再和"hello"进行拼接

    }

}

运行结果:

a+b:30
--------------------
a+c:58
a+d:107
c+d:145
--------------------
hello10
helloa
hello1020
30hello

示例三:自增运算和自减运算

package com.it_01;
/*
 * ++,--运算符:对变量做加1或者减1的操作。
 * ++或者--既可以放在变量的后面,也可以放在变量的前面。
 * 单独使用的时候,++或者--无论是放在变量的前面还是后面,结果是一样的。
 * 参与操作的时候:
 *         如果++或者--在变量的后面,先拿变量参与操作,后变量做++或者--
 *         如果++或者--在变量的前面,先变量做++或者--,后拿变量参与操作
 */
public class OperatorDemo3 {
    public static void main(String[] args) {
        
        //单独使用自增或者自减的时候,++(--)放在前后的结果都是一样,结果都会加1
        int a = 10;
        int b = 20;
        a++;
        ++b;
        System.out.println("a:"+a);
        System.out.println("b:"+b);
        System.out.println("---------------");
        
        
        // 参与其他操作的时候,这个时候就会发生一些其他的变换
        int c = 30;
        int d = 40;
        int c1 = ++c;
        int d1 = d++;
        System.out.println("c1:"+c1);
        System.out.println("d1:"+d1);
        
        
        
    }

}

运行结果:

a:11
b:21
---------------
c1:31
d1:40

三.关系运算符

关系运算符包括:==,!=,>,>=,<,<=

 

package com.it_02;
/*
 * 关系运算符:
 *         ==,!=,>,>=,<,<=
 *         关系运算符的结果是boolean类型。
 * 
 * 注意:
 *         千万不要把==写成=
 */
public class OperatorDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 10;

        System.out.println(a == b);
        System.out.println(a == c);
        System.out.println("-----------------");
        System.out.println(a != b);
        System.out.println(a != c);
        System.out.println("-----------------");
        System.out.println(a > b);
        System.out.println(a > c);
        System.out.println("-----------------");
        System.out.println(a >= b);
        System.out.println(a >= c);
        System.out.println("-----------------");

        int x = 3;
        int y = 4;
        System.out.println(x == y);
        System.out.println(x = y);// 把y赋值给x,把x的值输出
        System.out.println("-----------------");
        
        boolean bb = (x == y);
        System.out.println("bb:"+bb);
        System.out.println("-----------------");
        
        //报错
        //boolean cc = (x = y); 布尔类型的值只能是true和false,不能和其他数据进行算术运算
        int cc = (x = y);
        System.out.println("cc:"+cc);
    }

}

运算结果:

false
true
-----------------
true
false
-----------------
false
false
-----------------
false
true
-----------------
false
4
-----------------
bb:true
-----------------
cc:4

四.位运算符

ava定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。

位运算符作用在所有的位上,并且按位运算。假设a = 60,b = 13;它们的二进制格式表示将如下:

示例代码:

package com.it_03;

public class OperatorDemo {
    public static void main(String[] args) {
        int a = 60; /* 60 = 0011 1100 */ 
         int b = 13; /* 13 = 0000 1101 */
         int c = 0;
         c = a & b;       /* 12 = 0000 1100 */
         System.out.println("a & b = " + c );
     
         c = a | b;       /* 61 = 0011 1101 */
         System.out.println("a | b = " + c );
     
         c = a ^ b;       /* 49 = 0011 0001 */
         System.out.println("a ^ b = " + c );
     
         c = ~a;          /*-61 = 1100 0011 */
         System.out.println("~a = " + c );
     
         c = a << 2;     /* 240 = 1111 0000 */
         System.out.println("a << 2 = " + c );
     
         c = a >> 2;     /* 15 = 1111 */
         System.out.println("a >> 2  = " + c );
      
         c = a >>> 2;     /* 15 = 0000 1111 */
         System.out.println("a >>> 2 = " + c );
    }

}

运行结果:

a & b = 12
a | b = 61
a ^ b = 49
~a = -61
a << 2 = 240
a >> 2  = 15
a >>> 2 = 15

 五.逻辑运算符

下表列出了逻辑运算符的基本运算,假设布尔变量A为真,变量B为假

示例代码:

package com.it_04;
/*
 * &&和&的结果一样
 * ||和|的结果一样
 * !是非,取相反的结果
 * 
 * &&和&的区别:
 *         &&如果左边是false,右边不执行。
 *         &无论左边是true还是false,右边都会执行。
 * 同理||和|的区别 和 &&和&的区别 是一样的
 */

public class OperatorDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int c = 30;
        System.out.println((a > b) && (a > c));// false && false
        System.out.println((a < b) && (a > c)); // true && false
        System.out.println((a > b) && (a < c)); // false && true
        System.out.println((a < b) && (a < c)); // true && true
        System.out.println("---------------");
        System.out.println((a > b) || (a > c));// false || false
        System.out.println((a < b) || (a > c)); // true || false
        System.out.println((a > b) || (a < c)); // false || true
        System.out.println((a < b) || (a < c)); // true || true
        System.out.println("---------------");

        int x = 3;
        int y = 4;
        // System.out.println((x++ > 4) & (y++ > 5)); // false & false
        System.out.println((x++ > 4) && (y++ > 5)); // false && false
        System.out.println("x:" + x); //x=4
        System.out.println("y:" + y);// y=4,因为(x++ > 4)不成立,所以(y++ > 5)不会被执行
        System.out.println("---------------");
        System.out.println(!(x==y));
        
        System.out.println("---------------");
        int x1 = 5;
        int y1 = 6;
//        System.out.println((x1 >4) | (y1++ > 5));  // 即使左边已经验证为真,还是会验证右边的
        System.out.println((x1 >4) || (y1++ > 5)); //验证左边为真后,就不会再验证后边
        System.out.println("x1:" + x1); 
        System.out.println("y1:" + y1);
    }

}

运行结果:

false
false
false
true
---------------
false
true
true
true
---------------
false
x:4
y:4
---------------
false
---------------
true
x1:5
y1:6

六.赋值运输符

下面是Java语言支持的赋值运算符:

示例代码:

package com.it_05;

/*
 * 赋值运算符:
 *         A:基本    =
 *         B:扩展    +=,-=,*=,...
 * 
 * +=:
 *         a+=20;
 *         相当于
 *         a = (a的数据类型)(a + 20);
 */
public class OperatorDemo {
    public static void main(String[] args) {
        // 把10赋值给int类型的变量a
        int a = 10;

        // += 把左边和右边的数据进行运算,最后赋值给左边。左边的只能是变量
        a += 10;// 相当于a = a + 10
        System.out.println("a:" + a);
        System.out.println("----------------------");

        short s = 10;
        // s += 20; // 相当于 s = s + 20;
        s = (short) (s + 20);
        System.out.println("s:" + s);
        
        //位运算符,
//        int c = 30;
//        System.out.println(c<<=2);
        
    }

}

运行结果:

a:20
----------------------
s:30

 

posted @ 2018-08-31 17:46  明-少  阅读(147)  评论(0)    收藏  举报