day02_Java学习笔记 九、方法的注意事项方法可以重载一个类中出现多个方法的名称相同但是它们的形参列表不同那么这些方法就称为方法重载了。例如//定义一个方法输出参数n的值publicstaticvoidprint(intn){System.out.println(n);}//重载print方法输出参数n的值publicstaticvoidprint(intn,intm){System.out.println(nm);}//重载print方法输出参数n的值publicstaticvoidprint(intn,intm,intk){System.out.println(nmk);}注意方法重载只关心方法名称相同形参列表不同类型不同个数不同顺序不同其他都无所谓。无返回值的方法中可以直接通过单独的return立即结束当前方法的执行。十、类型转换一自动类型转换类型范围小的变量可以直接赋值给类型范围大的变量。byte—short—int—long—float—doublechar—int—long—float—double示例//自动类型转换publicstaticvoidautoTypeConversion(){//定义一个int类型的变量inta10;//定义一个double类型的变量doubleba;System.out.println(a);System.out.println(b);}二强制类型转换类型范围大的变量不可以直接赋值给类型范围小的变量会报错需要强制类型转换示例//强制类型转换publicstaticvoidforcedTypeConversion(){//定义一个double类型的变量doubleb10.0;//定义一个int类型的变量intc(int)b;System.out.println(b);System.out.println(c);}注意强制类型转换可能造成数据丢失溢出浮点型 强制转成整型直接丢掉小数部分保留整数部分返回十一、表达式的自动类型提升表达式的自动类型转换在表达式中小范围类型的变量会自动转换成表达式中较大范围的类型再参与运算。byte、short、char—int—long—float—double注意表达式的最终结果类型由表达式中的最高类型决定在表达式中byte、short、char是直接转换成int类型参与运算的。示例publicstaticdoublecalculate(inta,doubleb,charc,byted){System.out.println(abcd);returnabcd;}最后的值为double型十二、输入输出一输入即程序读取用户键盘输入的数据通过Java提供的Scanner程序来实现Scanner是Java提供好的API,程序员可以直接调用API(Application Programming Interface:应用程序编程接口)Java写好的程序程序员可以直接拿来调用Java为自己写好的程序提供了相应的程序使用说明书API文档https://www.oracle.com/java/technologies/javase-jdk21-doc-downloads.html二输出把程序中的数据展示出来System.out.println(“Hello World!”);综合练习//写一个程序让用户键盘输入用户名和年龄并打印出来packagecom.zzh.method;// 从 java.util 工具箱中取出 Scanner 工具importjava.util.Scanner;publicclassScannerDemo1{publicstaticvoidmain(String[]args){// 创建Scanner对象用于读取键盘输入ScannerscannernewScanner(System.in);// 接收用户输入的用户名字符串和年龄整数并汇总打印System.out.println(请输入用户名);Stringnamescanner.nextLine();System.out.println(请输入年龄);intagescanner.nextInt();System.out.println(用户名是name年龄是age);}}注意System、String在JDK中的Java.lang包下lang包不需要我们导包是默认的包十三、运算符一算数运算符符号作用说明加--减-*乘-/除Java中两个整数相除结果还为整数%取余获取的是两个数据相除的余数注意“”符号在有些情况下可以做连接符“”符号与字符串运算的时候用作连接符结果依然是一个字符串识别“”符号是做运算还是连接的方法能算则算不能算就连接在一起二自增自减运算符符号作用自增放在某个变量的前面或者后面对变量自身的值加一自减–放在某个变量的前面或者后面对变量自身的值减一注意、–只能操作变量不能操作字面量、–如果在变量前后单独使用是没区别的inta10;a;a;、–如果不是单独使用如在表达式中或同时有其它操作放在变量前后会存在明显区别在变量的前面先对变量1(-1)再拿变量的值运算inta10;intrsa;//先加再用在变量的后面先拿变量的值运算再对变量1(-1)intb10;intrsb;//先用再加三赋值运算符基本赋值运算符就是“”从右边往左边看inta10//把10赋值给左边的a扩展赋值运算符符号用法作用底层代码形式ab加后赋值a(a的类型)(ab)-a-b减后赋值a(a的类型)(a-b)*a*b乘后赋值a(a的类型)(a*b)/a/b除后赋值a(a的类型)(a/b)%a%b取余后赋值a(a的类型)(a%b)四关系运算符符号例子作用结果ab判断a是否大于b成立返回true不成立返回falseab判断a是否大于或等于b成立返回true不成立返回falseab判断a是否小于b成立返回true不成立返回falseab判断a是否小于或等于b成立返回true不成立返回falseab判断a是否等于b成立返回true不成立返回false!a!b判断a是否不等于b成立返回true不成立返回false判断数据是否满足条件最终会返回一个判断的结果这个结果是布尔类型的值true或者false五三元运算符格式条件表达式值1:值2;执行流程首先计算关系表达式的值如果为true,返回值1如果为false返回值2六逻辑运算符把多个条件放在一起运算最终返回布尔类型的值true、false符号叫法例子运算逻辑逻辑与2132多个条件必须都是true结果才是true;有一个false,结果就是false|逻辑或21|35多个条件中只要有一个是true!逻辑非!(21)就是取反你真我假你假我真前后条件的结果不同才返回true^逻辑异或21^31前后条件的结果相同就直接返回false前后条件的结果不同才返回true符号叫法例子运算逻辑短路与21033判断结果与“”一样过程不同左边为false,右边不执行||短路或21||35判断结果与“|”一样过程不同左边为true,右边不执行十四、程序流程控制程序的三种执行顺序顺序结构分支结构ifswitch循环结构forwhiledo-while十五、分支结构一if分支结构第一种形式格式if(条件表达式1){代码1;}elseif(条件表达式2){代码2;}执行流程判断条件表达式的结果如果为true执行语句体为false就不执行语句体注意事项if条件{}后不能跟“;”否则{}中的代码将不受if的控制if语句中如果大括号控制的只有一行代码则大括号可以省略不写第二种形式格式if(条件表达式){代码1;}else{代码2;}执行流程判断条件表达式的结果如果为true执行语句体1为false就执行语句体2第三种形式格式if(条件表达式1){代码1;}elseif(条件表达式2){代码2;}elseif(条件表达式3){代码3;}...else{代码n;}执行流程先判断条件1的值如果为true则执行语句体1分支结束如果为flase则判断条件2的值如果值为true就执行语句体2分支结束如果为false则判断条件3的值……如果没有任何条件为true就执行else分支的语句体n二switch分支结构是通过比较值是否相等来决定执行哪条分支结构switch(表达式){case值1:执行代码1break;case值2:执行代码2break;...default:执行代码nbreak;}执行流程先执行表达式的值再拿着这个值去与case后的值进行匹配。与哪个case后的值匹配为true就执行哪个case块的代码遇到break就跳出switch分支。如果全部case后的值与之匹配的都是false则执行default块的代码。if、switch的比较:各自适合什么业务场景?if在功能上远远强大于switch。当前条件是区间的时候建议使用if分支结构来实现当条件是与一个一个的值比较的时候建议用switch更合适(格式良好性能较好代码优雅)。使用switch时有哪些注意事项?表达式类型只能是byte、short、int、charJDK5开始支持枚举JDK7开始支持String、不支持double、float、long。case给出的值不允许重复且只能是字面量不能是变量。正常使用switch的时候不要忘记写break否则会出现穿透现象。switch穿透性能解决什么问题?存在多个case分支的代码是一样时可以把代码写到一个case块其他case块通过穿透性能穿透到该case块即可这样可以简化代码。