JavaSE——基础知识总结03之基本的运算符

Java基础知识之运算符

本次的知识总结是关于迄今为止乃至以后的Java学习或是开发中需要涉及到的所有运算符来进行一个知识总结,希望能给有缘人一些用处,也能给自己留下一些值得纪念和回忆的东西。



前言

本次的学习任务之中,所涉及的到的运算符有以下内容
在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

一、算数运算符的基本使用(+、-、*、/、%、++、–)

(1)、简单案例如下

由于这个模块的内容比较简单我就直接用案例来说明,毕竟小学的算数方式都知道,如果不知道的话就有点需要回炉重造了

int num1 = 10;
			int num2 = 5;
			int result = num1 + num2;
			System.out.println(result);//15
			System.out.println(num1 - num2);//5
			System.out.println(10 * 5);//50
			System.out.println(10 / 5);//2
			System.out.println(10 % 3);//1
			
			//++:自增1
			//++a:先自增1,再使用
			int a = 10;
			System.out.println(++a);//11
			System.out.println(a);//11
			
			//b++:先使用,在自增1
			int b = 10;
			System.out.println(b++);//10
			System.out.println(b);//11
			
			//--:自减1
			//--c:先自减1,再使用
			int c = 10;
			System.out.println(--c);//9
			System.out.println(c);//9
			
			//d--:先使用,在自减1
			int d = 10;
			System.out.println(d--);//10
			System.out.println(d);//9

示例:以上都是基本的算数运算符的基本使用,通过一些案例来进行解释。

重点解释:
关于自增(++),与自减(–)的具体使用与解释
1、自增(以 a++与 ++a作为案例解释)
a++:是先进行使用再自增,即:a如果被使用过一次了,下一次你看到a的话它将会是在原来的a上面增加过1的新a,并以此类推。
++a:是先进行自增然后使用,即如果给定一个原值 int a=1; 那么如果是 a=++a; 此时a的值为2。
2、自减(以a–与--a作为案例解释)
a–:是先使用再自减,与自增的规律相似。
–a:是先自减后使用,即如果给定一个原值 int a=1; 那么如果是 a=–a; 此时a的值为0。

(2)、深入算数运算符(以下需要对上一节内容的知识做回顾了,都是面试题)

//案例一:byte类型做运算,会向上转型成int
			byte b1 = 10;
			byte b2 = 20;
			//10 - byte - 8位(占两个字节):0000,1010
			//10 - int  -32位(占八个字节):0000,0000,0000,0000,0000,0000,0000,1010
			//20 - byte - 8位(占两个字节):0001,0100
			//20 - int  -32位(占八个字节):0000,0000,0000,0000,0000,0000,0001,0100
			//30 - int  -32位(占八个字节):0000,0000,0000,0000,0000,0000,0001,1110
			//30 - byte - 8位(占两个字节):0001,1110
			byte result = (byte)(b1+b2);//由于字面变量的类型不同所以需要进行强转
			System.out.println(result);//30
//案例二:short类型做运算,会向上转型成int
			short s1 = 10;
			short s2 = 20;
			short result = (short)(s1+s2);
			System.out.println(result);
//案例三:描述下列计算结果的类型
			byte b = 10;
			short s = 10;
			int i = 10;
			long l = 10;
			float f = 1.1F;
			double d = 2.2;
			System.out.println(b+s);//int类型
			System.out.println(i+s);//int类型
			System.out.println(l+s);//long类型
			System.out.println(i+l);//long类型
			System.out.println(i+f);//float类型
			System.out.println(i+d);//double类型
//案例四:浮点类型不能直接做运算,要做运算会使用BigDecimal
			double d1 = 0.5;
			double d2 = 0.4;
			System.out.println(d1-d2);//0.09999999999999998
//案例5:'a'的ASCII是97,这一块知识需要对ASCLL表进行熟悉,记住大写字母与小写字母之间的关系是小写字母比大写字母的值大32,即'a'比'A'大32,'a'为97 则'A'为65,相邻两个字母之间的数值相差1,
			char c = 'a';
			System.out.println(c+1);//98
		

