From 64cce3d6714b6d5715abbf23d7da624f94d4fda4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=87=95=E5=BC=BA?= <983662901.com> Date: Thu, 30 Mar 2023 22:43:17 +0800 Subject: [PATCH 1/2] =?UTF-8?q?36=20Java=E7=BB=83=E4=B9=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20230328 \347\273\203\344\271\240.md" | 250 ++++++++++++++++++ 1 file changed, 250 insertions(+) create mode 100644 "36 \351\231\210\347\207\225\345\274\272/20230328 \347\273\203\344\271\240.md" diff --git "a/36 \351\231\210\347\207\225\345\274\272/20230328 \347\273\203\344\271\240.md" "b/36 \351\231\210\347\207\225\345\274\272/20230328 \347\273\203\344\271\240.md" new file mode 100644 index 0000000..25269fc --- /dev/null +++ "b/36 \351\231\210\347\207\225\345\274\272/20230328 \347\273\203\344\271\240.md" @@ -0,0 +1,250 @@ +# 笔记 + +```java +注释 +Ctrl +/ +// +/** +回车键 +/* 注释内容*/ +加+ 减 - 乘* 整除 / 取余 % +&& 并且 || 或 +if(条件){ + //满足,执行 +}else{ + // 不满足,执行 +} +数据类型 + 整型 int ,long 值后面加L + 浮点 float 值后面要加F , double + 字符 char + 字符串 string + 布尔型 boolean , 值只能为true 或者 false + +表达式的自动类型转换 +在表达式中,小范围类型的变量会自动转换成当前较大范围的类型再运算 +byte 、 short 、 char --->int--->long--->float--->double +表达式的最终结果类型由表达式中的最高类型决定。 +在表达式中,byte、short、char 是直接转换成int类型参与运算的。 + + +表达式的自动类型转换 +byte 、 short 、 char--->int ---> long--->float--->double +表达式的最终结果类型由表达式中的最高类型决定。 +在表达式中,byte、short、char 是直接转换成int类型参与运算的 + +强制类型转换 +可以强行将类型范围大的变量、数据赋值给类型范围小的变量。 +数据类型 变量2 = (数据类型)变量1、数据 +强制类型转换可能造成数据(丢失)溢出; +浮点型强转成整型,直接丢掉小数部分,保留整数部分返回 + + + + +``` + +# 练习1 + +```java +import java.util.Scanner; + +public class Main { + public static void main(String[] args) { + /** + * **1、判断一个字符数据是否是数字字符 + * **分析:** + *1、需要判断一个字符是否是数字字符,首先需要提供一个字符数据 + *2、字符是否为数字字符: 数字字符的范围 0 - 9 之间都属于数字字符,因此提供的字符只要大于或等于字符0,并且还要下于或等于字符9即可。 + *3、判断完成之后,打印判断的结果。 + */ + Scanner hu=new Scanner(System.in); + System.out.println("请输入一个字符判断是不是数字字符:"); + char i =hu.next().charAt(0);// charAt(n-1) n:显示个数 + if(i>='0' && i<='9'){ + System.out.println(i+"是数字字符!"); + } + else{ + System.out.println(i+"不是数字字符!"); + } + + + /** + * **2、判断一个字符数据是否是字母字符** + * **分析:** + *1、需要判断一个字符是否是字母字符,首先需要提供一个字符数据 + *2、字符是否为字母字符: 数字字符的范围 a - z 或者 A - Z 之间都属于字母字符, + * 因此提供的字符只要大于或等于a,并且还要下于或等于z 或者 大于或等于A,并且还要下于或等于Z + *3、判断完成之后,打印判断的结果。 + */ + System.out.println("请输入一个字符判断是不是字母字符:"); + char a= hu.next().charAt(0); + if ((a>='a' && a<='z') || (a>='A' && a<='Z')){ + System.out.println(a+"是字母字符!"); + } + else { + System.out.println(a+"不是字母字符!"); + } + + /** + * **3、判断指定的年份是否为闰年,请使用键盘录入** + * **分析:** + *1、闰年的判断公式为:能被4整除,但是不能被100整除 或者 能被400整除 + *2、首先需要提供一个需要判断的年份,判断完成之后,打印判断的结果。 + */ + System.out.println("请输入年份判断是不是闰年:"); + int year=hu.nextInt(); + if ((0==year%4 && 0!=year%100) || 0==year%400 ){ + System.out.println(year+"是闰年"); + } + else{ + System.out.println(year+"不是闰年"); + } + + + /** + * **4、判断一个数字是否为水仙花数,请使用键盘录入** + * 水仙花是指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("请输入一个3位数的数字判断是不是水仙花数:"); + int s= hu.nextInt(); + int d=s/100%10; + int s1=s/10%10%10; + int s2=s%10%10%10; + int as=d*d*d+s1*s1*s1+s2*s2*s2; + if (s==as){ + System.out.println(as+"是水仙花数!"); + }else{ + System.out.println("不是水仙花数!"); + } + + + /** + * **5、判断一个5位数字是否为回文数,使用键盘录入** + * 五位数的回文数是指最高位和最低位相等,次高位和次低位相等。如:12321 23732 56665 + * **分析:** + *1、首先需要提供一个需要判断的5位数字,因此需要一个数值 + *2、判断的过程 + *a) 将5位数字的万、千、十、个位数拆分出来 + *b) 判断比较万位和个位 、 千位和十位是否相等 + *3、判断完成之后,打印判断的结果。 + */ + System.out.println("请输入一个是5位数的数"); + int aa =hu.nextInt(); + int a1,a2,a3,a4; + a1=aa%10; + a2=aa/10%10; + a3=aa/1000%10; + a4=aa/10000; + if (a1==a4 && a2==a3){ + System.out.println("是回文数"); + }else{ + System.out.println("不是回文数"); + } + } +} + +``` + +# 练习2 + +```java +public class lianxi2 { + public static void main(String[] args) { + asd(); + ad(); + ass(); + } + public static void asd(){ + /** + * ## 题目1(训练) + * 身高是具有遗传性的,子女的身高和父母的身高有一定的关系。假定,父母和子女的身高遗传关系如下: + * ​ 儿子身高(厘米)=(父亲身高+母亲身高) ×1.08÷2 + * 女儿身高(厘米)=(父亲身高×0.923+母亲身高) ÷2 + * 现有父亲身高177CM,母亲身高165CM。求子女身高分别预计为多少? + * ### 训练提示 + * 1. 已知的父母身高如何用代码体现? + * 2. 题目中的公式如何转化为代码? + * ### 解题方案 + * 1. 使用变量的定义和算术运算符完成本题 + * ### 操作步骤 + * 1. 定义小数变量代表父亲身高 + * 2. 定义小数变量代表母亲身高 + * 3. 通过儿子身高计算方式计算儿子身高 + * 4. 通过女儿身高计算方式计算女人身高 + */ + double a=177 , b=165;//父亲身高177 母亲身高165 + double as ,ad; + as=(a+b)*1.08/2;//儿子身高 + ad=(a*0.923+b)/2;//女儿身高 + System.out.println("儿子身高为:"+as); + System.out.println("女儿身高为:"+ad); + + } + public static void ad(){ + /** + * 红茶妹妹有21元钱,她攒了几天钱之后自己的钱比原来的两倍还多三块。绿茶妹妹有24元钱, + * 她攒了几天钱之后自己的钱正好是原来的两倍。那么红茶和绿茶现在的钱一样多,请问对么? + * ### 训练提示 + * 1. 用什么知识点来计算她们现在的钱有多少? + * 2. 如何对比两个人的钱数? + * ### 解题方案 + * 1. 使用赋值运算符和算术运算符计算各自的钱,使用比较运算符对比大小 + * ### 操作步骤 + * 1. 定义红茶妹妹原来的钱为整数变量 + * 2. 定义绿茶妹妹原来的钱为整数变量 + * 3. 使用赋值运算符和算术运算符计算其现有的钱 + * 4. 使用比较运算符对数值做出比较 + */ + double ads,sad; + ads=21*2+3; + sad=24*2; + System.out.println("红茶妹妹有"+ads); + System.out.println("绿茶妹妹有"+sad); + if (ads==sad){ + System.out.println("对"); + }else{ + System.out.println("不对"); + } + } + public static void ass(){ + /** + * 某小伙想定一份外卖,商家的优惠方式如下:鱼香肉丝单点24元,油炸花生米单点8元,米饭单点3元。 + * 订单满30元8折优惠。鱼香肉丝优惠价16元,但是优惠价和折扣不能同时使用。 + * 那么这个小伙要点这三样东西,最少要花多少钱? + * ### 训练提示 + * 1. 有两种购买方式,一种是不使用优惠价,另一种是使用优惠价。分别计算花费后,对两种方式的花费作对比。 + * ### 解题方案 + * 1. 使用算术运算符、赋值运算符和三元运算符联合完成本题 + * ### 操作步骤 + * 1. 使用算术运算符求出不使用优惠时的总价 + * 2. 使用三元运算符判断总价是否满足打折条件,并求出折后总价 + * 3. 使用算术运算符求出使用优惠价时的总价 + * 4. 使用三元运算符判断最终更合算的购买方式和花费 + */ + double af,fd; + af=(24+8+3)*0.8; + fd=16+8+3; + System.out.println("使用优惠价:"+af); + System.out.println("不使用优惠价:"+fd); + System.out.println("使用优惠价划不划算:"); + if (af>fd){ + System.out.println("划算!"); + } else if (af==fd) { + System.out.println("都划算!"); + }else{ + System.out.println("不划算!"); + } + + } +} + +``` + -- Gitee From e17697129adf9bfebc9bcf7107bd25e06ecdfc40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E7=87=95=E5=BC=BA?= <983662901.com> Date: Sun, 2 Apr 2023 19:00:21 +0800 Subject: [PATCH 2/2] =?UTF-8?q?36=E8=BF=90=E7=AE=97=E7=AC=A6=E7=BB=83?= =?UTF-8?q?=E4=B9=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...27\347\254\246\347\273\203\344\271\240.md" | 214 ++++++++++++++++++ 1 file changed, 214 insertions(+) create mode 100644 "36 \351\231\210\347\207\225\345\274\272/20230331 \350\277\220\347\256\227\347\254\246\347\273\203\344\271\240.md" diff --git "a/36 \351\231\210\347\207\225\345\274\272/20230331 \350\277\220\347\256\227\347\254\246\347\273\203\344\271\240.md" "b/36 \351\231\210\347\207\225\345\274\272/20230331 \350\277\220\347\256\227\347\254\246\347\273\203\344\271\240.md" new file mode 100644 index 0000000..bfde129 --- /dev/null +++ "b/36 \351\231\210\347\207\225\345\274\272/20230331 \350\277\220\347\256\227\347\254\246\347\273\203\344\271\240.md" @@ -0,0 +1,214 @@ +# 练习 + +```java +public class lianxi { + public static void main(String[] args) { + as(); + ad(); + asd(); + asd1(); + asd2(); + asd3(); + asd4(); + + } + public static void as(){ + /** + * ## 1、强制类型转换练习 + * (1)先声明两个byte类型的变量b1,b2,并分别赋值为10和20,求b1和b2变量的和, + * 并将结果保存在byte类型的变量b3中,最后输出b3变量的值 + * (2)先声明两个short类型的变量s1,s2,并分别赋值为1000和2000,求s1和s2变量的和, + * 并将结果保存在short类型的变量s3中,最后输出s3变量的值 + * (3)先声明1个char类型的变量c1赋值为'a',再声明一个int类型的变量num赋值为5, + * 求c1和num变量的和,并将结果将结果保存在char类型的变量letter中,最后输出letter变量的值。 + * (4)先声明两个int类型的变量i1,i2,并分别赋值5和2,求i1和i2的商, + * 并将结果保存在double类型的变量result中,最后输出result变量的值。如何得到结果2.5呢? + */ + byte b1,b2; + b1=10; + b2=20; + byte b3=(byte)(b1+b2); + System.out.println("b3="+b3); + + short s1,s2,s3; + s1=1000; + s2=2000; + s3=(short) (s1+s2); + System.out.println("s3 = " + s3); + + char c1='a'; + int num=5; + char letter=(char)(num+c1); + System.out.println("letter = " + letter); + + int i1=5,i2=2; + double result=(double)i1/i2; + System.out.println("result = " + result); + + } + public static void ad(){ + /** + * 1. 定义两个int类型变量a1和a2,分别赋值10,11,判断变量是否为偶数,拼接输出结果 + * 2. 定义两个int类型变量a3和a4,分别赋值12,13,判断变量是否为奇数,拼接输出结果 + */ + int a1=10,a2=11,a3=12,a4=13; + System.out.println(a1+"是否为偶数!"+ (a1%2==0)); + System.out.println(a2+"是否为偶数!"+ (a2%2==0)); + System.out.println(a3+"是否为奇数!"+ (a3%2==1)); + System.out.println(a4+"是否为奇数!"+ (a4%2==1)); + } + public static void asd(){ + /** + * 案例:为抵抗洪水,战士连续作战89小时,编程计算共多少天零多少小时? + * 1. 定义一个int类型变量hours,赋值为89 + * 2. 定义一个int类型变量day,用来保存89小时中天数的结果 + * 3. 定义一个int类型变量hour,用来保存89小时中不够一天的剩余小时数的结果 + * 4. 输出结果 + */ + int hours=89; + int day=hours/24; + int hour=hours%24; + System.out.println("一共"+day+"天"+hour+"小时"); + } + public static void asd1(){ + /** + * 案例:今天是周2,100天以后是周几? + * 1. 定义一个int类型变量week,赋值为2 + * 2. 修改week的值,在原值基础上加上100 + * 3. 修改week的值,在原值基础上模以7 + * 4. 输出结果,在输出结果的时候考虑特殊值,例如周日 + */ + int week=2; + week=week+100; + week=week%7; + switch (week) { + case 1: + System.out.println("星期一"); + break; + case 2: + System.out.println("星期二"); + break; + case 3: + System.out.println("星期三"); + break; + case 4: + System.out.println("星期四"); + break; + case 5: + System.out.println("星期五"); + break; + case 6: + System.out.println("星期六"); + break; + case 7: + System.out.println("星期天"); + break; + } + + } + public static void asd2(){ + /** + *1. 定义三个int类型变量,x,y,z,随意赋值整数值 + * 2. 定义一个int类型变量max,先存储x与y中的最大值(使用三元运算符) + * 3. 再次对max赋值,让它等于上面max与z中的最大值(使用三元运算符) + * 4. 输出结果 + */ + int x=34,y=31,z=57; + int max= xz ? max:z; + System.out.println("max = " + max); + + } + public static void asd3(){ + /** + * 1. 定义一个int类型变量year,赋值为今年年份值 + * 2. 定一个一个boolean类型变量,用来保存这个年份是否是闰年的结果 + * 3. 输出结果 + */ + int a=2023; + if ((a%4==0 && a%100!=0) || a%400==0){ + System.out.println(a+"是闰年"); + }else{ + System.out.println(a+"不是闰年"); + } + } + public static void asd4(){ + /** + * 案例:小明要到美国旅游,可是那里的温度是以华氏度为单位记录的。 + * 它需要一个程序将华氏温度(80度)转换为摄氏度,并以华氏度和摄氏度为单位分别显示该温度。 + * 1. 定义一个double类型变量hua,存储华氏温度80 + * 2. 定义一个double类型变量she,存储摄氏温度,根据公式求值 + * 3. 输出结果 + */ + double hua=80; + double she=(hua-32)/1.8; + System.out.println("华氏度 = " + hua +"℉"); + System.out.println("摄氏度 = " + she +"℃"); + + } +} + +``` + + + +# 拔高题 + +## 第一题 + +```java +如下代码的计算结果是: +int i = 1;//1.2 +i *= 0.2; //0.2 +i++; +System.out.println("i=" + i); +``` + +## 第二题 + +```java +如下代码的运算结果是: +int i = 2; +i *= i++; //4 + +int j = 2; +j *= j+1; //6 + +int k = 2; +k *= ++k; //6 + +System.out.println("i=" + i); +System.out.println("j=" + j); +System.out.println("k=" + k); +``` + +## 第三题 + +```java +如下代码的运算结果是: +int a = 3; +int b = 1; +if(a = b){ //()里面应该是条件,不是赋值,所以可能是等于,如果是等于,则执行 else + System.out.println("Equal"); +}else{ + System.out.println("Not Equal"); +} +``` + +## 第四题 + +```java +如下代码的运算结果是: +int a = 8, b = 3; +System.out.println(a>>>b); //1 +System.out.println(a>>>b | 2);//3 +``` + +## 第五题 + +如何用最有效的的方法计算2乘以8 + +```java +System.out.println("2*8="+2*8); +``` + -- Gitee