java 操作符

算数操作符 


基本的有: + - * / %
自增 自减 :++ --  

i++; 先取值,再运算 
++i; 先运算,再取值

 

关系操作符

> 大于
>= 大于或等于
< 小于
<= 小于或等于
== 是否相等
!= 是否不等

 

逻辑运算符

&长路与,&&短路与

无论长路与还是短路与
两边的运算单元都是布尔值
都为真时,才为真
任意为假,就为假
区别
长路与 两侧,都会被运算
短路与 只要第一个是false,第二个就不进行运算了

 

| 长路或,||短路或;

无论长路或还是短路或
两边的运算单元都是布尔值
都为假时,才为假
任意为真,就为真
区别
长路或 两侧都会被运算
短路或 只要第一个是true的,第二个就不进行运算了

取反! 
真变为假 
假变为真

 异或^ 
不同,返回真 
相同,返回假

位操作运算符

通过Integer.toBinaryString() 方法,将一个十进制整数转换为一个二进制字符串

1

2

3

4

5

6

7

public class HelloWorld {

    public static void main(String[] args) {

        int i = 5;

           // 将一个十进制转换为一个二进制

        String b = (Integer.toBinaryString(i)); // 5的二进制的表达101

        System.out.println(i+" 的二进制表达是: "+b);

    }

}

  

位或

5的二进制是101 
6的二进制是110 
所以 5|6 对每一位进行或运算,得到 111->7

位与

5的二进制是101 
6的二进制是110 
所以 5&6 对每一位进行与运算,得到 100->4

异或

5的二进制是101
6的二进制是110
所以 5^6 对每一位进行异或运算,得到 011->3
一些特别情况:
任何数和自己进行异或 都等于 0
任何数和0 进行异或 都等于自己

1

2

3

4

5

6

7

8

9

10

11

12

public class HelloWorld {

    public static void main(String[] args) {

        int i  =5;

        int j = 6;

        System.out.println(Integer.toBinaryString(i)); //5的二进制是 101

        System.out.println(Integer.toBinaryString(j)); //6的二进制是110

        System.out.println(i^j); //所以 5^6 对每一位进行或运算,得到 011->3

        System.out.println(i^0);

        System.out.println(i^i);

    }

}

取非

5 的二进制是 00000101
所以取反即为 11111010
这个二进制换算成十进制即为-6

 

左移 右移

左移:根据一个整数的二进制表达,将其每一位都向左移动,最右边一位补0
右移:根据一个整数的二进制表达,将其每一位都向右移动

1

2

3

4

5

6

7

8

9

10

11

12

13

public class HelloWorld {

    public static void main(String[] args) {

        byte i = 6;

        //6的二进制是110

        System.out.println(Integer.toBinaryString(i));

        //6向左移1位后,变成1100,对应的10进制是12

        System.out.println(i<<1);

        //6向右移1位后,变成11,对应的10进制是3

        System.out.println(i>>1);

    }

}

带符号右移与无符号右移

带符号右移 >>
对于正数, 带符号右移 >> 会把所有的位右移,并在最前面补0
对于负数, 带符号右移 >> 会把所有的位右移,并在最前面补1
无符号右移>>>
如果是一个负数,那么对应的二进制的第一位是1
无符号右移>>>会把第一位的1也向右移动,导致移动后,第一位变成0
这样就会使得负数在无符号右移后,得到一个正数
简单的说:
带符号右移 >> 移动后正的还是正的,负的还是负的,符号不变
无符号右移>>>移动后,变正的了

二进制左移一位相当于*2;

二进制右移一位相当于/2;

2*16 = 2<<4;

左移要比乘法运算快,在某种情况下很适合

赋值操作符

对本身进行运算,并赋值

+=即自加
i+=2;
等同于
i=i+2;
其他的 -= , *= , /= , %= , &= , |= , ^= , >>= , >>>= 都是类似。

int i = 1;

i+ = ++i

输出为3

三元操作符

表达式?值1:值2
如果表达式为真 返回值1
如果表达式为假 返回值2

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

public class HelloWorld {

    public static void main(String[] args) {

 

        int i = 5;

        int j = 6;

 

        int k = i < j ? 99 88;

 

        // 相当于

        if (i < j) {

            k = 99;

        else {

            k = 88;

        }

 

        System.out.println(k);

 

    }

}

使用Scanner读取整数

注意: 使用Scanner类,需要在最前面导入

import java.util.Scanner;

1

2

3

4

5

6

7

8

9

10

11

import java.util.Scanner;

 

public class HelloWorld {

    public static void main(String[] args) {

        Scanner s = new Scanner(System.in);

        int a = s.nextInt();

        System.out.println("第一个整数:"+a);

        int b = s.nextInt();

        System.out.println("第二个整数:"+b);

    }

}

使用Scanner读取浮点数

1

2

3

4

5

6

7

8

9

10

import java.util.Scanner;

  

public class HelloWorld {

    public static void main(String[] args) {

        Scanner s = new Scanner(System.in);

        float a = s.nextFloat();

        System.out.println("读取的浮点数的值是:"+a);

 

    }

}

使用Scanner读取字符串

1

2

3

4

5

6

7

8

9

import java.util.Scanner;

  

public class HelloWorld {

    public static void main(String[] args) {

        Scanner s = new Scanner(System.in);

        String a = s.nextLine();

        System.out.println("读取的字符串是:"+a);

    }

}

读取了整数后,接着读取字符串

需要注意的是,如果在通过nextInt()读取了整数后,再接着读取字符串,读出来的是回车换行:"\r\n",因为nextInt仅仅读取数字信息,而不会读取回车换行"\r\n".
所以,如果在业务上需要读取了整数后,接着读取字符串,那么就应该连续执行两次nextLine(),第一次是取走回车换行,第二次才是读取真正的字符串

1

2

3

4

5

6

7

8

9

10

11

12

import java.util.Scanner;

   

public class HelloWorld {

    public static void main(String[] args) {

        Scanner s = new Scanner(System.in);

        int i = s.nextInt();

        System.out.println("读取的整数是"+ i);

        String rn = s.nextLine();

        String a = s.nextLine();

        System.out.println("读取的字符串是:"+a);

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值