day02_Java学习笔记
九、方法的注意事项
方法可以重载
一个类中,出现多个方法的名称相同,但是它们的形参列表不同,那么这些方法就称为方法重载了。
例如:
//定义一个方法,输出参数n的值 public static void print(int n) { System.out.println(n); } //重载print方法,输出参数n的值 public static void print(int n, int m) { System.out.println(n + m); } //重载print方法,输出参数n的值 public static void print(int n, int m, int k) { System.out.println(n + m + k); }注意:方法重载只关心方法名称相同,形参列表不同(类型不同,个数不同,顺序不同),其他都无所谓。
无返回值的方法中可以直接通过单独的return;立即结束当前方法的执行。
十、类型转换
(一)自动类型转换
类型范围小的变量,可以直接赋值给类型范围大的变量。
byte—>short—>int—>long—>float—>double
char—>int—>long—>float—>double示例:
//自动类型转换 public static void autoTypeConversion() { //定义一个int类型的变量 int a = 10; //定义一个double类型的变量 double b = a; System.out.println(a); System.out.println(b); }
(二)强制类型转换
类型范围大的变量,不可以直接赋值给类型范围小的变量,会报错,需要强制类型转换
示例:
//强制类型转换 public static void forcedTypeConversion() { //定义一个double类型的变量 double b = 10.0; //定义一个int类型的变量 int c = (int)b; System.out.println(b); System.out.println(c); }注意:强制类型转换可能造成数据丢失(溢出);浮点型 强制转成整型,直接丢掉小数部分,保留整数部分返回
十一、表达式的自动类型提升
表达式的自动类型转换
在表达式中,小范围类型的变量会自动转换成表达式中较大范围的类型,再参与运算。
byte、short、char—>int—>long—>float—>double注意:
- 表达式的最终结果类型由表达式中的最高类型决定
- 在表达式中,byte、short、char是直接转换成int类型参与运算的。
示例:
public static double calculate(int a, double b, char c, byte d) { System.out.println(a + b + c + d); return a + b + c + d; }最后的值为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!”);综合练习:
//写一个程序,让用户键盘输入用户名和年龄并打印出来 package com.zzh.method; // 从 java.util 工具箱中取出 Scanner 工具 import java.util.Scanner; public class ScannerDemo1 { public static void main(String[] args) { // 创建Scanner对象,用于读取键盘输入 Scanner scanner = new Scanner(System.in); // 接收用户输入的用户名(字符串)和年龄(整数),并汇总打印 System.out.println("请输入用户名:"); String name = scanner.nextLine(); System.out.println("请输入年龄:"); int age = scanner.nextInt(); System.out.println("用户名是:" + name + ",年龄是:" + age); } }注意:
- System、String在JDK中的Java.lang包下
- lang包不需要我们导包,是默认的包
十三、运算符
(一)算数运算符
符号 作用 说明 + 加 - - 减 - * 乘 - / 除 Java中两个整数相除结果还为整数 % 取余 获取的是两个数据相除的余数
- 注意“+”符号在有些情况下可以做连接符
- “+”符号与字符串运算的时候用作连接符,结果依然是一个字符串
- 识别“+”符号是做运算还是连接的方法:
- 能算则算,不能算就连接在一起
(二)自增自减运算符
符号 作用 自增:++ 放在某个变量的前面或者后面,对变量自身的值加一 自减:– 放在某个变量的前面或者后面,对变量自身的值减一
注意:
++、–只能操作变量,不能操作字面量
++、–如果在变量前后单独使用是没区别的
int a = 10; ++a; a++;++、–如果不是单独使用(如在表达式中或同时有其它操作),放在变量前后会存在明显区别
在变量的前面,先对变量+1(-1),再拿变量的值运算
int a = 10; int rs = ++a;//先加再用在变量的后面,先拿变量的值运算,再对变量+1(-1)
int b = 10; int rs = b++;//先用再加
(三)赋值运算符
基本赋值运算符
就是“=”,从右边往左边看
int a = 10 //把10赋值给左边的a扩展赋值运算符
符号 用法 作用 底层代码形式 += a+=b 加后赋值 a=(a的类型)(a+b) -= a-=b 减后赋值 a=(a的类型)(a-b) *= a*=b 乘后赋值 a=(a的类型)(a*b) /= a/=b 除后赋值 a=(a的类型)(a/b) %= a%=b 取余后赋值 a=(a的类型)(a%b)
(四)关系运算符
符号 例子 作用 结果 > a>b 判断a是否大于b 成立返回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 != a!=b 判断a是否不等于b 成立返回true,不成立返回false
- 判断数据是否满足条件,最终会返回一个判断的结果,这个结果是布尔类型的值:true或者false
(五)三元运算符
格式:
条件表达式?值1:值2;执行流程:首先计算关系表达式的值,如果为true,返回值1,如果为false,返回值2
(六)逻辑运算符
把多个条件放在一起运算,最终返回布尔类型的值:true、false
符号 叫法 例子 运算逻辑 & 逻辑与 2>1&3>2 多个条件必须都是true,结果才是true;有一个false,结果就是false | 逻辑或 2>1|3<5 多个条件中只要有一个是true ! 逻辑非 !(2>1) 就是取反:你真我假,你假我真,前后条件的结果不同,才返回true ^ 逻辑异或 2>1^3>1 前后条件的结果相同,就直接返回false,前后条件的结果不同,才返回true
符号 叫法 例子 运算逻辑 && 短路与 2>10&&3>3 判断结果与“&”一样,过程不同:左边为false,右边不执行 || 短路或 2>1||3<5 判断结果与“|”一样,过程不同:左边为true,右边不执行
十四、程序流程控制
- 程序的三种执行顺序:
- 顺序结构
- 分支结构
- if
- switch
- 循环结构
- for
- while
- do-while
十五、分支结构
(一)if分支结构
第一种形式:
格式:
if(条件表达式1){ 代码1; }else if(条件表达式2){ 代码2; }执行流程
- 判断条件表达式的结果,如果为true执行语句体,为false就不执行语句体
注意事项
- if(条件){},()后不能跟“;”,否则{}中的代码将不受if的控制
- if语句中,如果大括号控制的只有一行代码,则大括号可以省略不写
第二种形式:
格式:
if(条件表达式){ 代码1; }else{ 代码2; }执行流程:
- 判断条件表达式的结果,如果为true执行语句体1,为false就执行语句体2
第三种形式
格式:
if(条件表达式1){ 代码1; }else if(条件表达式2){ 代码2; }else if(条件表达式3){ 代码3; } ... else{ 代码n; }执行流程:
- 先判断条件1的值,如果为true则执行语句体1,分支结束;如果为flase则判断条件2的值
- 如果值为true就执行语句体2,分支结束;如果为false则判断条件3的值
- ……
- 如果没有任何条件为true,就执行else分支的语句体n
(二)switch分支结构
是通过比较值是否相等,来决定执行哪条分支
结构:
switch (表达式) { case 值1: 执行代码1; break; case 值2: 执行代码2; break; ... default: 执行代码n; break; }执行流程:
- 先执行表达式的值,再拿着这个值去与case后的值进行匹配。
- 与哪个case后的值匹配为true就执行哪个case块的代码,遇到break就跳出switch分支。
- 如果全部case后的值与之匹配的都是false,则执行default块的代码。
if、switch的比较:各自适合什么业务场景?
- if在功能上远远强大于switch。
- 当前条件是区间的时候,建议使用if分支结构来实现
- 当条件是与一个一个的值比较的时候,建议用switch更合适(格式良好,性能较好,代码优雅)。
使用switch时有哪些注意事项?
- 表达式类型只能是byte、short、int、char,JDK5开始支持枚举,JDK7开始支持String、不支持double、float、long。
- case给出的值不允许重复,且只能是字面量,不能是变量。
- 正常使用switch的时候,不要忘记写break,否则会出现穿透现象。
switch穿透性能解决什么问题?
- 存在多个case分支的代码是一样时,可以把代码写到一个case块,其他case块通过穿透性能,穿透到该case块即可,这样可以简化代码。
更多推荐


所有评论(0)