运算符

  • 运算符的分类:
    * 1、赋值运算符 =
    * 2、算术运算符 + - * / %(模) ++ –
    * 3、复合运算符 += -= *= /= %=
    * 4、关系运算符 > >= < <= == !=
    * 5、逻辑运算符 && || !
    * 6、位运算符 & | ~ ^ << >>
    * 7、三目运算符 ?:
    * */

     //1、赋值运算符 =
     //作用是把等号右边的值,赋值给左边的变量。
     //左边一定是变量。
     /*int a = 5;//定义变量a,a的类型是int。把5赋值给a。
     //此次此刻a存放的值是5,我们称:a的值是5
     a = 100;//把100赋值给a,此时a是100。
     a = a + 20;//a变成了120
     System.out.println(a);
     
     int b = 50;
     a = a + b;//a变成了170
     System.out.println(a);
     
     //2、算术运算符 + - * / %(模) ++ --
     int m = 12;
     int n = 8;
     int sum = m + n;
     int result = m - n;
     int res = m * n;
     res = m / n;//注意:整数与整数相除,结果取整(抹掉小数部分)
     //除法里,除数不能为0
     //res = m / 0;
     System.out.println(sum);
     System.out.println(result);
     System.out.println(res);
     int x = 100;
     double b10 = 4;
     b10 = x / b10;
     System.out.println(b10);*/
     
     /*//%用于求余数。
     int a1 = 15;
     int b1 = 4;
     int c = a1 % b1;
     int d = a1 / b1;
     System.out.println(c);
     System.out.println(d);
     
     float e1 = 13.5f;
     float f1 = e1 % b1;
     System.out.println(f1);
     
     
     //求余数的时候,余数始终与被除数符号一致。
     int x1 = -8;
     int y1 = 5;
     int z1 = x1 % y1;
     System.out.println(z1);*/
     
     
     // ++ 自增运算符
     int num = 10;
    

// num++;//等价于num = num + 1;
// ++num;//等价于num = num + 1;
int num2 = 10;
int x = num–;//num = num + 1;
//int x = num++;
//等价于 int x = num;
// num = num + 1;
int y = --num2;//num2 = num2 + 1;
//int y = ++num2;
//等价于 num2 = num2 + 1;
//int y = num2;
//++在变量前面,先增1,再使用便令。
//++在变量后面,先使用变量,在增1

	System.out.println(num);
	System.out.println(num2);
	System.out.println(x);
	System.out.println(y);

// 复合运算符 += -= *= /= %=

	/*int number1 = 10;
	int number2 = 3;
	int result = 0;
	result += number1;
	//等价于 result  = result + number1;
	result -= number2;
	//等价于 result = result - number2;
	result *= number2;
	//等价于 result = result * number2;
	result /= number1;
	//等价于 result = result / number1;
	result %= number2;
	//等价于 result = result % number2;
	System.out.println(result);*/
	
	//4、关系运算符 > >= < <= == !=
	//关系运算符的运算结果一定是一个boolean

// int x = 3;
// int y = 5;
// boolean a = x != y;
// System.out.println(a);

// 5、逻辑运算符 && || !
//&& 逻辑与 表示并且,用来连接2个表达式。
//&&两侧的表达式都为真的时候,结果才为真。
//只要有一个表达式是假,结构就是假。
//注意事项:一旦发现&&前面的表达式为假了
//就不再计算后面的表达式了
//这个现象称为短路现象。
/int a = 10;
int b = 8;
int c = 12;
// boolean result = a >= b && a >= c;
//a >= b true
//a >= c false
boolean result = a >= c && (a++)==10;
System.out.println(result);
System.out.println(a);
/

	//|| 逻辑或 表示或者。
	//||左侧或者右侧有一个为true结果就是true。
	//只有在2者都是false的时候才为false。
	//如果 || 左侧的表达式为true,就不再计算||右侧的表达式了。
	int a = 10;
	int b = 8;
	int c = 12;
	//boolean result = a > c || a > b;
	boolean result = a >= b || (a++)==10;
	System.out.println(result);
	System.out.println(a);
	
	//! 逻辑非。作用就是取反。!右侧是一个表达式。
	//如果表达式值是true,整个表达式的结果就是false
	boolean h = !(a > b);
	System.out.println(h);

