JAVA基础 —— 运算符

目录

一、运算符和表达式

1.二者区别

2.举例说明 

二、运算符分类

1.算术运算符

1.1 数字相加(类型转换)

 1.2 隐式转换(自动类型提升)

 1.3 强制转换

1.4 练习:数值拆分

 2.自增自减运算符

 2.1自增自减运算符练习

 3.赋值运算符

4.关系运算符(比较运算符)

 4.1 练习:约会

5.逻辑运算符

5.1 什么是逻辑运算符

 5.2 逻辑运算符的分类

5.3 短路逻辑运算符

 5.4 练习:数字6

6.三元运算符

6.1 什么是三元运算符

6.2 计算规则 :

 6.3 练习:两只老虎

7.运算符优先级


一、运算符和表达式

1.二者区别

运算符:对字面量或者变量进行操作的符号

表达式:用运算符把字面量或者变量连接起来,符合java语句的式子就可以被称为表达式。

               不同运算符连接的表达式体现的是不同类型的表达式

2.举例说明 

int a= 10;
int b= 20;
int c= a+ b;

+ : 是运算符,并且是算术运算符

a + b :是表达式,由于+是算术运算符,所以这个表达式叫算术表达式

二、运算符分类

1.算术运算符

符号 作用
+  加 
-
*
/
% 取模、取余

 /%的区别:两个数据做除法,/取结果的商,%取结果的余数。

                         整数操作只能得到整数,要想得到小数,必须有浮点数参与运算。

public static void main(String[] args) {
	//+
	System.out.println(3 + 2);//5
	//-
	System.out.println(5 - 1);//4
	//*
	System.out.println(7 * 9);//63
	
	//如果在计算时有小数参与 结果有可能不精确
	//原因见JavaSE
	System.out.println(1.1 + 1.01);//2.1100000000000003
	System.out.println(1.1 + 1.1);//2.2
	
	// /
	System.out.println(10 / 2);//5
	//整数参与计算只能得出整数
	System.out.println(10 / 3);//3
	//小数参与计算,结果可能是不精确,要想精确计算需要后面知识点
	System.out.println(10.0 / 3);//3.333333333333335
	
	// %
	System.err.println(10 % 2);//0
	System.out.println(10 % 3);//1
	
}

1.1 数字相加(类型转换)

数字进行运算时,数据类型不一样不能运算,需要转成一样的,才能运算。

问题1:请问下面变量c的数据类型是什么?

public static void main(String[] args) {
		int a = 10;
		double b = 12.3;
		      c= a + b ; 
	}

答案1:double

问题2:请问下面变量c的数据类型是什么?

public static void main(String[] args) {
		int a = 10;
		double b = 20.0;
		      c= a + b ;  //整数 + 小数=  ?
	}

答案2:double 或者 int 都可以

问题三:请问下面变量c的数据类型是什么?

public static void main(String[] args) {
		byte a = 10;
		byte b = 20;
		      c= a + b ; 
	}

答案三:int

类型转换方式 内容
隐式转换 取值范围的数值 --> 取值范围的数值
强制转换 取值范围的数值 --> 取值范围的数值

 1.2 隐式转换(自动类型提升)

把一个取值范围小的数值,转成取值范围大的数据

(此处参考数据取值范围大小顺序)

int a =10;
double b =a;  // b = 10.0

 隐式转换的两种提升规则:

  • 取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行计算(见上述问题1)
  • byte、short、char三种类型的数据在运算时,都会直接先提升为int,然后在进行运算(见上述问题3)

 1.3 强制转换

如果把一个取值范围大的数值,赋值给取值范围小的变量。

是不允许直接赋值的。如果一定要这么做就需要加入强制类型转换。

格式:目标数据类型 变量名 = (目标数据类型)被强转的数据;

范例:

double a = 12.3;
 int b=(int) a;

1.4 练习:数值拆分

需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台

public static void main(String[] args) {
	//键盘录入
	Scanner sc=new Scanner(System.in);
	System.out.println("请输入一个三位数:");
	int number = sc.nextInt();
	
	int ge = number % 10;
	int shi = number /10 % 10;
	int bai = number / 100 % 10;

	System.out.println("个位数:"+ge);
	System.out.println("十位数:"+shi);
	System.out.println("百位数:"+bai);
}

 注意:

字符串的“+”操作:当“+”操作中出现字符串时,这个“+”是字符串连接符,而不是算术运算符了。会将前后的数据进行拼接,并产生一个新的字符串。

运算结果:

JAVA基础 —— 运算符_第1张图片

 2.自增自减运算符

符号 作用 说明
+ + 变量的值加1
- - 变量的值减1

单独使用:++和--无论放在变量前面还是后面,单独写一行结果是一样的。 

参与计算:

先用后加

int a = 10;

int b =  a++;

先加后用

int a = 10;

int b = ++a;

 2.1自增自减运算符练习

public static void main(String[] args) {
		int x = 10;
		//后++,先用后加
		//先把x变量中的值拿出来,赋值给y,然后再进行自增
		//赋值给y的值是自增的
		int y = x++; // x =  11 y = 10;
		//先++,先加后用
		//先把x进行自增,然后把自增后的结果赋值给左边的变量
		//先把x自增,然后再把自增之后的值赋值给z
		int z = ++x; //x = 12 z = 12
		

		System.out.println("x:" + x);
		System.out.println("y:" + y);
		System.out.println("y:" + y);
	}

运算结果:

 

 3.赋值运算符

