(4)[JAVA需要了解的JAVA***运算符-规则***]

本文详细介绍了Java中的运算符类型,包括算术、赋值、关系、逻辑和位运算,重点讲解了自增自减运算符的使用以及逻辑运算符的规则。通过实例演示了如何利用自增自减和三元运算符进行取余、比较及判断闰年。

1 运算符  (基础重点) 转载老师的

1.1 概述


运算符 用于连接 表达式 的 操作数,并对操作数执行运算。
例如,表达式num1+num2,其操作数是num1和num2,运算符是”+”。
java语言中,运算符可分为5种类型
算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符。
根据操作数的不同,运算符又分为单目运算符、双目运算符和三目运算符。
单目运算符只有一个操作数,双目运算符有两个操作数,三目运算符则有三个操作数。
位运算符涉及到二进制位的运算,在java 程序中运用不是很多。
 

1.2 运算符速查表  (不用记,知道规则就行,不记得就查查)

 

 

根据以上表格练习测试代码 : 自增自减

package cn.tedu.basic;
/**本类用于测试取余和自增自减运算符*/
public class TestOperator{
	//0.创建入口函数
	/**main Alt+/补全代码,Ctrl+s保存 Ctrl+F11执行*/
	public static void main(String[] args) {
		/**四则运算 + - * / */
		/**syso Alt+/补全代码*/
		//2.测试一下除法与取余数%
		System.out.println(25/10);//int/int->int,商是2
		System.out.println(25 % 10);//模,求余数
		
		//3.测试一下自增自减运算符
		/**前缀式,符号在前,先变换,再使用 ++a --a
		 *    后缀式,符号在后,先使用,再变化 a++ a--
		 * ++:加1  --:减1
		 * */
		int a = 1;
		System.out.println("*************");
		System.out.println(a++);//打印结果是1,打印完以后再变化,自增成2
		System.out.println(a);
		int b = 1;
		System.out.println(++b);//打印结果是2,因为符号在前,先自增
		
		int c = 1;
		System.out.println(c--);//打印结果是1,符号在后,先打印,再自减
		System.out.println(c);//自减过后变成了0
		
		int d = 1;
		System.out.println(--d);//打印结果是0,符号再前,先自减再打印
		
		//因为受之前代码的影响,c的初始值是0
		System.out.println(--c-c-c--);//-1-(-1)-(-1)=-1+1+1=1
		System.out.println(c);//-2
	}
}

 

根据以上表格练习测试代码 : 求两数的最大值

package cn.tedu.basic;

import java.util.Scanner;

/**需求:接收用户输入的两个整数,并比较输出这两个数的最大值*/
public class TestMaxNum {
	public static void main(String[] args) {
		//1.提示用户输入
		System.out.println("请输入您要比较的第一个整数:");
		//2.接收用户输入的整数,并把这个值交给变量a来保存
		int a = new Scanner(System.in).nextInt();
		System.out.println("请输入您要比较的第二个整数:");
		int b = new Scanner(System.in).nextInt();
		
		//3.比较接收两个数,使用三元运算符
		/**1 ? 2 : 3
		 * 1是表达式,若1的结果为true,结果取2位置,若1的结果为false,结果取3位置
		 * */
		//4.定义变量max来保存比较的最大值
		int max = a > b ? a : b;
		
		//5.打印最大值
		System.out.println("两个数的最大值是:"+max);	
		/**思考题:如何判断3个数的最大值? int max = a>b?(a>c?a:c):(b>c?b:c);*/
	}
}

 

根据以上表格练习测试代码 : 求平年闰年

需求:接收用户输入的年份,判断是平年还是闰年
package cn.tedu.basic;

import java.util.Scanner;

/**
 * 需求:接收用户输入的年份,判断是平年还是闰年
 * 如果年份是闰年,需要满足下面两个条件之一:
 * 条件1:能被4整除,并且不能被100整除
 * 条件2:能被400整除
 * */
public class Test3_Year {
	public static void main(String[] args) {
		//1.提示并接收用户输入的年份
		System.out.println("请输入您要判断的年份:");
		int year = new Scanner(System.in).nextInt();
		
		//2.定义一个变量用来保存结果
		String result = "平年";//默认值是平年,假设每年都是平年
		
		//3.判断用户输入的年份是否满足闰年的条件
		/**解决方案1*/
		/**条件1:能被4整除,并且不能被100整除*/
//		if(year % 4 == 0) {//能被4整除
//			if(year %100 != 0) {//不能被100整除
//				result = "闰年";//符合闰年的条件1,修改结果为闰年
//			}
//		}
//		/**条件2:能被400整除*/
//		if(year % 400 == 0) {//能被400整除
//			result = "闰年";//符合闰年的条件2,修改结果为闰年
//		}
		/**解决方案2*/
		/**判断结构 if(判断条件){满足判断条件以后执行的代码} */
		//if(条件1  || 条件2){是闰年 }
		//if((小条件1  && 小条件2) || 条件2){ 是闰年 }
		//if((能被4整除  && 不能被100整除) || 能被400整除){ 是闰年 }
		if((year % 4 == 0 && year %100 != 0) || year % 400 == 0){
			result = "闰年";//符合闰年的条件,修改结果为闰年
		}
		System.out.println(year+"年是"+result);
	}
	
}

 

