Java系列3—运算符

运算符

运算符包括:

  • 算术运算符
  • 比较运算符
  • 逻辑运算符
  • 赋值运算符
  • 特殊的“+”运算符
  • 三元运算符/三目运算符

一、Java语言中的算术运算符

/*
	关于java编程中运算符:算术运算符
		+	求和
		—	求差
		*	乘积
		/	商
		%	求余数【取模】
		++	自加1
		--	自减1
	注意:
		一个表达式中有多个运算符,运算符有优先级,不确定的加小括号,优先级得到提升

*/
public class OperatorTest01
{
	public static void main(String[] args){
		int i = 10;
		int j = 3;
		System.out.println(i + j);  //13
		System.out.println(i - j);	//7
		System.out.println(i * j);	//30
		System.out.println(i / j);	//3
		System.out.println(i % j);	//1

		//1、关于++运算符【自加1】
		int k = 10;
		//运算符可以出现在变量后面【单目运算符】
		k++;
		System.out.println(k);  //11
		int x = 10;
		//++运算符可以出现在变量之前【单目运算符】
		int y = 10;
		++y;
		System.out.println(y);	//11
		//小结:++运算符可以出现在变量前,也可以出现在变量后,无论是变量前还是变量后
		//只要++运算结束,该变量值一定会自加1

		//++出现在变量后
		//规则:先做赋值运算,再对变量中保存的值进行自加1
		int a = 100;
		int b = a++;
		System.out.println(a);	//101
		System.out.println(b);	//100

		//++	出现在变量前
		//规则:先进行自加1运算,然后在进行赋值运算
		int m = 20;
		int n = ++m;
		System.out.println(m);	//21
		System.out.println(n);	//21
		
		//运算后加1
		int w = 10;
		System.out.println(w++);	//10
		System.out.println(w);		//11

		//先进行自加1操作
		int v = 20;
		System.out.println(++v);	//21
		System.out.println(v);		//21
		
		//2、关于--的操作
		int p = 11;
		System.out.println(p--);	//11
		int q = 11;	
		System.out.println(--q);	//10

	}
}

二、Java中的比较运算符

/**
	逻辑运算符
		>		大于
		>=		大于等于
		<		小于
		<=		小于等于	
		==		等于
		!=		不等于
	=	一个等号代表赋值
	==	两个等号判断是否相等

*/
public class OperatorTest02
{
	public static void main(String[] args){

		int a = 10;
		int b = 10;
		
		System.out.println(a > b);		//false
		System.out.println(a < b);		//false
		System.out.println(a == b);		//true
		System.out.println(a >= b);		//false
		System.out.println(a <= b);		//false
		System.out.println(a != b);		//false

	}
}

三、Java中的逻辑运算符

/*
	逻辑运算符:
		&		逻辑与(两边的算子都为真,结果才是真)
		|		逻辑或(两边的算子只要有一个是true,结果就为true)
		!		逻辑非(取反,!false就是true,!true就是false,这是一个单目运算符)
		^		逻辑异或(两边的算子只要不一样,结果就是true)	

		&&		短路与
		||		短路或
	
	1、逻辑运算符要求两边的算子都是布尔类型,并且最终的运算结果也是布尔类型
	2、短路与和逻辑与最终的运算结果是相同的,只不过短路与存在短路现象。
	3、短路或和逻辑或最终的运算结果是相同的,只不过短路或存在短路现象。
	4、什么情况下发生短路现象?
	5、什么时候选择使用逻辑与运算符?什么时候选择使用短路与运算符?
*/

public class OperatorTest03
{
	public static void main(String[] args) 
	{
		System.out.println(5>3 & 5>2);		//true
		System.out.println(5>3 & 5>6);		//false
		System.out.println(5>3 | 5>6);		//true
		System.out.println("--------");
		
		//逻辑与
		System.out.println(true & true);	//true
		System.out.println(true & false);	//false
		System.out.println("--------");
		
		//逻辑或
		System.out.println(true | false);	//true
		System.out.println("--------");
		
		//逻辑非
		System.out.println(!true);			//false
		System.out.println(!false);			//true
		System.out.println("---------");
		
		//逻辑异或
		System.out.println(true ^ false);	//true
		System.out.println(false ^ false);	//false
		System.out.println(true ^ true);	//false
		System.out.println("---------");

		//逻辑与和短路与
		int x = 10;
		int y = 8;

		//逻辑与:表达式的两边都会走
		System.out.println(x<y & ++x<y);	//false
		System.out.println(x);				//11
		System.out.println("---------");

		//短路与:第一个表达式不成立,第二个表达式就不再执行
		int a = 3;
		int b = 5;
		System.out.println(b<a && ++b<a);	//false
		System.out.println(b);				//5
		/*
		从某个角度来看,短路与更智能,由于后边的表达式可能不执行,
		所以执行效率比较高。这种方式在实际的开发中使用较多。
		短路与比逻辑与使用的多。短路与更常用。

		但是:在某些特殊的业务当中,要求运算符两边的算子必须全部执行,
		此时必须使用逻辑与,不能使用短路与,使用短路与可能导致右边的表达式不执行。
		*/

		/*
		什么情况下发生短路或?
			第一个表达式执行结果是true,会发生短路或
		
		什么情况下发生短路与?
			第一个表达式执行结果是false,会发生短路与。

		*/
	}
}

