Java语言(运算符)

Java运算符

运算符的分类:
	算术运算符、赋值运算符、比较运算符、逻辑运算符、位运算符、三目运算符

算术运算符

算术运算符包括:
	+-*/%++==
	+-*/:分别是数学运算中的加减乘除;
	%: 取余;
	++:自增一;
	--:自减一;
代码举例:
	+-*/%
		int a=10;
		int b=20;
		int c=0;
		int d=0;
		int e=0;
		int f=0;
		int g=0;
		c=a+b;//运算结果为30;
		d=b-a;//运算结果为10;
		e=a*b;//运算结果为200;
		f=b/a;//运算结果为2;
		g=a%b;//运算结果为10;10/20得到的结果是商0余10,因此a%b=10。
	++--
		i++,++i的区别:
		当++--)单独使用时,++--)放前面或者放后面没有区别,要么自增一要么自减一;
			举例:
				int i=1;
				i++++i;//运算无区别,都是给i自增一
		但是当++--在运算式中混合使用时,会存在区别。
			举例:
			++在前:
				int i=1;
				int h=++i;//h=2;i=2;
			++在后:
				int j=1;
				int y=j++;//y=1;j=2;
		
	区别如下:
	当++在前时,在进行运算时先给i自增一,然后将i的值赋给h;因此++在前的运算结果为h=2;i=2。
	当++在后时,在进行运算时先将j=1的值赋给y,然后在给j进行自增一的运算;因此++在后的运算结果为y=1;j=2。

在Java语言中“+”不仅有运算的作用,还有其他的作用,加号作用如下:
	(1)数学方面相加的作用(两端都是数值做数学运算);
	(2)起一个连接符的作用(当“+”运算两边有任意一边是字符串,那么加号就会起一个连接符的作用,将两端内容拼接起来,形成新的字符串)。
	举例:
		System.out.println(2+3);//结果为:5
		System.out.println(2+"22");//结果为:222
		System.out.println("100"+100);//结果为:100100
		System.out.println(20+30+"50");//结果为:5050
		System.out.println("100"+20+30);//结果为:1002030
		System.out.println('a'+5);//结果为:102(在ASII表中:字符'a'表示的是数字97.后面每个英文字符依次类推。字符'A'表示数字65,依次类推。'0'表示数字48)。
		System.out.println("hello"+'a'+1);//结果为:helloa1
		System.out.println('a'+1+"hello");//结果为:98hello
		System.out.println("5+5="+5+5);//结果为:5+5=55
		System.out.println(5+5+"=5+5");//结果为:10=5+5
	

赋值运算符

赋值运算符包括:=+=-=/=%=
	举例:
		int a=10;//将10赋值给a;
	+=解释:
		int b=20;
		b+=20;//其实在运算过程中b+=20就相当于b=b+20。(-=、/=、*=、%=与+=类似)。	
	+=在运算时会帮你自动强制转换,当运算结果超过变量类型的范围会自动帮你进行强制类型转换
	举例:
		byte i=126;
		i+=10;
		System.out.println(a);
		//得到的结果为-120,并不是136,这个就是上面那句话的意思;

比较运算符

比较运算符包含:== ,!= , < , > , <= , >= , instanceof
	==表示等于(=代表赋值,在计算机语言中,判断两个值是否相等时用的是“==”符号);
	!=表示不等于的意思;
	其余的符号与数学运算相同(小于、大于,小于等于、大于等于)。
	举例:
		int a=100;
		int b=1000;
		boolean Dy=a==b;
		System.out.println(Dy);//输出结果为false。

注意: 比较运算符运算的结果均为布尔类型true /false

逻辑运算符

1.逻辑运算符包含:
&(并且) , |(或者) , !() , ^(异或) , &&(短路与) , ||(短路或)
2.逻辑运算符运算结论;
 	 &逻辑与:falsefalse|逻辑或:truetrue^逻辑异或:相同为false,不同为true!逻辑非:falsetrue,非truefalse。
  		 特点:偶数个不改变本身(举例:!!两个非回本身)。
