Java快速入门,运算符

运算符

1、 分类

​ 功能作用的不同分类:
​ 算数运算符
​ 赋值运算符
​ 比较运算符|关系运算符
​ 逻辑运算符
​ 条件运算符
​ 位运算符 (了解)

	操作数: 运算符左右两边的数据成为操作数  3+4
	表达式: 运算符连接左右两边的操作数整体称为表达式
	语句 : 以;结束
	
	操作数的不同分类:
		单目运算符|一元运算符: 操作数为1个   ++ --  +(正号) -(负号)
		双目运算符|二元运算符: 操作数为2个   a+b  -  * /
		三目运算符|三元运算符: 条件运算符

2、算数运算符

	+ 1)正号
		2)加法运算
		3)字符串的连接符
			当+左右两边一旦出现字符串,+作为字符串的连接符使用,最后会把左右两边的数据拼接成一整个字符串得到结果
	- 1)符号
		2)减法运算
	*
	/
	% 模以 取模  求余数
		操作1%操作数2  当操作数1<操作数2时候,结果为操作数1
	++ --
		
	**注意:**
		一个字符型数据参与运算(四则运算),会前转为十进制的整数再运算--> Unicode,ASCII
public class Class001_Operator{  
	
	public static void main(String[] args){ 
		//int i = 1;
		//System.out.println("i="+i);  //"i=1"
		//System.out.println("i = " + i);  //"i=1"
		
		System.out.println('a' + 1);  //98
		System.out.println("hello" + 'a' + 1);  //"helloa1"
		System.out.println('a' + "hello" + 1);  //"ahello1"
		System.out.println('a' + 1 + "hello" );  //"98hello"
		
		System.out.println(3%5);  //3
		System.out.println(12%5);  //2
		//编译不报错,运行时期会遇到一个异常  数学异常
		//System.out.println(12/0);  //java.lang.ArithmeticException: / by zero
		int i = 3;
		int result = i++ + ++i + i++ + ++i;
		System.out.println(i);  //
		System.out.println(result);  //

	}

} 

3、++ – 一元运算符

​ ++ 自增 自身+1
​ a++ ==> a = a+1;
​ ++a ==> a = a+1;
​ – 自减 自身-1
​ a-- --> a = a-1;
​ --a --> a = a-1;

​ 只影响操作数本身
​ ++放在操作数的前面或者后面,都是自身+1
​ --放在操作数的前面或者后面,都是自身-1

影响其他值(赋值,输出,表达式计算)
++|–放在操作数的前面,先+1|-1,然后再去运算
++|–放在操作数的后面,先参与运算,然后再自身+1|-1

public class Class002_Operator{  
	
	public static void main(String[] args){ 
		int a = 1;
		System.out.println(a);
		
		//只影响操作数本身
		a++;
		System.out.println(a);
		--a;
		System.out.println(a);
		
		//影响其他值
		int b = ++a;
		System.out.println(a); //2
		System.out.println(b); //2
		
		System.out.println(a--);   //2
		System.out.println(a); //1
		
		int c = a++ + 5;
		System.out.println(a);  //2
		System.out.println(c);  //6
	}

} 

4、赋值运算符

赋值运算符
基础赋值运算符 =
=是java中唯一一个自右向左运算的符号

扩展赋值运算符 (算数运算符+基础赋值运算符)
+= a+=b ==> a = a+b;
-=
*=
/=
%= a%=b ==> a = a%b;

缺点:
不直观
优点:
提高执行效率,编译期会自动优化为扩展赋值运算符
自动做强制类型转换

public class Class003_Operator{  
	
	public static void main(String[] args){ 
		int i = 1;
		
		int zhangsan = 100;
		int lisi = 90;
		int result  =0;
		
		result+=zhangsan; //result = result + zhangsan;
		result = result + lisi;
		
		System.out.println(result);
		
		short s = 100;
		//s  = (short)(s + 5);
		s  += 5;
		//++可以实现自动做强制类型转换
		s++;
		System.out.println(s);
	}

} 

5、比较运算符

比较运算符|关系运算符
> < >= <=
只能针对数值型|能够转为数值型的数据进行操作
== !=
可以针对任意类型数据进行操作
结果为boolean类型的运算符

public class Class003_Operator{  
	
	public static void main(String[] args){ 
		int a = 5;
		int b = 7;
		
		System.out.println(a>=b);  //false
		System.out.println(a+2 >=b); //true
		System.out.println(a+3 != b-1); //true
		
		System.out.println('a'+3 != 'b'-1); //true
		System.out.println('a'<'b'); //true
		
		String name1 = "zhangsan";
		String name2 = "zhangsan";
		System.out.println(name1==name2);
		
		//练习题  对下面代码进行注释
		double d=10/3;  //3.0
		a=10/3;  // 3
		System.out.println(a==d);    // true
		System.out.println(a);    // 3
		System.out.println(d);    // 3.0
		
		d=10/3.0;   //3.333
		a=10/3;    //3
		System.out.println(a==d);    // false
		System.out.println(a);    // 3
		System.out.println(d);    // 3.333
	}

} 

