Java基础(五)---- 运算符
Java基础(五)---- 运算符
首先了解一下相关概念
 运算符: 进行特定操作的符号,例如“+”
 表达式: 用运算符连起来的式子叫做表达式
一、算术运算符
1.分类
| 符号 | 含义 | 
|---|---|
| + | 加法运算,字符串连接运算 | 
| - | 减法运算 | 
| * | 乘法运算 | 
| / | 除法运算 | 
| % | 取模运算(两数相除取余数) | 
| ++、- - | 自增,自减运算 | 
2.代码练习
public class Operator01 {
	public static void main(String[] args) {
		//先加减再打印
		System.out.println(20+30);//结果为50
		//两个变量的运算
		int a = 10,b = 5;
		System.out.println(a-b);//结果为5
		//强制类型转换
		double c = 10.00000000001;
		int d = (int)c;
		System.out.println(d);//结果为10
		//除法运算
		int e = 56,f = 7;
		int g = e/f,h = e%f;
		//System.out.println(e/f);//结果为8
		//System.out.println(e%f);//结果为0
		System.out.println(g+"......"+h);//结果为8......0
		//一旦运算中有不同的数据类型,则按数据类型更大的那种进行计算
		int j = 10;
		double i = j * 2.013;
		System.out.println(i);//结果为20.13
	}
}
3.“+”常用的三种方法
- 对于数值就是加法
- 对于字符char来说在计算之前会被提升为int,然后再计算(char本身为数字)
- 对于字符串String 来说,“+”代表字符串的连接操作
4.自增,自减运算
-  自增运算符:++ 
-  自减运算符:- - 
-  含义:让一个数字加一或者减一 
-  格式:写在变量名之前,例如++a,- -a;写在变量名之后,例如a++,a- - 
-  使用方式 
 (1)单独使用:不混和于其他步骤,使自己成为一个独立的步骤
 (2)混合使用:和其他操作混合,例如与赋值混合,或者与打印混合等
-  使用区别 
 (1)单独使用时:前++和后++没有任何区别 (都会加一)
 (2)混合使用时:前++先自增再使用;后++先使用后自增
-  自增,自减运算符使用练习 
public class Operator02{
   	public static void main(String[] args) {
   		//1.单独使用
   		int n1 = 10;
   		System.out.println(n1);//结果为10
   		++n1;//先自增
   		System.out.println(n1);//结果11
   		n1++;//后自增
   		System.out.println(n1);//结果为12
   		//可以看出不论++在前还是在后,运行结果都是+1
   		System.out.println("==========分割线============");
   		
   		//2.与打印混合使用
   		int n2 = 20;
   		System.out.println(++n2);//结果为21,变量n2已经加一
   		System.out.println(n2);//结果为21,变量现在的值是21
   		System.out.println(n2++);//结果为21,经过后自增变量现在的值已经变成了22
   		System.out.println(n2);//再次打印结果为22
   		System.out.println("==========分割线============");
   		
   		//3.和赋值混合使用
   		int n3 = 30;
   		int n4 = --n3;
   		System.out.println(n4);//结果为29,这是混合使用,前- - ,
   							   //变量n3立马减一,变成了29,然后将结果赋值给n4
   		n3 = 30;//再次给n3赋值为30
   		n4 = n3--;
   		System.out.println(n4);//结果为30,后自减,所以在赋值时还没有减一,赋值完成后再减一
   		System.out.println(n3);//结果为29
   	}
   	
}
【tips】
 1.只有整数取模运算才有意义
 2. 一旦运算中有不同的数据类型,则按数据类型更大的那种类型进行计算
 3. 只有变量才可使用自增自减
二、赋值运算符
1.含义
将符号右侧的值赋值给左侧
| 符号 | 名称 | 
|---|---|
| = | 等于号 | 
| += | 加等号 | 
| -= | 减等号 | 
| *= | 乘等号 | 
| /= | 除等号 | 
| %= | 取模等号 | 
2.基本赋值运算符
1.就是一个等号“=”,代表将右侧的值交给左边的变量,例如:
	int a = 30;
3.复合赋值运算符
1.符号
| 符号 | 表达式 | 表达式的含义 | |
|---|---|---|---|
| += | a += 1 | 相当于 | a = a + 1 | 
| -= | b -= 2 | 相当于 | b = b - 2 | 
| *= | c *= 3 | 相当于 | c = c * 3 | 
| /= | d /= 4 | 相当于 | d = d / 4 | 
| %= | e %= 5 | 相当于 | e = e % 5 | 
2.代码练习
public class Operator03{
	public static void main(String[] agrs){
		int a = 1;
		a += 5;
		//按照公式进行翻译a += 5 → a = a + 5;
		//a = 1 + 5 = 6
		System.out.println(a);//结果为6
		System.out.println("==========分割线============");
		
		int b = 7;
		x %= 3;
		//按照公式进行翻译b %= 3 → b = b % 3;
		//b = 7 % 3 = 1	
		System.out.println(b);//结果为1
	}
	
}
3.注意事项
 (1)只有变量才能使用赋值运算符,常量不能赋值
 (2)复合赋值运算符其中隐含了一个强制类型转换
