diff --git "a/01\350\213\217\346\270\205\345\215\216/20221124\345\255\246\344\271\240\346\200\216\344\271\210\345\256\211\350\243\205jdk\345\222\214\344\275\277\347\224\250.md" "b/01 \350\213\217\346\270\205\345\215\216/20221124 \345\255\246\344\271\240\346\200\216\344\271\210\345\256\211\350\243\205jdk\345\222\214\344\275\277\347\224\250.md" similarity index 100% rename from "01\350\213\217\346\270\205\345\215\216/20221124\345\255\246\344\271\240\346\200\216\344\271\210\345\256\211\350\243\205jdk\345\222\214\344\275\277\347\224\250.md" rename to "01 \350\213\217\346\270\205\345\215\216/20221124 \345\255\246\344\271\240\346\200\216\344\271\210\345\256\211\350\243\205jdk\345\222\214\344\275\277\347\224\250.md" diff --git "a/01\350\213\217\346\270\205\345\215\216/20221125IDEA\347\232\204\344\275\277\347\224\250\345\222\214java\345\237\272\347\241\200\350\257\255\346\263\225.md" "b/01 \350\213\217\346\270\205\345\215\216/20221125 IDEA\347\232\204\344\275\277\347\224\250\345\222\214java\345\237\272\347\241\200\350\257\255\346\263\225.md" similarity index 100% rename from "01\350\213\217\346\270\205\345\215\216/20221125IDEA\347\232\204\344\275\277\347\224\250\345\222\214java\345\237\272\347\241\200\350\257\255\346\263\225.md" rename to "01 \350\213\217\346\270\205\345\215\216/20221125 IDEA\347\232\204\344\275\277\347\224\250\345\222\214java\345\237\272\347\241\200\350\257\255\346\263\225.md" diff --git "a/01 \350\213\217\346\270\205\345\215\216/20221129 \351\224\256\347\233\230\345\275\225\345\205\245\344\270\216\350\277\220\347\256\227\347\254\246.md" "b/01 \350\213\217\346\270\205\345\215\216/20221129 \351\224\256\347\233\230\345\275\225\345\205\245\344\270\216\350\277\220\347\256\227\347\254\246.md" new file mode 100644 index 0000000000000000000000000000000000000000..37f1e9afb110c4c4a6c9e66911a34f8384194892 --- /dev/null +++ "b/01 \350\213\217\346\270\205\345\215\216/20221129 \351\224\256\347\233\230\345\275\225\345\205\245\344\270\216\350\277\220\347\256\227\347\254\246.md" @@ -0,0 +1,278 @@ +# 键盘录入与运算符 + +#### 2022.11.29 + +### 键盘录入 + +让用户输入,程序负责打印输出。 + +1.创建扫描器。 + +```java +Scanner sc=new Scanner(System.in); +``` + +2.打印提示信息。 + +```java +System.out.println("请输入姓名:"); +``` + +3.创建对应变量用于接收。 + +```java +String name=sc.next(); +String name=sc.nextline(); // 输出一整行的信息 +``` + +4.使用变量输出。 + +```java +System.out.println("姓名:"+name); +``` + + + +##### 课堂作业 + +```java +import java.util.Scanner; + +public class a1 { + public static void main(String[] args) { + Scanner sc=new Scanner(System.in); + System.out.println("请输入姓名:"); + String name=sc.next(); + System.out.println("请输入年龄:"); + int age =sc.nextInt(); + System.out.println("请输入身高:"); + double height =sc.nextDouble(); + System.out.println("姓名:"+name); + System.out.println("年龄:"+age); + System.out.println("身高:"+height); + } +} +``` + + + +### 运算符 + +1.类型转换 + +——**自动类型转换**和**强制类型转换**。 + +1.1隐式转换(自动转换) + +——**把一个表示数据范围小的数值或者变量赋值给另一个表示数据范围大的变量。** + +```java +int a=10; +double b=a; +System.out.println(a); +System.out.println(b); +//其中输出结果为:a=10,b=10.0 +``` + + + +![1](.\images\1.png) + +说明: + +1.整数默认是int类型,byte、short和char类型数据参与运算均会自动转换为int类型。 + +```java +byte a1 = 10; +byte a2 = 20; +byte a3 = a1+a2; +// 第三行代码会报错,b1和b2会自动转换为int类型,计算结果为int,int赋值给byte需要强制类型转换。 +// 修改为: +int num = b1+b2; +//或: +byte b3=(byte)(b1+b2); +``` + +2.boolean类型不能与其他基本数据类型相互转换。 + +**1.2强制转换** + +**——把一个表示数据范围大的数值或者变量赋值给另一个表示数据范围小的变量。** + +格式:**目标数据类型 变量名 = (目标数据类型)值或者变量;** + +```java +double num=5.5; +int num2 =(int) num; //会丢失部分值 +//输入结果为 5 +``` + +1.3 常量优化机制 + +```java +byte a = 3; +byte b = 4; +byte c = a + b; //错误。因为两个byte变量相加,会先提升为int类型 +byte d = 3 + 4; //正确。常量优化机制 +``` + +在编译时,整数常量的计算会直接算出结果,并且会自动判断该结果是否在byte取值范围内, + +- 在:编译通过 + +- 不在:编译失败 + + + +### 算术运算符 + +| 符号 | 作用 | +| ---- | ---- | +| + | 加 | +| - | 减 | +| * | 乘 | +| / | 除 | +| % | 取余 | + +注意: + +- / 取结果的商, + +- % 取结果的余数。 + +如果想得到小数结果就要有小数参与: + +```java +int c=10; +double d=3.0; +// c/d=3.333333 +// c%d=1.0 +``` + +> **练习:分别得到123这个数的个位,十位和百位上的数字** + +```java +public class a3 { + public static void main(String[] args) { + int num=942; + int a=num%10; // 个位 + int b=num/10%10; // 十位 + int c=num/100; // 百位 + System.out.println(a); + System.out.println(b); + System.out.println(c); + } +} +``` + +**字符的“+”操作** + +'a'=97 'A'=65 '0'=48 + +```java +char ch1 = 'a'; +System.out.println(ch1 + 1); // 输出98,97 + 1 = 98 +``` + +算术表达式中包含不同的基本数据类型的值的时候,整个算术表达式的类型会自动进行提升。 + +```html +1. byte类型,short类型和char类型将被提升到int类型,不管是否有其他类型参与运算。 +2. 整个表达式的类型自动提升到与表达式中最高等级的操作数相同的类型 +3. 等级顺序:byte,short,char --> int --> long --> float --> double +``` + +例如: + +```java +byte b1 = 10; +byte b2 = 20; +// byte b3 = b1 + b2; // 该行报错,因为byte类型参与算术运算会自动提示为int,int赋值给byte可能损失精度 +int i3 = b1 + b2; // 应该使用int接收 +byte b3 = (byte) (b1 + b2); // 或者将结果强制转换为byte类型 +------------------------------- +int num1 = 10; +double num2 = 20.0; +double num3 = num1 + num2; // 使用double接收,因为num1会自动提升为double类型 +``` + +**字符串中的”+“操作** + +在”+”操作中,如果出现了字符串,就是连接运算符,否则就是算术运算。当连续进行“+”操作时,从左到右逐个执行。 + +```java +System.out.println(1 + 99 + "年白酒"); +// 100+"年白酒"——100年白酒 +System.out.println(1 + 2 + "兔子" + 3 + 4); +// 3 + "兔子" + 3 + 4—— 3兔子(字符串)+ 3 + 4——3兔子34 +// 只要前面有字符串,后面都被污染成字符串 +// 可以使用小括号改变运算的优先级 +System.out.println(1 + 2 + "兔子" + (3 + 4)); // 输出:3兔子7 +``` + + + +### 作业 + +1.设计一个程序,用户输入一个四位数的整数后,程序能获取这四位数的个位,十位,百位和千位.并在控制台输出这四个数字; + +```java +import java.util.Scanner; + +public class a2 { + public static void main(String[] args) { + Scanner sc=new Scanner(System.in); + System.out.println("请输入一个四位数整数:"); + int num= sc.nextInt(); + + int a = num/1000; //千位 + int b = num%1000/100; //百位 + int c=num%1000%100/10;//十位 + int d=num%1000%100%10;//个位 + System.out.println(num); + System.out.println("该数的个位为:"+d+" "+"十位为:"+c+" "+"百位为:"+b+" "+"千位为:"+a); + } + +} +``` + +2.华氏温度和摄氏温度互相转换,从华氏度变成摄氏度你只要减去32,乘以5再除以9就行了,将摄氏度转成华氏度,直接乘以9,除以5,再加上32即行 + +```java +import java.util.Scanner; + +public class a4 { + public static void main(String[] args) { + Scanner sc=new Scanner(System.in); + System.out.println("请输入华氏度:"); + int hsd=sc.nextInt(); + int ssd=(hsd-32)*5/9; + System.out.println("请输入摄氏度:"); + int ssd2=sc.nextInt(); + int hsd2=ssd2*9/5+32; + System.out.println(hsd+"华氏度="+ssd+"摄氏度"); + System.out.println(ssd2+"摄氏度="+hsd2+"华氏度"); + } +} +``` + +3.键盘输入一个年份,判断其是不是闰年. + +```java +import java.util.Scanner; + +public class a5 { + public static void main(String[] args) { + Scanner sc=new Scanner(System.in); + System.out.println("请输入年份:"); + int yy=sc.nextInt(); + if (yy%4==0&&yy%100!=0 ||yy%400==0) { + System.out.println(yy + "是闰年。"); + } + else { + System.out.println(yy + "不是闰年。"); + } + } +} +``` + diff --git "a/01 \350\213\217\346\270\205\345\215\216/20221201 \350\277\220\347\256\227\347\254\246.md" "b/01 \350\213\217\346\270\205\345\215\216/20221201 \350\277\220\347\256\227\347\254\246.md" new file mode 100644 index 0000000000000000000000000000000000000000..5c5a5f26dd6955949c050bc4e73fde0519058c23 --- /dev/null +++ "b/01 \350\213\217\346\270\205\345\215\216/20221201 \350\277\220\347\256\227\347\254\246.md" @@ -0,0 +1,235 @@ +# 运算符 + +#### 2022.12.01 + +### 自增自减运算符 + +| 符号 | 作用 | 说明 | +| ---- | ---- | ---- | +| ++ | 自增 | +1 | +| -- | 自减 | -1 | + +++和-- 既可以放在变量的后边,也可以放在变量的前边。 + +```java +a++ or ++a +a-- or --a +``` + +当++或--单独使用时,所以此时放前/后并无区别。 + +```java +public static void main(String[] args) { + int a=10,b=15; + a++; + --b; + System.out.println(a);// a:11 + System.out.println(b);// b:14 + } +``` + +当++或--处在的表达式出现其他运算符时,区分的方式是谁在前面。 + +```java +int x = 10; +int y = x++ + x++ + x++; +System.out.println(y); // y的值是多少? +/* +解析,三个表达式都是++在后,所以每次使用的都是自增前的值,但程序自左至右执行,所以第一次自增时,使用的是10进行计算,但第二次自增时,x的值已经自增到11了,所以第二次使用的是11,然后再次自增。。。 +所以整个式子应该是:int y = 10 + 11 + 12; +输出结果为33。 +*/ +``` + + + +### 赋值运算符 + +赋值运算符的作用是将一个表达式的值赋给左边,左边必须是可修改的,不能是常量。 + +| 符号 | 作用 | 说明 | +| ---- | :--------- | -------------------- | +| = | 赋值 | a=10 | +| += | 加厚赋值 | a+=b | +| -= | 减后赋值 | a-=b,将a-b的值给a | +| *= | 乘后赋值 | a*=b,将a×b的值给a | +| /= | 除后赋值 | a/=b,将a÷b的商给a | +| %= | 取余后赋值 | a%=b,将a÷b的余数给a | + +**注意:扩展的赋值运算符隐含了强制类型转换。** + + + +### 关系运算符 + +#### (比大小) 返回布尔型的值 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 | +| < | ab & ab | bb ^ ab //false +!(a>b) //输出true +``` + + + +### 短路逻辑运算符 + +| 符号 | 作用 | 说明 | +| ---- | ------ | ------------------------------------------------ | +| && | 短路与 | 如果条件一不满足,条件二也不会运行判断,结果不变 | +| \|\| | 短路或 | 如果条件一满足,条件二则不运行判断 | + +```java +int x=3,y=4; +System.out.println((x++ > 4) && (y++ > 5)); // 左边已经可以确定结果为false,右边不参与运算 +System.out.println(x); // 4 +System.out.println(y); // 4 +``` + + + +### 三元运算符 + +语法: + +```java +关系表达式 ? 表达式1:表达式2 +``` + +举例: + +```java +int a=10,b=20; +int c=a>b ? a:b +// a和b相比,如果a>b输出a,否则输出b +``` + + + +### 作业 + +利用三元运算符求任意三个数中最大者 【三元】 + +```java +public class a2 { + public static void main(String[] args) { + int a1=30,a2=25,a3=15; + int temps=a1>a2 ? a1:a2; + int maxs=temps>a3 ? temps:a3; + System.out.println(maxs); + } +} +``` + + + +若任意两数和是3的倍数或其中一个为3,则输出true,否者输出false 【断路或】 + +``` java +public class a2 { + public static void main(String[] args) { + Scanner sc=new Scanner(System.in); + System.out.println("请输入第一个数:"); + int a1=sc.nextInt(); + System.out.println("请输入第二个数:"); + int a2=sc.nextInt(); + boolean a3=(a1+a2)%3==0 || a1==3 || a2==3; + System.out.println(a3); + } +} +``` + + + +身高是具有遗传性的,子女的身高和父母的身高有一定的关系。假定,父母和子女的身高遗传关系如下: + +> 儿子身高(厘米)=(父亲身高+母亲身高) ×1.08÷2 +> +> 女儿身高(厘米)=(父亲身高×0.923+母亲身高) ÷2 +> +> 现有父亲身高177CM,母亲身高165CM。求子女身高分别预计为多少?【使用变量的定义和算术运算符完成本题】 + +```java +public class a2 { + public static void main(String[] args) { + double dd=177,mm=165; + double boy=(dd+mm)*1.08/2; + double girl=(dd*0.923+mm)/2; + System.out.println("儿子身高为:"+boy); + System.out.println("女儿身高为:"+girl); + } +} +``` + + + +红茶妹妹有21元钱,她攒了几天钱之后自己的钱比原来的两倍还多三块。绿茶妹妹有24元钱,她攒了几天钱之后自己的钱正好是原来的两倍。 + +- 那么红茶和绿茶现在的钱一样多,请问对么?【使用赋值运算符和算术运算符计算各自的钱,使用比较运算符对比大小】 + +```java +public class a1 { + public static void main(String[] args) { + int hc=21,lc=24; + hc=hc*2+3; + lc*=2; + System.out.println(hc==lc); + } +} +``` + + + +小明想在食堂打包一份午饭,商家的优惠方式如下:鱼香肉丝单点24元,油炸花生米单点8元,米饭单点3元。订单满30元8折优惠。鱼香肉丝优惠价16元,但是优惠价和折扣不能同时使用。那么这个小伙要点这三样东西,最少要花多少钱?【使用算术运算符、赋值运算符和三元运算符联合完成本题】 + +```java +public class a1 { + public static void main(String[] args) { + double yxrs = 24; + double money1 = yxrs + 8+3; + money1 =money1*0.8; + yxrs=16; + double money2=yxrs+8+3; + double cost = money1 < money2 ? money1 : money2; + System.out.println("最少需要" + cost + "元"); + } +} +``` + diff --git "a/01 \350\213\217\346\270\205\345\215\216/images/1.png" "b/01 \350\213\217\346\270\205\345\215\216/images/1.png" new file mode 100644 index 0000000000000000000000000000000000000000..c86a9fb95c962964cddebf0c9ea7f3815a2bf02f Binary files /dev/null and "b/01 \350\213\217\346\270\205\345\215\216/images/1.png" differ