Java运算符和表达式(2)

Java运算符和表达式

运算符

  • 分割符: , ; {}
  • 赋值运算符: =
  • 算术运算符: + , - , * , / , % , ++ , –
  • 关系运算符: > , < , >= , <= , == , !=
  • 布尔逻辑运算符: ! , & , | , ^ , && , ||
  • 位运算符: & , | , , ~ , >> , << , >>>
  • 扩展赋值运算符: += , ―= , *= , /=
  • 字符串连接运算符: +
  • 造型操作符: ()
  • 三目运算: ?:
  • 运算符“+”除了用于数值类型的加法运算法,在字符串类型(String)数据中,它还是一个用于连接字符串的特殊的运算符。
package com03;

public class Demo1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a = 10, b = 20;
		int c = 0;
		
		c = a;
		a = b;
		b = c;
		/*
		 * 当+前后是字符串时,+作为字符串链接符使用,运算结果为字符串
		 * */
		System.out.println("a = " + a);
		System.out.println("b = " + b);
		
		System.out.println(45 + 3 + "ABC" + 8 + 3); // 48ABC83 
	}

}

递增/递减运算符

  • 对于需要对操作数进行加1或减1操作时,可以使用递增或递减运算符
  • 递增:++
  • 递减:–
package com03;

public class Demo3 {
	public static void main(String[] args) {
        /*
		 * ++ : 自增 a = a + 1
		 * 	前置++ : 先计算,后引用
		 * 	后置++ : 先引用,后计算
		 * -- :自减  a = a - 1
		 * 	前置-- : 先计算,后引用
		 * 	后置-- : 先引用,后计算
		 * */
        
		int a = 10;
		int b = 20;
		int c = 0;
        
		//20 - 20 + 10 -20 = -10
		c = b++ - --b + a++ - b; //11 20 -10
		System.out.println("a = " + a + " b = " + b + " c = " + c);
		//10 - 10 + 11
		c = --a - a++ + a; //11 20 11
		System.out.println("a = " + a + " b = " + b + " c = " + c);
		//11 + 9 - 20
		b = a-- + --a - b--; //9 0 11
		System.out.println("a = " + a + " b = " + b + " c = " + c);
		//9 - -1 + 11 - 11
		a = a++ - --b + c - ++a; //10 -1 11 
		System.out.println("a = " + a + " b = " + b + " c = " + c);
		//11 + 11 - 10 
		c = c-- + ++c - a--;//9 -1 12
		System.out.println("a = " + a + " b = " + b + " c = " + c);
		//9 + 11 + 10 + 10
		b = a++ + ++a + --a + a--; //9 40 12
		System.out.println("a = " + a + " b = " + b + " c = " + c);
	}
}

关系和布尔运算符

  • Java使用==号来判断两个值是否相等,而用!=来判断是否不等,用>、<来判断大于、小于而用>=、<=来判断大于等于小于等于逻辑运算符功能
  • !-- 逻辑非
  • & – 逻辑与
  • | – 逻辑或
  • ^ – 逻辑异或
  • &&-- 短路与
  • || – 短路或
package com02;

public class Test1 {
	//关系运算符
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a = 201;
		int b = 20;
		boolean result = false;
		//关系运算符得到的结果都是Boolean类型的值
		result = a != b;
		
		System.out.println(result); // true;
		/*
		 * 	与
		 * 		& :按位操作
		 * 		&& :逻辑操作
		 * 	或
		 * 		| :按位操作
		 * 		|| : 逻辑操作
		  *    非 !
		 * 
		 * 	区别
		 * 		位运算:可操作Boolean和整数型数据
		 * 		逻辑运算:只能操作Boolean类型数据
		 * */
		boolean b1 = true;
		boolean b2 = true;
		System.out.println("与 : " + (b1 & b2)); //与:ture;
		System.out.println("或 :" + (b1 | b2)); //或 :true;
		System.out.println("与 : " + (b1 && b2)); //与 : true;
		System.out.println("或 :" + (b1 || b2)); //或 :true;
		System.out.println();
		b1 = true;
		b2 = false;
		System.out.println("与 : " + (b1 & b2)); //与 : false;
		System.out.println("或 :" + (b1 | b2)); //或 :true;
		System.out.println("与 : " + (b1 && b2)); //与 : false;
		System.out.println("或 :" + (b1 || b2)); //或 :true;
		System.out.println();
		b1 = false;
		b2 = true;
		System.out.println("与 : " + (b1 & b2)); //与 : false;
		System.out.println("或 :" + (b1 | b2)); //或 :true;
		System.out.println("与 : " + (b1 && b2)); //与 : false;
		System.out.println("或 :" + (b1 || b2)); //或 :true;
		System.out.println();
		b1 = false;
		b2 = false;
		System.out.println("与 : " + (b1 & b2)); //与 : false;
		System.out.println("或 :" + (b1 | b2)); //或 :false;
		System.out.println("与 : " + (b1 && b2)); //与 : false;
		System.out.println("或 :" + (b1 || b2)); //或 :false;
		
