JAVA基础语法-运算符

运算符

算术运算符

/* 算数运算符 +、-、*、/、%、++、-- ++、–
使用方式:单独使用 参与运算
当++、–出现在操作数的后面时,先传值再自加1
/自减1
当++、–出现在操作数前面时,先自加1/自减1再
传值
*/

class SuanShu{
	public static void main(String[] args) {
		//操作+
		/*int a=3;
		int b=4;*/
		//+(求和、字符串连接符)
		/*System.out.println(a+b);//求和
		//数值类型的数据和字符进行求和时
		//先把字符转成对应的编码值再进行求和
		System.out.println(a+'a');//求和
		//字符串常量和任意数据进行拼接
		System.out.println(a+"a"+'a');//拼接*/

		//操作-
		//0.20000000000000018---不是精确结果
		//小数没有精确运算
		/*double d=2.1-1.9;
		System.out.println(d);*/

		//操作/
		/*int a=6;
		int b=2;*/
		//ArithmeticException---算术异常
		//System.out.println(a/0);
		//Infinity-正无穷大 -Infinity-负无穷大
		//java支持小数除0
		//System.out.println(-a*1.0/0);
		//NaN---Not A Number不是一个数
		//0/0.0  0.0/0.0
		//System.out.println(0.0/0);
		//0
		//当参与操作的都是整型数据结果依然是整型数据
		//System.out.println(2/4);
		//当参与操作的数据出现小数结果就是小数
		//System.out.println(2*1.0/4);
		
		
		//操作%
		/*int a=3;
		int b=4;
		//%左边数据的正负决定了结果的正负
		System.out.println(a%b);
		System.out.println(-a%b);
		System.out.println(a%-b);
		System.out.println(-a%-b);*/
		
		
		//操作++、--
		int a=3;
		//int b=--a;//参与运算
		//System.out.println(a++);//单独使用
		//System.out.println(++a);//单独使用
		//3++ +(--4)+(3--)+(++2)
		//a=3 4  3  2  3
		//左边变量值改变之后会影响右边变量的值
		int c=(a++)+(--a)+(a--)+(++a);

		//byte、short、char做++/--时
		//底层会默认添加强制类型转换
		byte b1=127;
		b1++;
		short s=-32768;
		s--;
		System.out.println(s);	
	}
}

赋值运算符

/* 赋值运算符 =把右边的值赋值给左边 扩展赋值运算符(底层强制类型转换)
+=、-=、*=、/=、%=、&=(按位与等)、|=(按位或等)、^=(按位异或等)、 >>=(右移等)、<<=(左移等)、>>>=(无符号右移等) */

class FuZhi{
	public static void main(String[] args) {
		//定义变量
		/*int a=3;
		int b=4;
		a+=b;//a=a+b;*/
		//
		/*byte b=2;
		//b=b+3;b+3为int类型
		b+=3;//b=b+3;底层默认添加强制类型转换
		System.out.println(b);//7*/

		//支持定义形式
		//int a=1,b=2,c=3;
		//不支持连等定义
		//int a=b=c=3;
		//支持连等赋值
		int a=3;
		//展开从右往左计算
		//b=3+=3-=3=3*5=15
		//b=3+=3=3-15=-12
		//b=3=3+(-12)=-9
		//int b=a+=a-=a*=5;

		//b=3+=3-=3*=3++
		//右边变量的值改变了不会影响左边已经编译好的值
		int b=a+=a-=a*=a++;
		System.out.println(b);//-9
		System.out.println(a);	
	}
}

关系(比较)运算符

/* 关系(比较)运算符(结果值一定是布尔值) ==、!=、>、<、>=、<= a>b>c a>b b>c */

class BiJiao{
	public static void main(String[] args) {
		//操作==
		System.out.println(2==4);
		//操作>=
		System.out.println(5>=0);
		//操作!=
		System.out.println(4!=5);
	}
}

逻辑运算符

/* 逻辑运算符 用于连接左右两边布尔值 &(逻辑与)、|(逻辑或)、^(逻辑异或)、!(逻辑非)
、&&(双与)、||(双或) 总结:
1.&:遇见false则false
2.|:遇见true则true
3.^:相同则false,不同则true (吸铁石 同性相斥、异性相吸)
4.!:结果值取反(当出现偶数个时结果不变)
&&(双与)、||(双或)(常用)
&&和&运算规律一致,但是当&&左边出现false时,右边默认不执行—短路效果
||和|运算规律一致,但是当||左边出现true时右边默认不执行—短路效果
*/

class LuoJi{
	public static void main(String[] args) {
		//定义变量
		int a=1;
		int b=2;
		int c=3;

		//操作&
		System.out.println((a>b)&(b>c));//false&false  false
		System.out.println((a>b)&(b<c));//false&true  false
		System.out.println((a<b)&(b>c));//true&false  false
		System.out.println((a<b)&(b<c));//true&true   true

		//
		System.out.println("---------------------");
		
		//操作|
		System.out.println((a>b)|(b>c));//false|false false
		System.out.println((a>b)|(b<c));//false|true  true
		System.out.println((a<b)|(b>c));//true|false  true
		System.out.println((a<b)|(b<c));//true|true   true

		//
		System.out.println("---------------------");
		
		//操作^
		System.out.println((a>b)^(b>c));//false^false false
		System.out.println((a>b)^(b<c));//false^true  true
		System.out.println((a<b)^(b>c));//true^false  true
		System.out.println((a<b)^(b<c));//true^true   false

		//
		System.out.println("---------------------");

		System.out.println(!(!(b>c)));//true


		//
		System.out.println("---------------------");


		//操作&&
		//和逻辑与的运算规律一致
		System.out.println((a>b)&&(b>c));//false&&false  false
		System.out.println((a>b)&&(b<c));//false&&true  false
		System.out.println((a<b)&&(b>c));//true&&false  false
		System.out.println((a<b)&&(b<c));//true&& true   true


		//
		System.out.println("---------------------");

		//a=1 b=2 c=3
		//||出现在&&的左边且||出现短路
		//就会把后面的内容以及&&一并短路掉
		System.out.println((true)||(a++==b)&&(b>c--));
		System.out.println(a);//1
		System.out.println(c);//3	
	}
}