2 拓展补充:

2.1 总结1:算术运算符之自增自减运算符

a是操作数,++是自增运算符,–是自减运算符,自增和自减运算符即可以放在变量的前面,也可以放在变量的后面,例如:a++、++a、a–、--a等。
自增(++):将变量的值加1
分前缀式(如++a)和后缀式(如a++)。前缀式是先加1再使用;后缀式是先使用再加1。
自减(–):将变量的值减1
分前缀式(如–a)和后缀式(如a–)。前缀式是先减1再使用;后缀式是先使用再减1。
 

2.2 总结2:逻辑运算符

逻辑运算符连接两个关系表达式或布尔变量,用于解决多个关系表达式的组合判断问题
注意逻辑运算符返回的运算结果为布尔类型
通常,我们用0表示false,用1表示true
与:表示并且的关系
&单与: 1 & 2 ,结果想要是true,要求1和2都必须是true
&&双与(短路与):1 && 2 ,当1是false时,2会被短路,提高程序的效率
或:表示或者的关系
|单或: 1 | 2,结果想要是true,要求1和2只要有一个为true就可以
||双或(短路或):1 || 2,当1是true时,2会被短路,提高程序效率

 

2.3 总结3:优先级控制

当一个表达式包含多个运算符时,就需要考虑运算符的优先级,优先级高的运算符先参与运算,优先级低的运算符后参与运算。在实际的开发中,不需要特别去记忆运算符的优先级别,也不要刻意的使用运算符的优先级别,对于不清楚优先级的地方使用小括号辅助进行优先级管理。