(3)面试题部分

//经典面试题一:输出结果为?
			int a = 8;
			int b = (a++)+(++a)+(a*10);
			System.out.println(b);//118
			//a = 10
			//b = 8 + 10 + 10
//经典面试题二:输出结果为?
			int i =  0;   
			i = ++i; 
			//底层原理:
			//i = (int)(i+1);
			//i = i;
			System.out.println(i);//1
			
			int i = 0;   
			i = i++;  
			//底层原理:
			//int temp = i;--temp用于记录i最初的值
			//i = (int)(i+1);
			//i = temp
			System.out.println(i);//0 
			
			扩展:
			byte b = 10;
			++b;//底层:b = (byte)(b+1);
			short s = 10;
			++s;//底层:s = (short)(s+1);
			int i = 10;
			++i;//底层:i = (int)(i+1);
			long l = 10;
			l++;//底层:l = (long)(l+1);

二、赋值运算符(=、+=、-=、*=、/=、%=)

(1)、案例展示

            int i = 10;
			i += 10;//i = (int)(i+10);
			i -= 10;//i = (int)(i-10);
			i *= 5 ;//i = (int)(i*5);
			i /= 5 ;//i = (int)(i/5);
			i %= 3 ;//i = (int)(i%3);
			System.out.println(i);//1

(2)、面试题部分

//经典面试题一:输出结果为?
				//一次性声明多个变量
				int a,b; 
				a = b = 100;//把100赋值给b,b再赋值给a
				System.out.println(a);//100
				System.out.println(b);//100
//经典面试题二:下面的两种写法结果分别是?
				short s=1; 
				//s = s+1;//报错:short类型的变量s 与 int类型的数字字面量1 做运算的结果是int类型 ,因此必须强转

				short s=1; 
				s += 1;
				//s = (short)(s+1);
				
			//赋值规则:
						 s  + = 1				 s  = (T)((s) + (1) )
				//复合赋值 E1 op= E2等价于简单赋值 E1 = (T)((E1)op(E2)),
				//其中T是E1的类型。

三、关系运算符(==、!=、>、>=、<=)

(1)、案例展示

这里需要强调一点:所有的关系运算符的值都是boolean类型,即只有 true 与 false

代码如下(示例):

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

总结:1.=是赋值号,==是判断两个值是否相等
2.关系运算符运算的结果都是boolean值

(2)、面试题

//经典面试题一:输出结果为?
				int x = 10;
				int y = 10;
				boolean flag = (x == y);
				System.out.println(flag);//true
				flag = (x = y);//报错:boolean不能与其他类型兼容
				System.out.println(flag);
//经典面试题二:输出结果为?
				boolean b1 = true;
				boolean b2 = false;
				boolean b3 = (b1 == b2);
				System.out.println(b3);//false
				boolean b4 = (b1 = b2);
				System.out.println(b4);//false

四、逻辑运算符(&与 &&短路 |或 ||短路或 ^异或 !非)

(1)案例演示

//&与:前后两者都是boolean值,同时成立(true),结果才为true
			System.out.println(true & true);//true
			System.out.println(true & false);//false
			System.out.println(false & true);//false
			System.out.println(false & false);//false
			
			//&&短路与:前后两者都是boolean值,同时成立(true),结果才为true
			System.out.println(true && true);//true
			System.out.println(true && false);//false
			System.out.println(false && true);//false
			System.out.println(false && false);//false
			
			//& vs &&
			//&:判断前者为false后,才会判断后者
			//&&:判断前者为false后,不会判断后者,所以效率更高
			//ArithmeticException - 算数类异常
			System.out.println(false && 10/0>5);
			
			//|或:前后两者都是boolean值,有一个成立(true),结果就为true
			System.out.println(true | true);//true
			System.out.println(true | false);//true
			System.out.println(false | true);//true
			System.out.println(false | false);//false
			
			//||短路或:前后两者都是boolean值,有一个成立(true),结果就为true
			System.out.println(true || true);//true
			System.out.println(true || false);//true
			System.out.println(false || true);//true
			System.out.println(false || false);//false
			
			//| vs ||
			//|:判断前者为true,还会判断后者
			//||:判断前者为true,不会判断后者,所以效率更高
			System.out.println(true || 10/0>5);
			
			//^异或:前后两者都是boolean值,相同为false,不同为true
			System.out.println(true ^ true);//false
			System.out.println(true ^ false);//true
			System.out.println(false ^ true);//true
			System.out.println(false ^ false);//false
			
			//!非 - 置反
			boolean bool1 = true;
			System.out.println(!bool1);//false
			
			boolean bool2 = false;
			System.out.println(!bool2);//true

