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);
}

 注意:

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

运算结果:

 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,判断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);
	}

 运算结果:

5.逻辑运算符

5.1 什么是逻辑运算符

  • 在数学中,一个数据x,大于5,小于15,我们可以这样来进行表示:5<x<15。
  • 在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);	
	//可以短路逻辑运算符去连接三个判断
	
	}

 运算结果:

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==

 运算结果:

7.运算符优先级

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

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

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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Java中,由于浮点数的精度问题,可能会出现无限循环小数。对于这种情况,可以使用BigDecimal类来处理。 BigDecimal类可以表示任意精度的十进制数,它可以处理大于64位的整数和小数。在使用BigDecimal类时,需要注意以下几点: 1. 使用BigDecimal类时,应该使用其构造方法来初始化BigDecimal对象,而不是使用double类型的值来初始化。 例如: ``` BigDecimal bd = new BigDecimal("0.1"); ``` 2. 在进行浮点数运算时,应该使用BigDecimal类提供的方法,而不是使用double类型的运算符。 例如: ``` BigDecimal a = new BigDecimal("0.1"); BigDecimal b = new BigDecimal("0.2"); BigDecimal c = a.add(b); ``` 3. 在比较两个BigDecimal对象的值时,应该使用compareTo()方法,而不是使用等于(==)或不等于(!=)运算符。 例如: ``` BigDecimal a = new BigDecimal("0.1"); BigDecimal b = new BigDecimal("0.2"); if (a.compareTo(b) < 0) { System.out.println("a < b"); } else if (a.compareTo(b) > 0) { System.out.println("a > b"); } else { System.out.println("a = b"); } ``` 关于java无限循环小数判定问题,可以通过以下代码来解决: ``` public static boolean isRepeatingDecimal(BigDecimal num) { BigDecimal[] arr = num.divideAndRemainder(BigDecimal.ONE); BigDecimal decimalPart = arr[1]; String decimalStr = decimalPart.toString().substring(2); // 去掉小数点和整数部分 if (decimalStr.length() < 2) { return false; // 小数部分长度小于2,不可能循环 } int halfLength = decimalStr.length() / 2; for (int i = 1; i <= halfLength; i++) { String str = decimalStr.substring(0, i); if (decimalStr.matches("^(" + str + ")+(.*)" + str + "$")) { return true; // 存在循环节 } } return false; // 不存在循环节 } ``` 该方法接收一个BigDecimal对象,判断其是否为无限循环小数,返回true或false。 以上是关于Java中处理无限循环小数的基础知识和方法介绍,希望能对你有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Hgngy.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值