JavaSE 03 方法入门、判断语句(if)、选择语句(switch)、循环(for、while)
第六章 方法入门
6.1 概述
为每个运算符单独的穿件一个新的类和main方法,我们发现这样编写代码非常的繁琐,而且重复的代码太多。要避免这些重复的代码,就需要使用方法来实现。
- 方法:就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。当我们需要这个功能的时候,就可以去调用。这样既实现了代码的复用性,也解决了代码冗(rǒng)余的现象。
6.2 方法的定义
- 方法格式:
修饰符 返回值类型 方法名(参数列表) { 代码... return; } public static void() { 方法体 }
- 定义格式解释: 方法名称的命名规则和变量一样,使用小驼峰。
- 方法体:就是大括号当中可以包含任意条语句。
public class niu { public static void main(string[] args) { } //定义方法a、b public static void a() { System.out.println("A"); } public static void b() { System.out.println("B"); } }
6.3 方法的调用
- 格式:方法名称();
public class niu { public static void main(string[] args) { a(); //方法调用 } public static void a() { //方法a System.out.println("A"); } }
Jshell (JDK9后版本才有)
- 用于简易的开发,可以一次输入一个程序元素,立即查看结果,并根据需要进行调整。
- 运行方法
启动CMD
jshell //启动 /exit //退出 /* 以详细模式启动JShell jshell -v */
第七章 流程控制
- 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。
7.1 顺序结构
- 顺序执行,根据编写的顺序从上到下运行。
7.2 判断语句
7.2.1 if
1.if
- 格式:
if(关系表达式) { 语句体; }
- 执行流程 首先判断关系表达式看其结果是true还是false
- 如果是true就执行语句体
- 如果是false就不执行语句体
2.if…else 标准的
- 格式:
if(关系表达式) { 语句体1; } else { 语句体2; }
- 执行流程 首先判断关系表达式看其结果是true还是false
- 如果是true就执行语句体1
- 如果是false就执行语句体2
3.if…else if…else 复合的扩展的
- 格式:
if (判断条件1) { 语句体1; } else if (判断条件2) { 语句体2; } ... } else if (判断条件n) { 执行语句n; } else { 执行语句n+1; }
- 执行流程 首先判断关系表达式1看其结果是true还是false
- 如果是true就执行语句体1
- 如果是false就继续判断关系表达式2看其结果是true还是false
- 如果是true就执行语句体2
- 如果是false就继续判断关系表达式…看其结果是true还是false
- …
4. 用if语句替换三元运算符
int a = 10; int b = 20; int max = a > b ? a : b; //用if-else语句实现 if (a > b) { max = a ; } else { max = b; }
7.3 选择语句
7.3.1 switch
- 格式:
switch (表达式) { //表达式也叫被检测量 case 常量值1: 语句体1; break; case 常量值2: 语句体2; break; ... default: 语句体n+1; break; //可以省略此break,但是不推荐这么做 }
- 执行流程:(匹配哪一个case就从哪一个位置向下执行,知道遇到了break或者整体结束为止) 首先计算出表达式的值。
- 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,遇到break就会结束。
- 最后,如果有的case都和表达式的值不匹配,就会执行default语句部分,然后程序结束。
7.3.2 case的穿透性
- 注意:
- 多个case后的数值不可以重复。
- switch后面小括号当中只能是以下数据类型:
基本数据类型:byte/short/char/int
引用数据类型:String字符串、enum枚举 - switch语句格式可以很灵活;前后顺序可以颠倒;而且break语句还可以省略,直到遇到了下一个break或者整体结束才停止。
7.4循环语句
7.4.1 循环概述
循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
7.4.2 for
- 格式:
for (初始化表达式①;布尔值表达式②;步进表达式③) { 循环体④ }
- 执行流程: 执行顺序:①②③④>②③④>②③④…②不满足为止。
- ①负责完成循环变量初始化。(在循环开始最初执行,只做唯一一次)
- ②负责判断是否满足循环条件,不满足则跳出循环。
- ③具体执行语句。(每次循环之后都要进行的扫尾工作)
- ④循环后,循环条件所涉及变量的变化情况(重复要做的内容)
for (int i = 1; i <= 100; i++) { System.out.println("abc"); }
7.4.3 while
- 格式:
- 标准格式:
while (布尔表达式) { 循环体 }
- 扩展格式:
初始化表达式① while (布尔表达式②) { 循环体③ 步进表达式④ }
- 执行流程: ①②③④>②③④>②③④…②不满足为止。
- ①负责完成循环变量初始化。
- ②负责判断是否满足循环条件,不满足则跳出循环。
- ③具体执行语句。(每次循环之后都要进行的扫尾工作)
- ④循环后,循环条件所涉及变量的变化情况(重复要做的内容)
int i = 1; while (i <= 100) { System.out.println("abc"); i++; }
7.4.4 do…while
- do…while与if、while的区别,无条件先执行一次循环体。
- 格式:
- 标准格式:
do { 循环体 } while (布尔表达式);
- 扩展格式:
初始化表达式① do { 循环体③ 步进表达式④ } while (布尔表达式②);
- 执行流程: ①③④>②③④>②③④…②不满足为止。
- ①负责完成循环变量初始化。
- ②负责判断是否满足循环条件,不满足则跳出循环。
- ③具体执行语句。(每次循环之后都要进行的扫尾工作)
- ④循环后,循环条件所涉及变量的变化情况(重复要做的内容)
int i = 1; do { System.out.println("abc"); i++; } while (i <= 100);
7.4.5 循环语句的区别
- 如果条件判断从来没有满足过,那么for循环和while循环将会执行0次,但是do…while循环会至少执行一次。
- for循环的变量在小括号当中定义,只有循环内部才可以使用。while循环和do…while循环的初始化语句本来就在外面,所以出循环之后还可以继续使用。
7.4.6 跳出语句
- break关键字 可以用在switch语句当中,一旦执行,整个switch语句立刻结束。
- 还可以用在循环语句当中,整个循环语句立刻结束。
for (int i = 1; i <= 10; i++) { if(i == 4){ //程序执行3次后打断 break; } System.out.println("abc" + i); //i只输出到3 }
- continue关键字
一旦执行,立刻跳过当次循环剩余内容,马上开始下一次循环。
for (int i = 1; i <= 5; i++) { if(i == 4){ //程序执行到第4次时将跳过 continue; } System.out.println("abc" + i); //i只输出1-3、5 }
- 关于循环的选择:(建议) 凡是次数确定的场景多用for循环;否则多用while循环。
7.4.7 死循环
永远停不下来的循环,叫做死循环。
- 在cmd中要强制停止程序用快捷键Ctrl+C
- 死循环的标准格式:
while(true){ 循环体; }
7.4.8 嵌套循环
- 所谓嵌套循环,是指一个循环的循环体是另一个循环。比如for循环里面还有一个for,就是嵌套循环,就是嵌套循环。总共的循环次数=外循环次数*内循环次数
- 格式:
for(初始表达式①;循环条件②;步进表达式⑦) { for(初始表达式③;循环条件④;步进表达式⑥){ 执行语句⑤; } }
- 执行流程: 执行顺序:①②③④⑤⑥>④⑤⑥>⑦②③④⑤⑥>④⑤⑥
- 外循环一次,内循环多次。
- 比如做运动:一共做5组,每组10个。5组就是外循环,10个就是内循环。
for (int hour = 0; hour < 24; hour++) { for(int minute = 0; minute < 60; minute++) { for(int second = 0; second < 60; second++) { System.out.println(hour + "点" + minute + "分" + second + "秒"); } } }
第八章 定义方法
-
方法其实就是若干语句的功能集合。
方法好比一个工厂 - 举例:
蒙牛工厂 参数:原料:奶牛、饲料、水
返回值:产出物:奶制品
参数:就是进入方法的数据
返回值:就是从方法中出来的数据
8.1 定义方法的完整格式
/* 修饰符 返回值类型 方法名称(参数类型 参数名称,...) { 方法体 return 返回值; } */
修饰符:现阶段固定写法,public static
返回值类型:也就是方法最终产生的数据结果是什么类型
方法名称:方法的名字,规则和变量一样,小驼峰
参数类型:进入方法的数据是什么类型
参数名称:进入方法的数据对应的变量名称
PS:参数如果有多个,使用逗号进行分隔
方法体:方法需要做的事情,若干行代码
return:两个作用,第一停止当前方法;第二将后面的返回值还给调用处。
返回值:也就是方法执行后最终产生的数据结果
注意:return后面的“返回值”,必须和方法名称前面的“返回值类型”,保持对应。
8.2 方法调用的三种方式
8.2.1 单独调用
//格式:方法名称(参数); sum( a:10, b:20);
8.2.2 打印调用
//格式:System.out.println(方法名称(参数)); System.out.println(sum( a:10, b:20));
8.2.3 赋值调用
//格式:数据类型 变量名称 = 方法名称(参数); int num = sum( a:10, b:20);
注意:此前学习的方法,返回值类型固定写为void,这种方法只能单独调用,不能进行打印调用和赋值调用。
8.3 参数 Parameter
8.3.1 方法有参数
小括号中有内容。当一个方法需要一些数据条件,才能完成任务的时候,就是有参数。例如两个数字相加,必须知道两个数字是各自多少,才能相加。
public class Demo { public static void main(Sting[] args) { System.out.println(method( a:10, b:20)); } public static void method(int a, int b) { int result = a * b; } }
8.3.2 方法无参数
小括号留空。一个方法不需要任何数据的,自己就能独立完成任务,就是无参数。
public class Demo { public static void main(Sting[] args) { method(); } public static void method() { for (int i = 0; i < 5; i++) { System.out.println("test" + i); } } }
8.4 返回值 Return
8.4.1 有返回值
/* 定义一个方法,用来==求出==两个数字之和。(方法来计算,算完把结果告诉我,我来显示。) */ public class Demo { public static void main(Sting[] args) { int num = getSum( a: 10, b: 20); System.out.println(num); } public static int getSum(int a; int b) { int result = a + b; return result; } }
8.4.2 无返回值
/* 定义一个方法,用来==打印==两个数字之和。(方法来计算,算完之后自己负责显示结果。) */ public class Demo { public static void main(Sting[] args) { printSum( a: 10, b: 20); } public static void printSum(int a; int b) { int result = a + b; System.out.println(result); } }
**注意:**对于有返回值的方法,可以使用单独调用、打印调用或者赋值调用。但是对于无返回值得方法只能使用单独调用。
8.5 练习
- 定义一个方法,用来判断两个数字是否相同。
public class Demo { public static void main(String[] args) { System.out.println(isSame( a: 10, b: 20)); } pubilc static boolean isSame(int a, int b) { /* 方法1: boolean same = a == b ? true : false; return same; */ /* 方法2: boolean same = a == b; return same; */ /* 方法3: boolean same; if (a == b) { same = true; } else { same = false; } return same; */ //方法4: return a == b; } }
- 定义一个方法用来求a、b之间所有数字之和。
pubilc class Demo { public static void main(String[] args) { System.out.println("结果是:" + getSum( a: 1, b: 100)); } public static int getSum(int a, int b) { int sum = 0; for (int i = a; i <= b; i++) { sum += i; } return sum; } }
- 定义一个方法,用来打印指定次数的HelloWorld。
pubilc class Demo { public static void main(String[] args) { printCount( num: 100); } public static viod printCount(int num) { for(int i = 0; i <= num; i++) { System.out.println("HelloWorld" + (i + 1)); } } }
8.6 使用方法的注意事项
- 方法应该定义在类当中,但是不能再方法中再定义方法。
- 方法定义的前后顺序无所谓。
- 方法定义之后不会执行,如果希望执行,一定要调用:单独调用、打印调用、赋值调用。
- 如果方法有返回值,那么必须写上“return 返回值;”。
- return后的返回值类型必须和方法的返回值类型对应起来。
- 对于一个void没有返回值的方法,只能写return。
- 对于方法最后一行没有返回值的return可以省略不写。
- 一个方法可以有多个return,但是必须保证同时只有一个会被执行。
8.7 方法重载 Overload
8.7.1 基本使用
对于功能类似的方法,因为参数不同,却要记住那么多不同的变量名称,于是引入了方法重载。
- 方法名称相同,方法的内容不同。调用时根据参数来自动识别。
public class Demo { public static void main(String[] args) { sum( a: 10, b: 20); /根据参数会自动识别用哪个方法 } public static int sum(int a, int b) { return a + b; } public static int sum(int a, int b, int c) { return a + b + c; } public static int sum(int a, int b, int c, int d) { return a + b + c + d; } }
- 注意事项:
- (方法重载与下列因素有关)
- 参数个数不同
- 参数类型不同
- 参数的多类型顺序不同
public static int sum(int a, double b) { return (int) (a + b); } public static int sum(double a, int b) { return (int) (a + b); }
- (方法重载与下列因素无关)
- 与参数的名称无关
/* public static int sum(int x, double y) { return x + y; } public static int sum(int a, int b) { return a + b; } */
- 与方法的返回值类型无关
/* public static int sum(int a, int b) { return a + b; } public static double sum(int a, int b) { return a + b + 0.0; } */
8.7.2 重载练习
1.分别比较两个byte、short、int、long类型大小
public class Demo { public static void main(String[] args) { System.out.println(isSame((byte) 10, (byte) 20)); System.out.println(isSame((short) 10, (short) 20)); System.out.println(isSame( a: 10, b: 20)); System.out.println(isSame( a: 10L, b: 20L); } public static boolean isSame(byte a, byte b) { return a = b; } public static boolean isSame(short a, short b) { return a = b; } public static boolean isSame(int a, int b) { return a = b; } public static boolean isSame(long a, long b) { return a = b; } }
- 点赞
- 收藏
- 分享
- 文章举报
![](https://g.csdnimg.cn/static/user-reg-year/1x/0.png)
- Java基础巩固(控制流程语句之---if 判断语句、switch选择判断语句、while循环语句、for循环语句的格式,转义字符、break关键字、continue关键字)
- c++中的结构化语句 判断语句if 分支语句switch 循环语句 while 和 do while 循环语句for的使用
- linux shell常用循环与判断语句(for,while,until,if)使用方法
- 选择 | 循环 | 语句(if,if……else,switch,while,for)的理解和使用
- 实现1+2+3...+n,要求不能使用乘除法、循环、条件判断、选择相关的关键字(for、while、if、else、switch、case)。
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
- 循环控制语句for while do-while if switch
- C语言奇思妙想:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case 等关键字以及条件判断语句(A?B:C)
- java题目:求 1+2+...+n,要求不能用除法、 for、 while、 if、 else、 switch、 case 等关键字及条件判断语句( A?B:C)。
- 实现1+2+3...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)
- 求1+2+...+n的前n项和,但不用乘除法、for、while、if、else、switch、case等关键字及条件判断语句
- 求1+2+…+n, 要求不能使用乘除法、for、while、if、else、switch、case等关键字 以及条件判断语句(A?B:C)
- if条件和for循环语句、while、do..while、switch语法
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
- linux shell 流程控制(条件if,循环【for,while】,选择【case】语句实例
- js算法一则:不用if。。while。。for等循环和判断语句实现1+2+3+...+n的和
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。Java实现
- 求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)