(2)、逻辑运算符的经典案例

这里引入了一个新的知识 Scanner类,是一个工具包 它的使用方式很简单以下面案例为基础可以仿造,含义:Java给我们提供的一个类,这个类的功能就是在控制台输入数据

import java.util.Scanner;
public class Test06{
	
	public static void main(String[] args){
		/**
			知识点:逻辑运算符的案例
			
			在dos窗口输入一个数字,判断是否在50~100的区间内
		*/
		
		//1.输入一个int数字
		Scanner scan = new Scanner(System.in);
		System.out.println("请输入一个int值:");
		int num = scan.nextInt();
		
		//2.判断是否在50~100的区间内
		boolean bool = num>50 && num<100;
		
		//3.输出结果
		System.out.println("该值是否在50~100的区间内:" + bool);
		
	}
}

五、字符串拼接符 ( +)

(1)案例演示

public class Test08{
	
	public static void main(String[] args){
		/**
			知识点:字符串拼接符 +
			
			+两侧都是数值,此符号为算术运算符
			+有一侧或者两侧是字符串,此符号为字符串拼接符
		*/
		
		System.out.println(1+2+"abc" + "def" +1+2);//3abcdeef12
		//				    3 +"abc" + "def" +1+2
		//					"3abc"	 + "def" +1+2
		//					"3abcdef"		 +1+2
		//					"3abcdef1"		   +2
		//					"3abcdef12"
		
	}
}

(2)拓展、表达式部分(看案例就行,很容易理解)

import java.util.Scanner;
public class Test09{
	
	public static void main(String[] args){
		/**
			知识点:表达式
			5+6:算数表达式
			5>6:关系表达式
			true & false:逻辑表达式
			
			
			知识点:三目运算符/三元运算符
			
			语法:
				数据类型 变量 = (表达式)?值1:值2;
				
			理解:
				表达式的结果必须是boolean类型
				true - 将值1赋值给变量
				false- 将值2赋值给变量
				
			做实验:
				int num = (false)?10:20;
				System.out.println(num);
			
			案例1:在控制台输入两个int类型的数字,输出最大值
				//创建Scanner类的对象scan
				Scanner scan = new Scanner(System.in);
				
				//输入两个数字
				System.out.println("请输入第一个数字:");
				int a = scan.nextInt();
				System.out.println("请输入第二个数字:");
				int b = scan.nextInt();
				
				//判断大小
				int max = (a>b)?a:b;//判断a是否大于b,如果大于就返回a,否则返回b
				
				//输出最大值
				System.out.println("最大值为:" + max);
				
			案例2:在控制台输入两个int类型的数字,输出最小值
				//创建Scanner类的对象scan
				Scanner scan = new Scanner(System.in);
				
				//输入两个数字
				System.out.println("请输入第一个数字:");
				int a = scan.nextInt();
				System.out.println("请输入第二个数字:");
				int b = scan.nextInt();
				
				//判断大小
				int min = (a<b)?a:b;//判断a是否大于b,如果小于就返回a,否则返回b
				
				//输出最大值
				System.out.println("最小值为:" + min);
				
			案例3:在控制台输入三个int类型的数字,输出最大值
				Scanner scan = new Scanner(System.in);
	
				System.out.println("请输入第一个数字:");
				int a = scan.nextInt();
				System.out.println("请输入第二个数字:");
				int b = scan.nextInt();
				System.out.println("请输入第三个数字:");
				int c = scan.nextInt();
				
				int max = (a>b)?a:b;
				max = (max>c)?max:c;
				
				System.out.println("最大值为:" + max);
				
			案例4:在控制台输入三个int类型的数字,由小到大输出
		*/
		
		
	}
}

