ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Java入门:标识符、键盘录入与运算符全解析

Java入门:标识符、键盘录入与运算符全解析 Java学习日期 9.27~28今日知识点 ——标识符代码中所有我们自己起的名字类名、变量名、方法名标识符命名规则1、由数字、字母、下划线_、美元符$组成2、不能以数字开头3、不能是关键字4、区分大小写5、见名知意、驼峰命名小驼峰命名法方法、变量1、一个单词全部小写例如name、age、height2、多个单词第一个单词全部小写其他单词首字母大写appleX、appleY、appleCount大驼峰命名法类名1、一个单词首字母大写例如Snake、Student2、多个单词每个单词的首字母大写SnakeGame、HelloWorld练习代码今日知识点 ——键盘录入scanner练习代码importjava.util.Scanner;publicclassVariable8{publicstaticvoidmain(String[]args){//1、键盘录入身高体重ScannerscnewScanner(System.in);System.out.println(请输入身高);doubleheightsc.nextDouble();System.out.println(请输入体重);doubleweightsc.nextDouble();//2、计算BMI//BMI weight / (height * height)doubleBMIweight/(height*height);System.out.println(BMI值为BMI);}}今日知识点 ——运算符算术运算符 - * / %练习代码packageOperator;publicclassOperatorDemo1{publicstaticvoidmain(String[]args){//算术运算符 - * / % -- //整数计算,结果为整数inta10;intb3;System.out.println(ab);System.out.println(a-b);System.out.println(a*b);System.out.println(a/b);System.out.println(a%b);System.out.println(a);System.out.println(a--);System.out.println(ab);System.out.println(a);System.out.println(b);System.out.println(-----------------);//浮点数计算,结果为浮点数//在计算机当中小数直接参与计算结果是有可能不精确的因为计算机当中存储的是近似值不是精确值doublec10.0;doubled3.0;System.out.println(cd);//13.0System.out.println(c-d);//7.0System.out.println(c*d);//30.0System.out.println(c/d);//3.3333333333333335System.out.println(c%d);//1.0}}publicclassOperatorDemo3{publicstaticvoidmain(String[]args){/*描述给定秒数 seconds将其转换为对应的小时数、分钟数和秒数使得总时间不变但分钟数和秒数都不超过 59。 输入描述在一行中输入一个整数 seconds表示要转换的秒数满足 (0 ≤ seconds ≤ 10^8)。 输出描述一行包含三个整数依次为输入整数对应的小时数、分钟数和秒数可能为零中间用一个空格隔开。 示例1输入3661输出1 1 1说明 将 3661 秒转换3661 ÷ 3600 1 小时余 61 秒61 ÷ 60 1 分钟余 1 秒结果为 1 1 1。*///1.定义一个变量记录秒数intseconds3661;//2.获取小时数inthourseconds/3600;//3.获取分钟数intminuteseconds/60%60;//4.获取秒数intsecondseconds%60;System.out.println(hourminutesecond);}}今日知识点 ——算术运算符的三种情况-----数字运算数字运算类型不一样不能运算需要转成同类型的才能计算类型转换1、小-----大byteshortintlongfloatdouble隐式转换前面补0Java自动转换无需我们写代码转换步骤1、如有byte short类型的数据先提升为int类型转换步骤2、把取值范围小的提升为取值范围大的在进行运算2、大-----小强制转换去掉不要的弊端有可能改变原本的数据、导致精度丢失不会自动触发需要手动书写代码书写格式目标数据类型 变量名 目标数据类型被强转的数据;练习代码inta10;byteb(byte)a;bytea10;byteb20;bytec(byte)(ab);//a b的结果自动转换为int所以要强制转换为bytepackageOperator;publicclassOperatorDemo5{publicstaticvoidmain(String[]args){//练习二检查下面代码程序运行的时候是否会报错如果会请说明报错的原因并修改代码shorts1100;shorts2200;//short在进行计算的时候会自动提升为int类型再进行计算得到300将int类型转换为byte类型会报错因为int类型取值范围大于byte类型//byte result2 s1 s2;//System.out.println(result2);//修改代码方案1有可能会丢失精度//300:二进制 00000000 00000000 00000001 00101100//强制转换byte 00101100 ---44byteresult2(byte)(s1s2);//44System.out.println(result2);//修改代码方案2intresult3s1s2;System.out.println(result3);//300}}今日知识点 ——算术运算符的三种情况-----字符运算字符运算字符运算和数字运算不一样字符参与运算时会先转换成对应的 ASCII 码值整数再进行计算。例如A对应的 ASCII 码值是 65a对应 970对应 48。所以字符运算本质上还是整数运算只是参与运算的是字符对应的码值。比如A 1的结果是 66对应字符B。### 字符运算练习代码charaA;//65intb1;System.out.println(ab);//66packageOperator;importjava.util.Scanner;publicclassOperatorDemo6{publicstaticvoidmain(String[]args){//实现字母大小写转换将大写字母转换为小写字母//A--aScannerscnewScanner(System.in);//接收键盘录入一个大写字母System.out.println(请输入一个大写字母);//1、定义变量记录大写字母charcsc.next().charAt(0);//charAt(0)获取字符串的第一个字符//2、将大写字母转换为小写字母charc2(char)(c32);//3、输出小写字母System.out.println(c2);}}今日知识点 ——算术运算符的三种情况-----字符串运算字符串运算字符串只有操作没有其他操作任意数据字符串都是拼接操作并产生一个新的字符串例如108“岁”----“18岁”123“aaa”-----“123aaa”108“岁”12-----“18岁12”练习代码在这里插入代码片今日知识点 ——自增自减运算符与–练习代码inta10;a;a;--a;a--;a--;System.out.println(a);今日知识点 ——赋值运算符赋值运算符说明举例直接赋值int a 10;将 10 赋值给 a加后赋值a 5;等价于a a 5;-减后赋值a - 5;等价于a a - 5;*乘后赋值a * 5;等价于a a * 5;/除后赋值a / 5;等价于a a / 5;%取余赋值a % 5;等价于a a % 5;练习代码publicclassOperatorDemo7{publicstaticvoidmain(String[]args){/* 赋值运算符 加后赋值运算符 - 减后赋值运算符 * 乘后赋值运算符 / 除后赋值运算符 % 取余后赋值运算符 */inta10;intb20;//a b;//30//a - b;//-10//a * b;//200//a / b;//0a%b;//10System.out.println(a);System.out.println(b);//20}}今日知识点 ——关系运算符、比较运算符关系运算符 / 比较运算符符号说明结果ab判断 a 是否等于 b成立true / 不成立false!a!b判断 a 是否不等于 b成立true / 不成立falseab判断 a 是否大于 b成立true / 不成立falseab判断 a 是否大于等于 b成立true / 不成立falseab判断 a 是否小于 b成立true / 不成立falseab判断 a 是否小于等于 b成立true / 不成立false练习代码importjava.util.Scanner;publicclassOperatorDemo9{publicstaticvoidmain(String[]args){//练习二键盘录入一个三位数判断是否能被3整除ScannerscnewScanner(System.in);System.out.println(请输入一个三位数);intnumsc.nextInt();//判断是否能被3整除if(num%30){System.out.println(能被3整除);}else{System.out.println(不能被3整除);}}}importjava.util.Scanner;publicclassOperatorDemo8{publicstaticvoidmain(String[]args){//练习一键盘录入我和我帅帅男朋友的出生天数判断我是否大于我帅帅男朋友ScannerscnewScanner(System.in);System.out.println(请输入我的出生天数);intmyBirthdaysc.nextInt();System.out.println(请输入我帅帅男朋友的出生天数);intmyBoyFriendBirthdaysc.nextInt();//判断我是否大于我帅帅男朋友if(myBirthdaymyBoyFriendBirthday){System.out.println(我是大王);}else{System.out.println(我男朋友是大王);}}}今日知识点 ——逻辑运算符什么是逻辑运算符呢符号作用说明与而且同时成立才是符合要求的|或或者只要有一个符合要求即可!非取反取反与的区别 核心结论逻辑结果一样但执行过程天差地别booleanresult1num1num10;// 短路与booleanresult2num1num10;// 普通与// 当 num 在 1~10 之间时两者结果都为 true// 当 num 不在 1~10 之间时两者结果都为 false// 最终结果一模一样但是它们计算的过程完全不同区别在于“第二个条件要不要算”。 详细对比先记住两个名字写法名字另一个名字短路与短路逻辑与普通与逻辑与不短路 区别在于如果第一个条件已经能决定最终结果了还会不会去算第二个条件// 假设 num 0那么 num 1 就是 false// 用 短路与num1num10↓false→ 已经能确定结果一定是false了 后面的 num10就不算了→ 直接短路跳过 ✂️// 用 普通与num1num10↓false→ 虽然已经能确定结果但还是要算 后面的 num10→ 也算一遍然后才得出结果 四种情况对比表条件1条件2条件1 条件2条件1 条件2短路发生了吗truetrue✅ true✅ true没短路两个都算了truefalse❌ false❌ false没短路两个都算了falsetrue❌ false❌ false✅短路了条件2没算falsefalse❌ false❌ false✅短路了条件2没算总结当条件1为false时会短路跳过条件2而不会。 为什么要短路有什么好处好处 1效率更高省了一次计算// 假设有一个特别特别慢的计算方法num1很慢很慢的计算方法()// 如果 num 0 直接短路那个很慢的计算根本不会被调用 → 快// 如果用 不管 num 是什么那个很慢的计算都会被调用 → 慢死好处 2防止报错空指针保护⭐ 最重要的用途Stringsnull;// ❌ 危险用 会报错s!nulls.length()0// 第一步s ! null → false好的s 是 null// 第二步还是要算 s.length() → NullPointerException 炸了// ✅ 安全用 不会报错s!nulls.length()0// 第一步s ! null → false// 第二步直接短路跳过 s.length() → 安全不会报错 用一个小例子证明短路真的发生了publicclassDemo{publicstaticvoidmain(String[]args){intnum0;booleanresult;// 测试 resultnum1/什么/System.out.println(我被算到了);// 语法示意// num 1 是 false后面的 println 根本不会执行// 控制台没有任何输出 → 短路成功// 测试 resultnum1/什么/System.out.println(我被算到了);// num 1 虽然是 false但 println 还是执行了// 控制台打印 我被算到了 → 没短路}} 回到你代码里该用哪个// 你的代码num 在 1~10 之间booleanresultnum1num10;// 能跑但不推荐booleanresultnum1num10;// ✅ 推荐规则99% 的情况下你都应该用短路与因为它更高效、更安全。只有极少数特殊场景才用。 一句话总结是聪明的——前半句假了就不再算后半句省事又安全。是死板的——不管前半句是什么后半句都得算一遍。写代码时无脑用就对了练习代码importjava.util.Scanner;//逻辑与两个条件都为true时结果为true否则为falsepublicclassOperatorDemo10{publicstaticvoidmain(String[]args){//练习1 键盘录入一个整数判断这个数字是否在1~10之间ScannerscnewScanner(System.in);System.out.println(请输入一个整数);intnumsc.nextInt();//判断是否在1~10之间booleanresultnum1num10;System.out.println(result);}}importjava.util.Scanner;//逻辑或||至少有一个条件为true时结果为true否则为falsepublicclassOperatorDemo11{publicstaticvoidmain(String[]args){//练习2 键盘录入一个整数判断这个数字是否不在1~10之间ScannerscnewScanner(System.in);System.out.println(请输入一个整数);intnumsc.nextInt();//判断是否不在1~10之间// boolean result num 1 || num 10;// System.out.println(result);if(num1||num10){System.out.println(这个数字不在1~10之间);}else{System.out.println(这个数字在1~10之间);}}}importjava.util.Scanner;publicclassOperatorDemo13{publicstaticvoidmain(String[]args){//需求2寻找7的有缘数键盘录入一个两位整数只要该数字包含7或者是7的倍数就是7的有缘数。ScannerscnewScanner(System.in);System.out.println(请输入一个两位数);intnumsc.nextInt();//判断是否为7的有缘数intgenum%10;intshinum/10%10;System.out.println(ge7||shi7||num%70);}}importjava.util.Scanner;publicclassOperatorDemo12{publicstaticvoidmain(String[]args){//需求1键盘录入一个四位数判断这个数字是否为回文数。//回文数从前往后读和从后往前读都一样的数例如1221、2332等。ScannerscnewScanner(System.in);System.out.println(请输入一个四位数);intnumsc.nextInt();//判断是否为回文数intgenum%10;intshinum/10%10;intbainum/100%10;intqiannum/1000%10;System.out.println(geqianshibai);}}今日知识点 ——三元运算符格式关系表达式表达式1:表达式2;计算规则先计算关系表达式的值若成立true则执行表达式1反之不成立false则执行表达式2。练习代码publicclassOperatorDemo14{publicstaticvoidmain(String[]args){//利用三元运算符求两个整数的最大值//格式ab?a:b//定义两个整数a和b求它们的最大值inta10;intb20;intmaxab?a:b;System.out.println(max);}}今日知识点 ——运算符优先级小括号优先于所有下面是运算符优先级从高到低的排序表优先级运算符说明1最高()小括号优先于所有2--自增、自减3!非取反4*/%乘、除、取余5-加、减6关系运算符大于、大于等于、小于、小于等于7!关系运算符等于、不等于8短路与910?:三元运算符11最低-*/%赋值运算符练习代码
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进