四、java语言中的赋值运算符

/*
	关于java中的赋值运算符:
		赋值类运算符包括两种:
			*	基本的赋值运算符
				=
			*	扩展的赋值运算符
				+=
				-=
				*=
				/=
				%=
		1、赋值类的运算符优先级:先执行等号右边的表达式,将执行结果赋值给左边
		2、注意以下代码:
			byte i = 10;
			i += 5;等同于:i = (byte)(i+5);

			int k = 10;
			k += 5;等同于:k = (int)(k+5)

			long x = 10L;
			int y = 20;
			y += x; 等同于:y = (int)(y+x)
		3、扩展类的赋值运算符不改变运算结果类型,假设最初的类型是byte,
			无论怎么追加或者追减,最终的数据类型仍然为byte。超出范围时
			可能会损失精度
			

*/
public class Operator01
{
	public static void main(String[] args){
		//基本的赋值运算符
		int i =10;
		System.out.println(i);	//10
		i = i + 5;
		System.out.println(i);	//15
	
		//扩展的赋值运算符【+= 运算符可以翻译为】
		i += 5;  //等同于:i=i+5;
		System.out.println(i);	//20

		i -= 5;  //等同于:i = i - 5
		System.out.println(i);	//15

		i *= 2;  //等同于:i = i*2
		System.out.println(i);	//30

		i /= 4;	 //等同于:i = i/4
		System.out.println(i);	//7

		i %= 2;  //等同于:i=i % 2
		System.out.println(i);	//1

		System.out.println("-----------");
		byte b = 10;
		
		//编译错误,
		//编译器只检查语法,不运行程序,编译器发现b+5的类型是int类型
		//大容量向小容量转换需要加强制类型转换,所以以下程序编译报错
		//b =b + 5;
		
		//纠正错误
		b = (byte)(b+5);
		System.out.println(b);	//15
		
		byte x = 10;
		x += 5;	//等同于:x = (byte)(x+5);
		System.out.println(x);	//15
		
		byte z = 0;
		z += 128;	//等同于:z=(byte)(z+128);
		System.out.println(z);	//-128

	}
}

五、关于java语言中的“+”运算符

/*
	关于java中的"+"运算符:
	1、+运算符在java中有两个作用
		* 加法作用
		* 字符串的链接运算
	2、当“+”运算符两边的数据都是数字的话,一定是进行加法运算。
	3、当“+”运算符两边的数据只要有一个数据是字符串,一定会进行字符串的拼接运算。
	并且,链接之后的结果还是是一个字符串类型。
		
		数字 + 数字 ----->  数字【求和】
		数字 + “字符串”  -------> “字符串”【字符串拼接】
		
	4、在一个表达式当中可以出现多个“+”,在没有小括号时,按照从左到右的顺序执行

*/
public class Operator02
{
	public static void main(String[] args){
		//要求:在屏幕中输出10+20=30
		int i = 10;
		int j = 20;
		System.out.println(i+"+"+j+"="+(i+j));
		
		//字符串用法
		String	username = "zhangsan";
		System.out.println("欢迎"+username+"回家!");

		String name = "lisi";
		System.out.println("欢迎"+name+"回家!");
	}
}

六、java语言中的三元运算符

/*
	三元运算符/三目运算符/条件运算符
		1、语法规则:
			布尔表达式 ? 表达式1 : 表达式2
		2、三元运算符的执行原理?
			当布尔表达式的结果是true时,选择表达式1作为整个表达式的结果
			当布尔表达式的结果是false的时候,选择表达式2作为整个表达式的执行结果
*/
public class Operator03
{
	public static void main(String[] args){
		// 编译报错:不是完整的语句
		// 10;
		
		// 编译报错:不是完整的语句
		// '男';
		
		// 编译报错:不是完整的语句
		// boolean sex = true;
		// sex ? '男':'女';
		
		//编译通过
		boolean sex = true;
		char c = sex ? '男':'女';
		System.out.println(c);	// 男

		// 错误: 不兼容的类型: 条件表达式中的类型错误
		// char m = sex ? "男":'女';

		// 纠正
		System.out.println(sex ? '男':"女的"); //男
	}
}

猜你喜欢

转载自blog.csdn.net/qq_42486675/article/details/106506986