// 6、位运算符 & | ~ ^ << >>
int m = 8;
int n = 5;
int q = -5;
int r = m & n;
System.out.println®;
//8 0000 0000 0000 0000 0000 0000 0000 1000
//原 0000 0000 0000 0000 0000 0000 0000 1000
//反 0000 0000 0000 0000 0000 0000 0000 1000
//补 0000 0000 0000 0000 0000 0000 0000 1000
//5 0000 0000 0000 0000 0000 0000 0000 0101
//-5 1000 0000 0000 0000 0000 0000 0000 0101
//原 1000 0000 0000 0000 0000 0000 0000 0101
//反 1111 1111 1111 1111 1111 1111 1111 1010
//补 1111 1111 1111 1111 1111 1111 1111 1011
//机器码 最高位是符号位 0表示整数 1表示负数
//真值:真正的值,带正负号。是10进制数。
//原码(机器码)
//反码:正数的反码与原码相同,负数的反码:符号位不变,其他位取反。
//补码:正数的补码与原码相同,负数的补码:反码+1
//在内存里,整数都是按补码存放的。

//& 按位与。 &左右两侧是2个整数。
//计算规则,先把2个数转化位二进制(补码)。
//再按位与。相同位置的数都是1结果才是1,有一个是0,结果就是0
System.out.println(8&5);

// 0000 0000 0000 0000 0000 0000 0000 1000
//& 0000 0000 0000 0000 0000 0000 0000 0101
// 0000 0000 0000 0000 0000 0000 0000 0000

System.out.println(8&-5);

// 0000 0000 0000 0000 0000 0000 0000 1000
//& 1111 1111 1111 1111 1111 1111 1111 1011
// 0000 0000 0000 0000 0000 0000 0000 1000

//| 按位或。 |左右两侧是2个整数。
	//计算规则,先把2个数转化位二进制(补码)。
	//再按位或。相同位置的数都是0结果才是0,有一个是1,结果就是1
	System.out.println(8|5);

// 0000 0000 0000 0000 0000 0000 0000 1000
//| 0000 0000 0000 0000 0000 0000 0000 0101
// 0000 0000 0000 0000 0000 0000 0000 1101

	System.out.println(8|-5);

// 0000 0000 0000 0000 0000 0000 0000 1000
//| 1111 1111 1111 1111 1111 1111 1111 1011
// 1111 1111 1111 1111 1111 1111 1111 1011(补)
// 1111 1111 1111 1111 1111 1111 1111 1010(反)
// 1000 0000 0000 0000 0000 0000 0000 0101(原)
//
//~按位取反。以前是0变成1,以前是1变成0.
//也是先找补码,对补码取反。
//~8
// 0000 0000 0000 0000 0000 0000 0000 1000
// 1111 1111 1111 1111 1111 1111 1111 0111(补)
// 1111 1111 1111 1111 1111 1111 1111 0110(反)
// 1000 0000 0000 0000 0000 0000 0000 1001(原)
// -9
System.out.println(~8);

//~-5
// 1111 1111 1111 1111 1111 1111 1111 1011(补)
//~ 0000 0000 0000 0000 0000 0000 0000 0100(补)
// 0000 0000 0000 0000 0000 0000 0000 0100(反)
// 4
System.out.println(~-5);
// 取非的快速公式:~A = -(A+1);

// ^ 左右2侧是2个整数。也是先转换为二进制(补码)。
// 相同位置的数,相同为0,不同为1.
//8 0000 0000 0000 0000 0000 0000 0000 1000
//5 ^ 0000 0000 0000 0000 0000 0000 0000 0101
// 0000 0000 0000 0000 0000 0000 0000 1101
// 13
System.out.println(8^5);

// 数 << n位。<< 左侧是你要移动的数,右侧是要移动多少位。
//8 0000 0000 0000 0000 0000 0000 0000 1000
// 8<<3
// 0000 0000 0000 0000 0000 0000 0000 1000
// 0000 0000 0000 0000 0000 0000 0100 0000
// 64
// 左移几位相当于乘以2的几次方。
// 8 * 2^3

// 数 >> n位。>> 左侧是你要移动的数,右侧是要移动多少位。
//8 0000 0000 0000 0000 0000 0000 0000 1000
// 8>>2
// 0000 0000 0000 0000 0000 0000 0000 1000
// 0000 0000 0000 0000 0000 0000 0000 0010
// 2
// 右移几位相当于除以2的几次方。
// 8 / 2^2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值