diff --git "a/29 \350\267\257\347\216\262/20230328 Java\347\273\203\344\271\240.md" "b/29 \350\267\257\347\216\262/20230328 Java\347\273\203\344\271\240.md" new file mode 100644 index 0000000000000000000000000000000000000000..ff5978ff3bcdd4190c639ca8bfb413c2dc0b69db --- /dev/null +++ "b/29 \350\267\257\347\216\262/20230328 Java\347\273\203\344\271\240.md" @@ -0,0 +1,337 @@ +# 笔记 + +## 自动类型转换 + +1.为什么要进行类型转换? + +l**存在不同类型的变量赋值给其他类型的变量** + +2.自动类型转换是什么样的? + +类型范围小的变量,可以直接赋值给类型范围大的变量。 + + + +## 表达式的自动类型转换是 + +1.表达式的自动类型转换是什么样的? + +l**小范围的类型会自动转换成大范围的类型运算。** + +2.表达式的最终结果类型是由谁决定的? + +l**最终类型由表达式中的最高类型决定。** + +3.表达式的有哪些类型转换是需要注意的? + +byte, short ,char是直接转换成int类型参与运算的。 + + + +## 强制类型转换 + +l可以强行将类型范围大的变量、数据赋值给类型范围小的变量。 + +数据类型 变量2 = (数据类型)变量1、数据 + +注意: + +l强制类型转换**可能**造成数据(丢失)溢出; + +浮点型强转成整型,直接丢掉小数部分,保留整数部分返回 + +# 作业 + +## one + +## 1.题目1(训练) + +身高是具有遗传性的,子女的身高和父母的身高有一定的关系。假定,父母和子女的身高遗传关系如下: + + 儿子身高(厘米)=(父亲身高+母亲身高) ×1.08÷2 + + 女儿身高(厘米)=(父亲身高×0.923+母亲身高) ÷2 + +现有父亲身高177 CM,母亲身高165 CM。求子女身高分别预计为多少? + +```java +package com.school.work; + +public class test01 { + public static void main(String[] args) { +// 题目1(训练) +// 身高是具有遗传性的,子女的身高和父母的身高有一定的关系。假定,父母和子女的身高遗传关系如下: +//儿子身高(厘米)=(父亲身高+母亲身高) ×1.08÷2 +// 女儿身高(厘米)=(父亲身高×0.923+母亲身高) ÷2 +// 现有父亲身高177 CM,母亲身高165 CM。求子女身高分别预计为多少? + 方法一: + double father=177.00; + double mother=165.00; + double son=(father+mother)*1.08/2; + double daughter=(father*0.923+mother)*2; + System.out.println("儿子的身高预计为:"son); + System.out.println("女儿的身高预计为:"daughter); + 方法二: + int f=177,m=165; + double boy=(m+f)*1.08/2,girl=(f*0.923+m)/2; + System.out.println("儿子的身高预计为:"+boy); + System.out.println("女儿的身高预计为:"+girl); + + } +} +``` + +## 2. 题目2(训练) + +红茶妹妹有21元钱,她攒了几天钱之后自己的钱比原来的两倍还多三块。绿茶妹妹有24元钱,她攒了几天钱之后自己的钱正好是原来的两倍。那么红茶和绿茶现在的钱一样多,请问对么? + +```java +package com.school.work; + +public class test02 { + public static void main(String[] args) { +// 题目2(训练) +// 红茶妹妹有21元钱,她攒了几天钱之后自己的钱比原来的两倍还多三块。 +// 绿茶妹妹有24元钱,她攒了几天钱之后自己的钱正好是原来的两倍。 +// 那么红茶和绿茶现在的钱一样多,请问对么 + int red=21; + int red1=red*2+3; + int green=24; + int green1=green*2; + System.out.println(red1 == green1); + + +} +``` + +## 3.题目3(综合) + +某小伙想定一份外卖,商家的优惠方式如下:鱼香肉丝单点24元,油炸花生米单点8元,米饭单点3元。订单满30元8折优惠。鱼香肉丝优惠价16元,但是优惠价和折扣不能同时使用。那么这个小伙要点这三样东西,最少要花多少钱? + +```java +package com.school.work; + +public class test03 { + public static void main(String[] args) { +// 题目3(综合) +// 某小伙想定一份外卖,商家的优惠方式如下:鱼香肉丝单点24元,油炸花生米单点8元, +// 米饭单点3元。订单满30元8折优惠。鱼香肉丝优惠价16元,但是优惠价和折扣不能同时使用。 +// 那么这个小伙要点这三样东西,最少要花多少钱? + int fish=24; + int peanut=8; + int rice=3; + int one=(fish+peanut+rice)*0.8; + System.out.println(one); + int fish1=16; + int two=fish1+peanut+rice; + System.out.println(two); + + +} +``` + +# 3.作业 + +## 1.判断一个字符数据是否是数字字符  + +**分析:** + + 1、需要判断一个字符是否是数字字符,首先需要提供一个字符数据 + + 2、字符是否为数字字符: 数字字符的范围 0 - 9 之间都属于数字字符,因此提供的字符只要大于或等于字符0,并且还要下于或等于字符9即可。 + + 3、判断完成之后,打印判断的结果。 + +```java +package com.school.work; + +import java.util.Scanner; + +public class test04 { + public static void main(String[] args) { +//判断一个字符数据是否是数字字符 +//分析: +//1、需要判断一个字符是否是数字字符,首先需要提供一个字符数据 +//2、字符是否为数字字符: 数字字符的范围 0 - 9 之间都属于数字字符,因此提供的字符只要大于或等于字符0,并且还要下于或等于字符9即可。 +//3、判断完成之后,打印判断的结果。 + Scanner sc=new Scanner(System.in); + System.out.println("请输入一个字符,看看是不是数字字符:"); + char a=sc.nextLine().charAt(0); + if(a>=0 & a<=9){ + System.out.println("是数字字符"); + }else { + System.out.println("no!"); + } + + } +} +``` + +## 2.判断一个字符数据是否是字母字符 + +**分析:** + + 1、需要判断一个字符是否是字母字符,首先需要提供一个字符数据 + + 2、字符是否为字母字符: 数字字符的范围 a - z 或者 A - Z 之间都属于字母字符,因此提供的字符只要大于或等于a,并且还要下于或等于z 或者 大于或等于A,并且还要下于或等于Z + + 3、判断完成之后,打印判断的结果。 + +```java +package com.school.work; + +import java.util.Scanner; + +public class test05 { + public static void main(String[] args) { +// 判断一个字符数据是否是字母字符 +// 分析: +// 1、需要判断一个字符是否是字母字符,首先需要提供一个字符数据 +// 2、字符是否为字母字符: 数字字符的范围 a - z 或者 A - Z 之间都属于字母字符, +// 因此提供的字符只要大于或等于a,并且还要下于或等于z 或者 大于或等于A,并且还要下于或等于Z +// 3、判断完成之后,打印判断的结果。 + Scanner sc=new Scanner(System.in); + System.out.println("请输入一个字符,看看是不是字母字符捏:"); + char zifu =sc.nextLine().charAt(0); + if(zifu>='a'& zifu<='z' |zifu>='A'&zifu<='Z' ){ + System.out.println("是"); + }else { + System.out.println("no!"); + } + } +} +``` + +## 3.判断指定的年份是否为闰年,请使用键盘录入 + +**分析:** + + 1、闰年的判断公式为:能被4整除,但是不能被100整除 或者 能被400整除 + + 2、首先需要提供一个需要判断的年份,判断完成之后,打印判断的结果。 + +```java +package com.school.work; + +import java.util.Scanner; + +public class test06 { + public static void main(String[] args) { +// 判断指定的年份是否为闰年,请使用键盘录入 +// 分析: +// 1、闰年的判断公式为:能被4整除,但是不能被100整除 或者 能被400整除 +// 2、首先需要提供一个需要判断的年份,判断完成之后,打印判断的结果。 + Scanner sc=new Scanner(System.in); + int a=sc.nextInt(); + System.out.println("请输入年份:"); + if (a%4==0 && a%100!=0 || a%100==0){ + System.out.println(a+"是闰年"); + }else { + System.out.println(a+"不是闰年"); + + } + } +} +``` + +## 4. 判断一个数字是否为水仙花数,请使用键盘录入 + +水仙花是指3位数字,表示的是每位上的数字的3次幂相加之后的和值和原数相等,则为水仙花数, + +**分析:** + + 如:153 ---> 1×1×*1 + 5*×5×*5 + 3×*3×3 = 153; 就是水仙花数 + + 1、首先需要提供一个需要判断的3位数字,因此需要一个数值 + + 2、判断的过程 + + a) 将3位数字的每一位上的数字拆分下来 + + b) 计算每位数字的3次幂之和 + + C) 用和值 和 原来的数字进行比较 + + D) 打印判断的比较结果即可 + +```java +package com.school.work; + +import java.util.Scanner; + +public class test07 { + public static void main(String[] args) { +// 判断一个数字是否为水仙花数,请使用键盘录入 +// 水仙花是指3位数字,表示的是每位上的数字的3次幂相加之后的和值和原数相等,则为水仙花数, +// 分析: +//如:153 ---> 1×1×1 + 5×5×5 + 3×3×3 = 153; 就是水仙花数 +//1、首先需要提供一个需要判断的3位数字,因此需要一个数值 +//2、判断的过程 +//a) 将3位数字的每一位上的数字拆分下来 +//b) 计算每位数字的3次幂之和 +//C) 用和值 和 原来的数字进行比较 +//D) 打印判断的比较结果即可 + System.out.println("请输入数字:"); + Scanner sc=new Scanner(System.in); + int a=sc.nextInt(); + int ge=a%10; + int shi=a/10%10; + int bai=a/100; + if (ge*ge*ge+shi*shi*shi+bai*bai*bai==a){ + System.out.println("水仙花"); + }else { + System.out.println("不是水仙花"); + } + + } +} +``` + +## 5.判断一个5位数字是否为回文数,使用键盘录入 + +五位数的回文数是指最高位和最低位相等,次高位和次低位相等。如:12321 23732 56665 + +**分析:** + + 1、首先需要提供一个需要判断的5位数字,因此需要一个数值 + + 2、判断的过程 + + a) 将5位数字的万、千、十、个位数拆分出来 + + b) 判断比较万位和个位 、 千位和十位是否相等 + + 3、判断完成之后,打印判断的结果。 + +```java +package com.school.work; + +import java.util.Scanner; + +public class test08 { + public static void main(String[] args) { +// 判断一个5位数字是否为回文数,使用键盘录入 +// 五位数的回文数是指最高位和最低位相等,次高位和次低位相等。如:12321 23732 56665 +// 分析: +//1、首先需要提供一个需要判断的5位数字,因此需要一个数值 +//2、判断的过程 +//a) 将5位数字的万、千、十、个位数拆分出来 +//b) 判断比较万位和个位 、 千位和十位是否相等 +//3、判断完成之后,打印判断的结果。 + System.out.println("请输入五位数字:"); + Scanner sc=new Scanner(System.in); + int a=sc.nextInt(); + int a1=a%10; + int a2=a/10%10; + int a3=a/100%10; + int a4=a/1000%10; + int a5=a/10000; + if (a1==a5 && a2==a4){ + System.out.println("是回文数"); + }else { + System.out.println("菜!"); + } + } +} +``` +