day_03_运算符

  • 释义用于表示数据的运算、赋值和比较的一系列符号我们称之为运算符。
  • 分类

                       20200715105409145.png (692×349)

 

一、算术运算符

                                       算术运算符

/**
 * 算数运算符
 * 		+  -  *  /  %
 * 
 * 		++ , --
 * 			++ : 自身+1  等同于 i = i +1; 
 * 			-- 同上
 * 
 * 		i++ 和 ++i
 * 			i++ : 先赋值 后+1
 * 			++i : 先+1 后赋值
 * 
 * 优先级 : 单目>双目>三目
 * 		单目 : 就是指只有一个操作数, 比如 ++ 和 --  就是单目
 * 		双目就是两个操作数 , 比如 1+2
 * 
 */
public class Operator_01 {

	public static void main(String[] args) {
		int a = 10;
		int b = 3;
		System.out.println(a-b);
		System.out.println(a+b);
		System.out.println(a*b);
		// 注意 结果类型,是运算中最高的类型
		// 注意 a和b的类型  是 3 再+1.0  是 double类型的 4.0
		System.out.println(a/b+1.0);
		System.out.println(a%b);
		// 0.30000000000000004  千万不要使用小数比较相等
		System.out.println(0.1+0.2);
		
		// ++ : 自增+1,把对应空间的值 拿出来,+1 再放回去
		int s = 100;
		// i++ : 先赋值 后+1
		// ++i : 先+1 后赋值
		s = s + s++;
		System.out.println(s);
		
		int w = 10;
		w = w++ * w;
		System.out.println(w);
		
		int m = 10;
		int e = 2 + m++;
		System.out.println(e);
		System.out.println(m);
		
		int p = 2;
		p = 2 + p++ + ++p + p++ + ++p;
        //p = 2 + 2 + 4 + 4 + 6;  p=6
		System.out.println(p);
		
		int x = 10;
		x = 10 + x++ + ++x + (10*x++) + ++x;
        //x = 10 + 10 + 12 + 120 + 14;  x = 14
		System.out.println(x);
	}
}

 

二、比较运算符

                                      比较运算符

 

/**
 * 关系运算符
 * 		返回值是boolean类型 只有true和false
 * 
 * > , >= , < , <=  == , !=(不等于)
 * 
 *  == : 比较基本类型是比较值的大小 , 如果是比较引用类型,就比较内存地址
 *  
 *  	== 是比较相等  而 = 是赋值
 * 
 */
public class Operator_02 {
	public static void main(String[] args) {
		int a = 10;
		int b = 11;
		System.out.println(a == b);
        //false
		System.out.println(a >= b);
        //false
		System.out.println(a > b);
        //false
		System.out.println(a <= b);
        //true
		System.out.println(a < b);
        //true
		System.out.println(a != b);
        //true
	}
}

三、 位运算符

                                     位运算符1

                                    位运算符2

/**
 * 位运算符 
 * 		& : 位与 , 两边都是true,结果才是true  
 * 		|  : 位或 , 两边一个是true,结果就是true
 * 		! : 位非 , 取反, !true
 * 		^ : 位异或 , 两边不一样,结果就是true
 * 		~ : 按位非, 0 的二进制是 : 0000 0000  , ~0 之后, 1111 111, 这是补码,补码-1 得到反码 1111 1110 , 原码 1000 0001  就是-1
 * 
 * 		>> : 右移运算符(考虑符号位,再怎么移动,符号位不受影响),8 >> 2 = 2
 * 			转换为二进制 : 0000 1100 , 右移两位,向最左边+两个0(符号位之后),最右边,删除两位
 * 			正数 左边补0 , 负数 左边补1
 * 			右移几位  就等于 x / 2的n次方  
 * 		
 * 		<< : 左移运算符 , 同上取反,除变乘 
 * 
 * 		>>> : 右移运算符(不看符号位),只补0,不补1,正数不受影响,和 >> 一样,负数全变正数
 * 			-1 >>> 1 : 001111 11
 * 
 * 逻辑比较
 * 		&& : 且,短路与 , 和 & 一样,如果第一个是false,第二个就不执行了, 但是 &  第二个也会执行
 * 		|| : 或,短路或 , 如果第一个是true,第二个就不执行了, 但是 | 第二个会执行
 * 
 * 
 * & : 两边也可以是数字,如果是数字 就是要进行 与运算
 * 			8 & 9 : 把8和9转换为二进制,然后每位比较,如果都是1 就取1,否则就是0, 结果不会超过两个数中最小的一个
 * 
 */
public class Operator_03 {
	public static void main(String[] args) {
		System.out.println(~10);
        //-11
		System.out.println(-12>>2);
        // -3
		System.out.println(-2<<2);
        //-8
		System.out.println(1 >>>2);
        //0
 


		// 0000 0011
		// 0000 0101
		// 0000 0001
		System.out.println(3 & 5);
        //1
		System.out.println(true & true );
        //true
		System.out.println(true && true );
        //true
		System.out.println(true || false );
        //true
		System.out.println(true^true);
        //false
		System.out.println(!true);
        //false
		System.out.println(!(1<2));
        //false
		
		int a = 10;
		int b = 11;
		boolean flag = (a==b & a++>=b);
		System.out.println(flag);
        //false
		System.out.println(a);
        //11
	}
}

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值