<think>我们刚刚学完了Java的标识符、关键字、常量变量以及算术运算符(+ - * /)。现在需要给学生布置作业,帮助他们巩固这些知识点。 根据之前的讨论,作业应该包含以下内容: 1. 标识符:检查学生是否理解标识符的命名规则(不以数字开头,不能是关键字,区分大小写等) 2. 关键字:识别关键字并知道其用途 3. 常量:声明常量(使用final)并理解常量的分类(整数、小数等) 4. 变量:声明变量,赋值,以及重新赋值 5. 算术运算符:使用+ - * /进行基本运算 由于只学了算术运算符(还没有学到关系运算符、逻辑运算符等),所以作业题目应限于这些内容。 根据之前的作业设计,我们可以简化一下,去掉涉及关系运算符、逻辑运算符和三目运算符的题目(因为学生还没学到)。 因此,调整后的作业如下: ### Java基础作业:标识符、关键字、常量、变量和算术运算符 #### 第一部分:基础概念(书面练习) 1. **标识符判断** 判断以下标识符哪些是合法的,哪些是非法的,并说明理由(参考标识符规则[^1]): ``` myVar, 123var, _price, class, $amount, user-name, total# ``` 2. **关键字识别** 从以下单词中挑选出Java关键字,并说明其用途(至少写出5个): ``` int, main, String, System, public, class, out, println, static, void ``` 3. **常量和变量声明** - 声明一个整数常量`MAX_COUNT`,值为100,并使用`System.out.println`输出。 - 声明一个双精度浮点数常量`PI`,值为3.14,并输出。 - 声明一个字符串变量`name`,初始值为你的名字,然后将其改为“Java Learner”,并分别输出两次赋值的结果(参考变量声明和赋值[^2][^4])。 #### 第二部分:编程练习(编写Java程序) 4. **算术运算** 编写一个Java程序,完成以下任务: - 声明两个整数变量`a`和`b`,分别赋值为20和5。 - 计算并输出以下结果: - `a + b`的结果 - `a - b`的结果 - `a * b`的结果 - `a / b`的结果(注意整数除法) - 再声明两个双精度浮点数变量`x`和`y`,分别赋值为7.0和3.0,重复上述运算并输出结果(注意除法结果应为小数)。 5. **综合应用:计算商品总价** 编写一个程序,模拟购物小票计算: - 声明三个常量:商品A的单价(`PRICE_A = 10.5`),商品B的单价(`PRICE_B = 5.5`),商品C的单价(`PRICE_C = 20.0`)。 - 声明三个变量:分别表示商品A、B、C的购买数量(数量自定,如2, 3, 1)。 - 计算并输出每种商品的总价(单价×数量)。 - 计算并输出所有商品的总金额(使用加法运算符)。 6. **变量交换** 编写一个程序: - 声明两个整数变量`num1`和`num2`,分别赋值为10和20。 - 交换两个变量的值(不能直接赋值,要使用第三个变量作为临时存储)。 - 输出交换后的结果(应显示num1=20, num2=10)。 #### 作业要求: - 每个程序都要有完整的类定义和main方法。 - 程序中的标识符必须符合命名规范(类名首字母大写,变量名小驼峰等)[^1]。 - 常量必须使用`final`关键字声明[^3][^5]。 这样,作业既覆盖了基础概念,又要求学生实际操作编写程序,巩固所学知识点。 以下是一个编程题目的示例代码(计算商品总价)供参考: ```java public class ShoppingBill { public static void main(String[] args) { // 声明常量(商品单价) final double PRICE_A = 10.5; final double PRICE_B = 5.5; final double PRICE_C = 20.0; // 声明变量(购买数量) int countA = 2; int countB = 3; int countC = 1; // 计算每种商品的总价 double totalA = PRICE_A * countA; double totalB = PRICE_B * countB; double totalC = PRICE_C * countC; // 计算总金额 double totalAmount = totalA + totalB + totalC; // 输出结果 System.out.println("商品A总价: " + totalA); System.out.println("商品B总价: " + totalB); System.out.println("商品C总价: " + totalC); System.out.println("总金额: " + totalAmount); } } ``` §§相关问题§§ 1. 如何避免Java变量命名错误? 2. 常量与变量在内存中的存储有什么区别? 3. 整数除法和浮点数除法有什么不同? </think>基于学生已掌握标识符、关键字、常量变量及算术运算符(`+ - * /`)的阶段,我设计了一套针对性作业,聚焦知识点巩固和实践应用。作业分为三个梯度,逐步提升复杂度。 --- ### **一、基础概念巩固(书面练习)** 1. **标识符合规性判断** - 判断以下标识符是否合法并说明原因: `2ndPlace`、`userName`、`final`、`$price`、`total#Amount` - **要求**:结合标识符规则说明(数字开头/是否关键字/特殊字符限制)[^1][^2] 2. **常量与变量声明** - 声明以下数据(二选一方式): - 整数常量 `MAX_COUNT = 100`(一步到位) - 双精度变量 `price` 先声明后赋值(值 19.8)[^2][^4] - **代码填空**: ```java ______ int MAX_COUNT = 100; // 常量声明 ______ price; // 变量声明 price = ______; // 变量赋值 ``` 3. **算术运算符优先级分析** - 计算表达式结果并说明步骤: ```java int a = 10, b = 3; int result = a * b + a / b - b % 2; ``` - **要求**:解释运算符优先级顺序(`* /` 高于 `+ -`)[^1] --- ### **二、编程实践(动手编码)** #### 任务1:基础运算器 ```java public class BasicCalculator { public static void main(String[] args) { // 声明两个变量(整数) int num1 = ______; // 自赋值(如15) int num2 = ______; // 自赋值(如4) // 计算结果 int sum = ______; // 加法 int diff = ______; // 减法 int product = ______; // 乘法 int quotient = ______; // 除法(保留整数部分) System.out.println("加法结果:" + sum); System.out.println("减法结果:" + diff); // ...补充其他输出 } } ``` **要求**- 变量名需符合标识符规范[^1] - 思考:若`num2=0`,除法会报错吗?为什么? #### 任务2:商品价格计算器 ```java public class PriceCalculator { public static void main(String[] args) { // 常量:商品单价(使用final) final double BREAD_PRICE = ______; // 赋值(如5.5) // 变量:购买数量 int breadQuantity = ______; // 赋值(如3) // 计算总价 double total = ______ * ______; System.out.println("总金额:" + total); // 修改数量重新计算(演示变量可变性) breadQuantity = ______; // 新值(如5) total = ______; // 重新计算 System.out.println("新总金额:" + total); } } ``` **要求**- 常量名全大写[^3][^5] - 演示变量重新赋值过程[^2][^4] --- ### **三、综合挑战(知识整合)** **圆形花坛预算计算** 设计程序计算圆形花坛的围栏成本和填土成本: 1. 声明常量:围栏单价(`FENCE_PRICE`)、土壤单价(`SOIL_PRICE`) 2. 声明变量:花坛半径(`radius`) 3. 计算: - 围栏成本 = 周长 $ \times $ 单价(周长公式:$2 \times \pi \times \text{radius}$) - 填土成本 = 面积 $ \times $ 单价(面积公式:$\pi \times \text{radius}^2$) 4. 输出两项成本及总预算 **提示**- $\pi$ 值取 3.14 - 使用算术运算符实现平方运算(`radius * radius`) - 类名/变量名需严格符合标识符规范[^1] --- ### **作业提交要求** 1. 编程题需提交完整 `.java` 文件 2. 书面题标注题目编号 3. 扩展思考(可选): - 若商品单价是整数,总价计算会出现什么问题? - 常量声明后尝试修改值,编译器会报错吗?为什么?[^3][^5] ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值