运算符学习笔记

运算符学习笔记,第1张

运算符学习笔记 运算符

文章目录
  • 运算符
  • 一、算术运算符
    • 1、除法
    • 2、取余
    • 3、增量赋值运算符(符合运算符)
    • 4、自增自减运算符
  • 二、关系运算符
  • 三、逻辑运算符
    • 1、逻辑与
    • 2、逻辑或
    • 3、逻辑非
  • 四、位运算符
    • 1、按位与&
    • 3、按位或 |
    • 3、按位异或 ^
    • 4、按位取反~
      • 小结
  • 四、移位运算符
    • 1.右移>>
    • 2.左移 <<
    • 3.无符号右移 >>>
    • 4. 没有无符号左移,没有意义
  • 五、条件运算符
  • 六、运算符的优先级


一、算术运算符

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

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

六、运算符的优先级

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5660603.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存