		a = 10;
		b = 10;
		
		b1 = 8 > 10 | a++ < 11;
		b2 = 8 > 10 || b++ < 11;
		
		System.out.println(b1); // true;
		System.out.println(b2); // true;
		System.out.println("a="+a); // a=11;
		System.out.println("b="+b); // b=11;
		
		b1 = false;
		b2 = !b1;
		System.out.println(b1); // false;
		System.out.println(b2); // true;
	
	}

}

位运算符

  • ~ – 取反
  • & – 按位与
  • | – 按位或
  • ^ – 按位异或
package com02;

public class Test2 {
	//位运算符
	/*
	 * & 二进制 相同为1
	 * | 二进制 取1(不论相同与否)
	 * ^ 异或 : 相同为0  不同为 1
	 * n ^ 0 = n; n ^ n = 0;
	 * */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a = -1;
		int b = 13;
		
		int result = 0;
//		
//		result = a^b;
		
//		b = a ^ b;
//		a = a ^ b;
//		b = a ^ b;
		
		System.out.println(a); // 13;
		System.out.println(b); // -1;
		
		/*
		 * 	位移运算符
		 * 		<<左移,最低位补0
		 * 		>>右移  高位更具最高位进行补位
		 * 		>>>无符号右移 ,高位补0
		 * */
		result = a >>> 1;
		System.out.println(result); // 2147483647 (2的31次方减1)
	}

}

赋值运算符

  • 赋值运算符“=”是最常用的一种运算符。它将等于号右边的表达式的值赋给左边的变量。
  • 可以将其它的运算符和赋值运算符结合起来,作为“扩展”的赋值运算符:+=,-=,*=,/=,%=,=,&=,|=,>>=,<<=,>>>=
package com01;

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a = 17, b = 4;
		double d = 3;
		//内存初始化
		int result = 0;
		//赋值运算符 : 赋值运算符先算等号右边的内容
		//表达式运算的最终结果类型为:表达式中所有类型中最大的那个类型
		result = a % b; // 3.333  3
		
		System.out.println(result); // 1;
	}
package com02;

public class Test3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a = 10;
		int result = 0;
		
		result += a; // ===  result = result + a;
		System.out.println(result); // 10;
		result -= a; // ===  result = result - a;
		System.out.println(result); // 0;
		result *= a; // ===  result = result * a;
		System.out.println(result);// 0;
		result /= a; // ===  result = result / a;
		System.out.println(result);// 0;
		
		/*
		 * 	三目运算符
		 * 		boolean ? return1 : return2;
		 * */
		
		System.out.println(true ? 4 : 5); // ( boolean ? 真 : 假) 4;
	}

}

表达式

  • 表达式是运算符和操作数的结合,它是任何一门编程语言的关键组成部分
  • 表达式允许程序员进行数学计算、值的比较、逻辑操作以及在Java中进行对象的操作。
  • 所有的数学运算都认为是从左到右结合的,在Java中,大部分运算也是从左到右结合的,只有单目运算符、赋值运算符和条件运算符例外
  • 乘法和加法是两个可结合的运算,也就是说,这两个运算符左右两边的操作符可以互换位置而不会影响到结果
  • 下面的表格说明了各个运算符的优先顺序,优先级高的运算符放置在表的上部,而在同一行的运算符拥有同样的优先顺序。(从上到下 从左到右)
  • 除了单目运算符、赋值运算符以及条件运算符,其它的运算符都是从左到右结合的。
运算符说明
Java运算符
运算符说明
Java运算符
分隔符
. [] () , ;
等价
== !=
单目运算符
+ - ~ ! ++ expr --expr
按位与
&
创建或类型转换
New (type)expr
按位异或
^
乘法/除法
* / %
按位或
|
加法/减法
+ -
条件与
&&
移位
<< >> >>>
条件或
||
关系
< <= >= > instanceof
条件
?:
赋值
=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值