位运算符

/*

位运算符
数据转成二进制补码形式

 &(按位与)、|(按位或)、^(按位异或)、~(按位取反)

 、>>(右移)、<<(左移)、>>>(无符号右移)

*/

class WeiSuanDemo1{
	public static void main(String[] args) {
		//定义变量
		int a=2;
		int b=3;
		//操作&
		System.out.println(a&b);//2
		//操作|
		System.out.println(a|b);//3
		//操作^
		System.out.println(a^b);//1
		//操作~
		System.out.println(~a);//-3	
	}
}
/*
00000000 00000000 00000000 00000010 int 2补码
00000000 00000000 00000000 00000011 int 3补码
//操作& 遇0则0 任意整数&1==0 一定是偶数
//任意整数&正数 一定是正数
00000000 00000000 00000000 00000010
00000000 00000000 00000000 00000011
------------------------------------
00000000 00000000 00000000 00000010  2

//操作| 遇1则1 任意整数|0  一定是本身
//任意整数|负数 一定是负数
00000000 00000000 00000000 00000010
00000000 00000000 00000000 00000011
-----------------------------------
00000000 00000000 00000000 00000011  3

//操作^ 相同则0不同则1 任意整数^0 一定是本身
00000000 00000000 00000000 00000010
00000000 00000000 00000000 00000011
------------------------------------
00000000 00000000 00000000 00000001  1

//操作~
//所有位按位取反
00000000 00000000 00000000 00000010
-----------------------------------
11111111 11111111 11111111 11111101  负数 补码
11111111 11111111 11111111 11111100  反码
10000000 00000000 00000000 00000011  原码  -3
*/



*

位运算符
>>(右移)、<<(左移)、>>>(无符号右移)
>>(右移):当正数进行右移时,右移几位就在最 左边位(最高位)补上几个0。当负数进行右移时, 右移几位就在最高位补上几个1。 <<(左移):无论正负数进行左移时,左移几位就在 最低位补上几个0。
>>>(无符号右移):无论正负数进行右移时,右移几位 就在最高位补上几个0。

class WeiSuanDemo2{
	public static void main(String[] args) {
		int a=12;
		//操作>> a/2`移动位数
		System.out.println(a>>2);//3
		//操作<< a*2`移动位数
		System.out.println(a<<2);//48
		//操作>>>  结果一定是正数
		System.out.println(a>>>2);//3	
	}
}
/*
00000000 00000000 00000000 00001100 int 12补码


//操作>> 2
[00]00000000 00000000 00000000 000011(00)
-----------------------------------
00000000 00000000 00000000 00000011 3

//操作<< 2
(00)000000 00000000 00000000 00001100[00]
------------------------------------
00000000 00000000 00000000 00110000 48


//操作>>> 2
[00]00000000 00000000 00000000 000011(00)
-----------------------------------------
00000000 00000000 00000000 00000011 3
*/

*/

/* 按位异或的扩展结论(当一个整数按位异或上另 一个整数两次结果还是本身)
*/

class WeiText1{
	public static void main(String[] args) {
		int a=2;
		int b=5;
		System.out.println(a^a^b);//5
		System.out.println(b^a^b);//2
	}
		}

/* 需求:两个数值交换
效率高低:按位异或(整数)、求和(一般是整数)、中间变量(常用 任意数据、简单)
*/

class WeiText2{
	public static void main(String[] args) {
		//定义变量
		int a=4;
		int b=5;

		//
		System.out.println("a的值:"+a+",b的值:"+b);

		/*//1.中间变量
		int temp=a;
		a=b;
		b=temp;
		//
		System.out.println("a的值:"+a+",b的值:"+b);*/

		//2.按位异或
		/*a=a^b;
		b=a^b;//b=a^b^b=a
		a=a^b;//a=a^b^a=b
		//
		System.out.println("a的值:"+a+",b的值:"+b);*/

		//3.求和
		a=a+b;
		b=a-b;//b=a+b-b=a
		a=a-b;//a=a+b-a=b
		//
		System.out.println("a的值:"+a+",b的值:"+b);
	}
}

三目(元)运算符

/* ~a(一元) a+b(二元) 三目(元)运算符(结果一定是一个值) 格式
布尔表达式?表达式值1:表达式值2;
流程
先去计算出布尔表达式的值,如果是true返回
表达式值1,如果是false返回表达式值2.
*/

class SanMuDemo{
	public static void main(String[] args) {
		//求两个整数的最大值
		/*int a=1;
		int b=2;
		//把三目返回值赋值给新变量
		//两个表达式值得类型要小于等于接收值的类型
		int max=a>b?'a':b;
		System.out.println(max);*/

		//求三个整数最大值
		int a=1;
		int b=2;
		int c=3;
		//三目嵌套
		System.out.println(a>b?(a>c?a:c)
		:(b>c?b:c));


	
		
		
		
	}
}

() ~ ++ – ! * / % + - << >> >>> 关系 逻辑 & | ^ 三元 赋值 |

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值