运算符学习笔记

运算符



一、算术运算符

基本四则运算符:+ - * / %

1、除法

  • 代码示例:
public class TestDemo {
    
    
	public static void main(String[] args) {
    
    
		System.out.println(5/2);
		System.out.println(5.0/2);
		System.out.println((float)5/2);
		System.out.println((float)(5/2));
	}
}

运行结果:(自己的答案:2 2.5 2.5 2.0)

2
2.5
2.5
2.0
  • 代码示例:(不能除0
public class TestDemo {
    
    
	public static void main(String[] args) {
    
    
		System.out.println(5/0);
	}
}

运行结果:(java异常------java.lang.ArithmeticException叫做算术异常

Exception in thread "main" java.lang.ArithmeticException: / by zero
        at TestDemo.main(TestDemo.java:9)

2、取余

%表示不仅可以对int求模,也能对double求模 注意:

  • 10/-3 -10/3等情况 代码示例:
public static void main(String[] args) {
    
    
		System.out.println(10%3);
		System.out.println(-10%3);
		System.out.println(10%-3);
		System.out.println(-10%-3);
	}

运行结果:(自己的答案:1 -1 -1 1)

1
-1
1
-1

第三个错误原因:10除以-3商-3 余数是1 ; 第四个错误原因: -10除以-3商3(和是一个正数)余数是-1

  • 小数可以求余数

3、增量赋值运算符(符合运算符)

有 += -= *= /= %=

例如:a+ = 10 ------------a = a+10;

4、自增自减运算符

有 ++ –

代码示例:

int a = 10;
int b = ++a;//a先加在赋值给b   a=11
System.out.println(b);
int c = a++;//先c = a a=11 ;  在a++   a=12
System.out.println(c);//c=11

运行结果:

11
11

二、关系运算符

主要有六个: ==(判断相等) !=(不等于) > < <= >=

关系运算符的表达式返回值都是boolean类型

代码示例:

int a = 10;
		int b = 20;
		System.out.println(a == b);
		System.out.println(a != b);
		System.out.println(a < b);
		System.out.println(a > b);
		System.out.println(a <= b);
		System.out.println(a >= b);

运行结果:

false
true
true
false
true
false

三、逻辑运算符

主要有三个 : &&(且) || (或) !(非)

表达式返回值都是boolean类型

1、逻辑与

  • 表达式1 && 表达式2 (都为真表达式才成立)

  • 一旦表达式1为假,那么表达式2就不会执行了(短路求值)

    例如: System.out.println(10 > 20 && 10/0 == 0);
    运行结果:
    false (10/0会报错,为什么没有报错?-------10>20为假,后面的表达式2没有被执行)

2、逻辑或

  • 表达式1 || 表达式2 (其中一个真 就为真)

  • 一旦表达式1为真,那么就没有必要执行表达式2了 (短路或)

3、逻辑非

  • !表达式1

    int a = 10;
    int b = 20;
    System.out.println(!a < b);
    

    运行结果:

    错误: 一元运算符 '!' 的操作数类型int错误
                    System.out.println(!a < b);//改正:System.out.println(!(a < b));
    

    原因:在Java中 非只能运行于布尔类型数据上,举例:

    boolean flg = true;
    System.out.println(!flg);
    

    运行结果:false

四、位运算符

1、按位与&

  • 有 0 就是 0
    0000 1011
    0010 0010 &
    -----------
    0000 0010

3、按位或 |

  • 有 1 就是 1
	0000 0110
	0010 0011  |
	--------------
	0010 0111 

3、按位异或 ^

  • 一样为 0 ,不同为 1。 异:不一样的
  • 常用:0 ^ n = n; n ^ n = 0;
	0000 1011
	0010 0110 ^
	-----------
	0010 1101

4、按位取反~

  • 0 --》1 ,1–》0

小结

  • 如果操作数为布尔类型时,也表示逻辑运算。但是他们和&& || 相比,不支持短路求值

    例如:

    System.out.println(10 > 20 & 10/0 == 0);
    

    运行结果:程序异常

四、移位运算符

有三个:<< >> >>>

都是按照二进制位来运算的

举例:11的二进制0000 1011

1.右移>>

  • 11>>1 11右移1位(右移以后,最高位(前面的)为几就补几 0000 0101 -----5

    右移相当于是除法 11/(2^1)=5 移2位就是 11/(2^2)=2

    -1>>1 1111 1111 右移一个 1111 1111(它本身)

    位运算的速度是大于 乘法 除法的,

2.左移 <<

  • 11<<1 11左移1位(左移只补0 0001 0110 ------22)

    11<<2 0010 1100 -----44

    左移相当于乘法

3.无符号右移 >>>

  • -1 ----1111 1111 >>>1 0111 1111(只补0)

4. 没有无符号左移,没有意义

五、条件运算符

表达式1 ?表达式2 : 表达式3(三目运算符 是条件判断语句的简化写法)

当表达式1的值为true时,整个表达式的值为 表达式2, 表达式1为false,整个表达式的值为表达式3

六、运算符的优先级

乘除一定比加减高, 剩下的加括号

猜你喜欢

转载自blog.csdn.net/ccyzq/article/details/121874815
今日推荐