六、三目运算符(以面试题+案例的方式)

public class Test10{
	
	public static void main(String[] args){
		/**
			
			知识点:深入三目运算符
			
			扩展面试题1:
				int a = 5;
				System.out.println((a<5)?10.9:9);//9.0
				
			扩展面试题2:
				char x = 'x';//'x' - ASCII - 120
				int i = 10;
				System.out.println(false?i:x);//120
				
			扩展面试题3:
				char x = 'x';//'x' - ASCII - 120
				System.out.println(false?100:x);//x
				System.out.println(false?65536:x);//120
				
			三目运算符返回值规则:
				1.值1和值2是常量的情况,就会按照取值范围大的类型返回数据
				2.值1和值2是变量的情况,就会按照取值范围大的类型返回数据
				3.值1是常量,值2是变量的情况,值1是否在值2所属类型的取值范围里
					在,就按照值2类型返回数据
					不在,就按照值1类型返回数据
		*/
	}
}

七、位运算符(&与 |或 ^异或<< 左移>> 右移>>>无符号位右移)

含义:将十进制的数据转换为二进制再进行运算

public class Test11{
	
	public static void main(String[] args){
		
			
			//&:同位比较,两者为1,结果才为1
			byte b1 = 23;//0001,0111
			byte b2 = 25;//0001,1001
						 //0001,0001
			//23 byte - 0001,0111
			//23 int  - 0000,0000,0000,0000,0000,0000,0001,0111
			//25 byte - 0001,1001
			//25 int  - 0000,0000,0000,0000,0000,0000,0001,1001
			//17 int  - 0000,0000,0000,0000,0000,0000,0001,0001
			//17 byte - 0001,0001
			byte result = (byte)(b1 & b2);
			System.out.println(result);//17 - 0001,0001
			
			//|:同位比较,两者有1,结果就为1
			byte b1 = 23;//0001,0111
			byte b2 = 25;//0001,1001
						 //0001,1111
			System.out.println(b1 | b2);//31 - 0001,1111
			
			//^:同位比较,两者相同为0,不同为1
			byte b1 = 23;//0001,0111
			byte b2 = 25;//0001,1001
						 //0000,1110
			System.out.println(b1 ^ b2);//14 - 0000,1110
			
			&|^:前后两者都是数值,该符号为位运算符
			&|^:前后两者都是boolean值,该符号为逻辑运算符
	}
}

八、转义字符(\n、"、’、\、\t)

案例演示

public class Test12{
	
	public static void main(String[] args){
		
			
			System.out.print("好好学习\n");
			System.out.print("好好学习\n");
			System.out.println("我说:\"好好学习\"");
			System.out.println("我说:\'好好学习\'");
			System.out.println("我说:\\好好学习\\");
			
			System.out.println("3*3=9\t3*4=12\t3*5=15");
			System.out.println("4*3=12\t4*4=16\t4*5=20");
			
			知识点:常量
			含义:在程序执行过程中不可变的量
			分类:
				1.数字字面量(ps:691002002.字面值常量(ps:"张三","李四"3.final(最终的)修饰的变量
					final int i = 100;
					System.out.println(i);
					
			//字面值常量和final(最终的)修饰的变量:存储在常量池中,直到项目结束才会被销毁
	}
}

九、任务总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了Java中的各种运算符的使用,而在以后的学习中会经常使用的,本次任务我想了一下用案例来解释会更加清晰一点,如果用词太专业了的话往往会造成意思不明的毛病,所以本次分享就到这里

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sugar-free->小粽子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值