6、逻辑运算符

逻辑运算符:
& 与
一个为false就是false,两个都为true,结果才为true
| 或
一个为true就是true,两个都为false才是false
! 非 取反
!true->false
!false->true
^ 异或
相同为false,不同为true

短路运算符 : 当左边的操作数的值就能够决定最终的结果,右边操作数将不会执行

	短路与 : 与单与逻辑相同
	短路或 : 与单或的逻辑相同
	
推荐使用短路运算符
两边的操作数为boolean类型
结果为boolean类型结果
public class Class005_Operator{  
	
	public static void main(String[] args){ 
		System.out.println("---------------&---------------");
		System.out.println(true&false);  //false
		System.out.println(true&true);  //true
		System.out.println(false&true); //false
		System.out.println(false&false); //false
		System.out.println("---------------|---------------");
		System.out.println(true|false);  //true
		System.out.println(true|true);  //true
		System.out.println(false|true); //true
		System.out.println(false|false); //false
		
		System.out.println("---------------!---------------");
		System.out.println(!false); //true
		System.out.println(!true); //false
		
		System.out.println("---------------^---------------");
		System.out.println(true^false);  //true
		System.out.println(true^true);  //false
		System.out.println(false^true); //true
		System.out.println(false^false); //false
		
		System.out.println("---------------&&---------------");
		System.out.println(true&&false);  //false
		System.out.println(true&&true);  //true
		System.out.println(false&&true); //false
		System.out.println(false&&false); //false
		
		System.out.println(false && 5/0 == 0); //false
		//System.out.println(false & 5/0 == 0);
		
		System.out.println("=============练习=================");
		int a=10;
		int b=9;
		System.out.println(a>b & ++b>a);  //
		System.out.println("a="+a+",b="+b);  //
		System.out.println(a<b | b<a);    //
		System.out.println(!(a>b ^ a>9)); //
		System.out.println(10<5 && 10/0==0); //

	}

} 

7、条件运算符

​ boolean表达式 ?值1 : 值2;

boolean表达式  : 值为boolean类型的表达式
1)计算表达式,得到一个boolean结果
2)如果结果为true,条件运算符结果为值1
3)如果结果为false,条件运算符结果为值2
public class Class006_Operator{  
	
	public static void main(String[] args){ 
		//1)判断a是否>0   大于0或者不大于0
		int a = 10;
		int b = 0;
		int c = 15;
		String str = a > 0 ? "大于0" : "不大于0";
		System.out.println(str);
		
		//判断变量a是否为偶数
		str = a%2==0  ? "偶数" : "奇数";
		System.out.println(str);
		
		//求a,b中最大得到值
		int max = a>b ? a : b;
		System.out.println(max);
		
		System.out.println(a>b ? "a" : "b");
		
		//定义三个变量,求三个变量中最大的那个值
		max = a>b?a:b;
		max = max>c?max:c;
		
		System.out.println(max);
		
		max = a>b && a>c ? a : b>c ? b : c;
		System.out.println(max);
		
		//条件运算符: 具有自右向左的结合性
		//算数运算默认自左向右结合   a-b+c;
		//赋值运算具有自由向左的结合性  x=y=z;
		
		boolean x = true?true:false?false:false;
		boolean y = (true?true:false)?false:false; //自左向右结合
		boolean z = true?true:(false?false:false);  //自右向左结合
		
		//y=false   z=true
		System.out.println(x);
		System.out.println(y);
		System.out.println(z);
		
	}

} 

8、位运算符

​ 把操作数转为二进制,对二进制的操作数进行某种规则的运算,最终得到的二进制的结果再转为十进制

​ 一下三个 运算符,当操作数为boolean类型作为逻辑运算符,操作数为整数,作为位运算符

​ & : 两边的操作数转为二进制,同一位置的两个数,一个为0就是0,两个都为1才1,结果转为十进制
​ | : 两边的操作数转为二进制,同一位置的两个数, 一个为1就是1,两个都为0才是0,结果转为十进制
​ ^ : 两边的操作数转为二进制,同一位置的两个数, 相同为0,不同为1,结果转为十进制

9、位移运算符

​ << 左移 : 第一个操作数转为二进制,向左移动第二个操作数个位置,空位补0,结果转为十进制
​ >> 右移 : 第一个操作数转为二进制,向右移动第二个操作数个位置,移出的位置舍弃,结果转为十进制

	规律: 
		左移: 相当于*2的倍数    a<<b ==> a*2^b
		右移: 相当于/2的倍数    a>>b ==> a/2^b

位运算符的执行效率较高,因为针对二进制的数据
当想要对2或者2的倍数进行乘除,建议使用位移运算符效率更高
public class Class007_Operator{  
	
	public static void main(String[] args){ 
		System.out.println(3&2);  //2
		System.out.println(3|2);  //3
		System.out.println(3^2);  //1
		
		System.out.println(3<<2);  //12
		System.out.println(12>>2);  //3
		
		System.out.println(9>>2);  //2
		
	}

} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值