符号 作用 说明
= 赋值 int a = 10,将10赋值给变量a
+ = 加后赋值 a + = b,将a+b的值给a
- = 减后赋值 a - = b,将a-b的值给a
* = 乘后赋值 a * = b,将a*b的值给a
/ = 除后赋值 a / = b,将a/b的值给a
% = 取余后赋值 a % = b,将a%b的值给a

注意事项:扩展的赋值运算符隐含了强制类型转换

4.关系运算符(比较运算符)

符号 说明
== a==b,判断a和b的值是否相等,成立为true,不成立为false
!= a!=b,判断a和b的值是否不相等,成立为true,不成立为false
> a>b,判断a是否大于b,成立为true,不成立为false
>= a>=b,判断a是否大于等于b,成立为true,不成立为false
< a小于b,成立为true,不成立为false
<= a<=b,判断a是否小于等于b,成立为true,不成立为false

注意事项:关系运算符的结果boolean类型,要么是true,要么是false。

                  千万不要把"=="误写成"="。

 4.1 练习:约会

需求:您和您的约会对象在餐厅里面正在约会。
           键盘录入两个整数,表示你和你约会对象衣服的时髦度。(手动录入0~10之间的整数,不能录其他) 如果你的时髦程度大于你对象的时髦程度,相亲就成功,输出true。
否则输出false。

public static void main(String[] args) {
	
	//1.键盘录入两个整数表示衣服时髦度
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入我们自己衣服的时髦度:");
		int myFashion = sc.nextInt();
		System.out.println("请输入我们相亲对象衣服的时髦度:");
		int girlFashion = sc.nextInt();
		
	//2.把我们两个人的衣服时髦度进行比较即可
		boolean result = myFashion > girlFashion;
		
	//3.打印结果
		System.out.println(result);
	}

 运算结果:

JAVA基础 —— 运算符_第2张图片

5.逻辑运算符

5.1 什么是逻辑运算符

  • 在数学中,一个数据x,大于5,小于15,我们可以这样来进行表示:5
  • 在java中,我们需要把上面的式子进行拆解,再进行合并表达。                                                    拆解为:x>5 和 x<15                                                                                                          合并后:x>5 & x<15

 5.2 逻辑运算符的分类

符号 作用 说明
& 逻辑与(且) 并且,两边都为真,结果才为真
| 逻辑或 或者,两边都为假,结果才为假
^ 逻辑异或 相同为false,不同为true
! 逻辑非 取反

5.3 短路逻辑运算符

符号 作用 说明
&& 短路与 结果和&相同,但是有短路效果
|| 短路或 结果和|相同,但是有短路效果

注意事项:

  • & | :无论左边true、false,右边都要执行。
  • && ||:如果左边都能确定整个表达式的结果,右边不执行

  • &&:左边为true,右边不管是真是假,整个表达式的结果一定为true。
  • ||:左边为true,右边不管是真是假,整个表达式的结果一定是true。 
  •  这两种情况下,右边不执行,提高了效率

 5.4 练习:数字6

需求:数字6是一个真正伟大的数字,键盘录入两个整数。

           如果其中一个为6,最终结果输出true。
           如果它们的和为6的倍数。

           最终结果输出true。其他情况都是false。

public static void main(String[] args) {
	//1.键盘录入两个整数
	Scanner sc = new Scanner(System.in);
	System.err.println("请输入第一个整数:");
	int a= sc.nextInt();
	
	System.err.println("请输入第二个整数:");
	int b = sc.nextInt();	
	
	//2.a ==6 || b ==6 || (a + b) % 6 == 0
	//如果满足其中一个,那么就可以输出true
	boolean result = a ==6 || b ==6 || (a + b) % 6 == 0;
	System.out.println(result);	
	//可以短路逻辑运算符去连接三个判断
	
	}

 运算结果:

JAVA基础 —— 运算符_第3张图片

6.三元运算符

6.1 什么是三元运算符

  • 需求:定义一个变量记录两个整数的较大值
  • 作用:可以进行判断,根据判断结果得到不同的内容
  • 格式:关系表达式 ? 表达式1 : 表达式2                                                                                     范例:比较两个数的较大值
    a > b ? a : b;

6.2 计算规则 :

  1. 首先计算关系表达式的值
  2. 如果值为true表达式1的值就是运算结果
  3. 如果值为false表达式2的值就是运算结果

 6.3 练习:两只老虎

需求: 动物园里有两只老虎,体重分别为通过键盘录入获得,请用程序实现判断两只老虎的体重是否相同。

public static void main(String[] args) {
	//1.键盘录入两只老虎的体重
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入第一只老虎的体重:");
		int weight1 = sc.nextInt();
		System.out.println("请输入第二只老虎的体重:");
		int weight2 = sc.nextInt();
	
	//2.比较
		String result = weight1 == weight2 ? "相同" : "不同";
		System.out.println(result);
	}
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 运算结果:

JAVA基础 —— 运算符_第4张图片

7.运算符优先级

优先级 运算符
1 .{}()
2 !、-、++、--
3 *、/、%
4 +、-
5 <<、>>、>>>
6 <、<=、>、>=、instanceof
7 ==、!=
8 &
9 ^
10 |
11 &&
12 ||
13 ?:
14 =、+=、-=、*=、/=、%=

但是,想要全部记住优先级表很困难!!

所以,只要记住()优先于所有!!

你可能感兴趣的:(JAVA基础入门,java,开发语言)