三、比较运算符
1.含义
两个数据之间进行比较的运算,不能连续比较,运算结果都是布尔值true或者false
2.符号
| 符号 | 含义 | 
|---|---|
| == | 比较符号两边数据是否相等,相等结果是true。 | 
| < | 比较符号左边的数据是否小于右边的数据,如果小于结果是true。 | 
| > | 比较符号左边的数据是否大于右边的数据,如果大于结果是true, | 
| <= | 比较符号左边的数据是否小于或者等于右边的数据,如果小于结果是true。 | 
| >= | 比较符号左边的数据是否大于或者等于右边的数据,如果小于结果是true。 | 
| != | 不等于符号,如果符号两边的数据不相等,结果是true. | 
3.代码练习
public class Operator04 {
	public static void main(String[] args) {
		char a = '我',b = '他';
		System.out.println(a+0);//结果为25105,首先我们将字符所代表的的数字打印出来
		System.out.println(b+0);//结果为20182
		//使用比较运算符进行比较
		System.out.println(a==b);//结果为false
		System.out.println(a>b);//结果为true
		System.out.println(a<b);//结果为false
		System.out.println(a>=b);//结果为true
		System.out.println(a<=b);//结果为false
		System.out.println(a!=b);//结果为true
	}
}
四、逻辑运算符
1.含义
直接比较两个布尔值
2.符号
| 符号 | 逻辑功能 | 
|---|---|
| &&(短路与) | 有false则false,若&&左边表达式或者值为false,则右边不进行计算 | 
| II(短路或) | 有true则true,若II左边表达式或者值为true,则右边不进行计算 | 
| !(非) | 非false则true,非true则false | 
| &(并且) | 有false则false | 
| I(或者) | 有true则true | 
| ^(异或) | 相同为false,不同为true | 
3.代码练习
public class Logic {
	public static void main(String[] args) {
		System.out.println(true && false);//false
		// true && true --> true
		System.out.println(3 < 4 && 10 > 5);//true
		System.out.println("===============");
		
		System.out.println(true || false);//true 
		System.out.println(true || true);//true 
		System.out.println(false || false);//false 
		System.out.println("==============");
		
		System.out.println(true);//true
		System.out.println(!true);//false
	}
		
}
【tips】
- 逻辑运算符只能用于boolean值
- “&&”、“||”左右都需要有一个boolean值,“!”只要有唯一一个boolean值即可
- 与,或两种逻辑运算符,如果有多个条件,可以连续写
 两个条件:条件A && 条件B
 多个条件:条件A && 条件B && 条件C
- 与“&&”,或“||”,具有短路效果,如果左边已经可以判断得到最终结果,那么右边将不再执行,从而节省一部分性能,例如:
int a = 10;
System.out.println(3 > 4 && ++a < 100);//false
//false && ...
System.out.println(a);//10
System.out.println("==============");
int b = 20;
System.out.println(2 < 2 || ++b < 100);//true
//true || ...
五、三元运算符
1.定义
- 一元运算符:需要- 一个数据才就可以进行操作的运算符,例如自增自减、取反
- 二元运算符:需要- 两个数据才可以进行操作的运算符,例如加法、赋值3
- 三元运算符:需要- 三个数据才可以进行操作的运算符
2.格式
数据类型 变量名称 = 条件判断 ? 表达式A : 表达式B;
3.流程
     1.首先判断是否成立
           如果成立为true,那么将表达式A的值赋值给左侧的变量
           如果不成立为false,那么将表达式B的值赋值给左侧的变量
      2.代码练习
	public class Operator05 {
		public static void main(String[] args){
				int a = 10;
				int b = 20;
				//数据类型 变量名称 = 条件判断 ? 表达式A : 表达式B;
				int c = a > b ? a : b;
				System.out.println(c);//20
				System.out.println("===========================");
				
				//int d = 3 > 4 ? 2.5 : 10;//右侧数据类型与左侧不符
				int d = 5 > 4 ? 2 : 10;
				System.out.println(d);//2
				System.out.println("===========================");
				
				//结果必须使用
				System.out.println(a > b ? a : b);//正确写法
				//a > b ? a : b;                  //错误写法
			}
	}
【tips】
- 必须同时保证表达式A表达式B都符合左侧的数据类型要求
- 三元运算符的结果必须被使用
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号