3.逻辑运算符编程举例:
	int  a=10;
	int  b=20;
	boolean flag=a>b&a!=b;
	System.out.println(flag);//结果为:false
	boolean flag1=a>b|a!=b;
	System.out.println(flag1);//结果为:true
	System.out.println(true^true);//结果为:false
	System.out.println(false^true);//结果为:true
	System.out.println(!(1==1));//结果为:false
4.&&&的区别:
&运算时两边都进行运算,而&&在运算时,当左端为false时右端不再进行运算,当左端为true时右端继续进行运算
	int a = 20;
	int b = 20;
	boolean f = a < b & b++ > a;
	System.out.println("f:" + f);//false
	System.out.println("b:" + b);//21

	int i=20;
	int j=20boolean g = i < j && j++ > i;
	System.out.println("g:" + g);//false
	System.out.println("j:" + j);//20

5.|||的区别:
|两端都要进行运算;
||只要左端为true右端就不需要执行了,左端为false时右端需要执行。
	int h = 20;
	int y = 20;
	//boolean f1 = h < y | y++ > 20;
	//取消注释,执行代码boolean f1 = h < y | y++ > 20
	//注释boolean f1 = h == y || y++ > 20,得到的f1为false,并且y=21。
	boolean f1 = h == y || y++ > 20;
	System.out.println("f1:" + f1);//true
	System.out.println("y:" + y);//20



注意:
1、逻辑运算符一般用于连接boolean类型的表达式或者值。
在Java中我们要表示一个数大于3并且小于6 ,不可以写成3<x<6,应该写成 x>3 & x<6 。
2、表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子。
算术表达式:a + b
关系表达式:a == b

位运算符

1.位运算符包含:
  &()|()^(异或) , ~(按位取反) , <<(左移) ,>>(右移) ,>>>(无符号右移)
  注意事项:位运算是直接对二进制补码进行运算。运算效率高一些
2.位运算符中的&|^
举例
	int a=3;
	int b=4;
	int f=a&b;
	int j=a|b;
	int k=a^b;
	System.out.println(f);//0
	System.out.println(j);//7
	System.out.println(k);//7
原理:
	3的二进制是00000011
	4的二进制是00000100
	二进制计算时使用的是补码,正数的反码、补码与原码相同
	3&4(3的补码是:000000114的补码是:00000100)
	00000011&00000100=00000000;//0
	00000011|00000100=00000111//7
	00000011^00000100=00000111;//7
        负数计算方法与正数相同,不过负数需要进行计算反码以及补码,之后才可以进行上述计算。
3.按位取反~
正数的按位反:+9
	原码:00001001
	反码:00001001
	补码:00001001
	按位取反 1  1110110 补码    
 	 再推回原码
    	  1  1110110 补码
   	 -          1  
   	-----------------------------   
  	  1  1110101 反码
 	 取反
 	  ----------------------   
    	  1  0001010 原码 
      
	最后结果是: -10    
负数的按位取反:-9
	原码:1 0001001
	反码:1 1110110
	补码:1 1110111
	负数的补码按位取反:0 0001000 的到正数 正数的原反补一样
	最后结果是:8      
4.<<(左移)>>(右移)>>>(无符号右移)
   	<<:左移   空位补0,被移除的高位丢弃。
 	>>:右移   被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,高位补1>>>:无符号右移 被移位二进制最高位无论是0或者是1,空缺位都用0补。

注意:
位运算符总结特点:
(1)^位异或相同则0,不同则1;
(2)一个数被另外一个数位异或两次,该数不变;
(3)自己被自己位异或结果是0;
(4) << :把 << 左边的数据乘以2的移动次幂 例如 10 << 3 结果 10 * 2 ^ 3 = 80 ;
>> :把 >> 左边的数据除以2的移动次幂 例如 40 >> 3 结果 40 / 2 ^ 3 = 5
(5)位运算符运算速度高一些。

三目运算符

1.三目运算符语法:
	表达式?结果1:结果2
2.三目表达式执行流程:
	计算关系表达式的值,如果为true, 运算后的结果是表达式1;
	如果为false,运算后的结果是表达式23.代码举例:
	int num1=10;
	int num2=20;
	int num3=30;
	int max=num1>num2?num1:num2;
	int max2=max>num3?max:num3;
	System.out.println(max2);//结果为:30
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值