1.do-while 循环语句
格式:①初始化条件
②循环条件
③迭代条件
④循环体
2.
①
do{
④
③
}while(②);
do-while与while的区别:do-while循环至少会执行一次!
3.一般情况下,在无限循环内部要有程序终止的语句,使用break实现。若没有,那就是死循环!
4.嵌套循环
将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while均可以作为外层循环和内层循环。
99乘法表:
class TestJiuJiu{
public static void main(String[] args){
for(int i = 1;i <= 9;i++){//一共有9行
for(int j = 1;j <= i;j++){//每行有i个等式
System.out.print(i + "x" + j + "=" + i*j + "\t");
}
System.out.println();
}
}
}
5.特殊流程控制语句break,continue
break语句用于终止某个语句块的执行,终止循环体
用法举例 :
public class TestBreak{
public static void main(String args[]){
for(int i = 0; i<10; i++){
if(i==3)
break;
System.out.println(" i =" + i);
}
System.out.println("Game Over!");
}
}
continue 语句
continue语句用于跳过某个循环语句块的一次执行,结束本次循环执行,进行下一次循环。
continue语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环
continue语句用法举例
public class ContinueTest {
public static void main(String args[]){
for (int i = 0; i < 100; i++) {
if (i%10==0)
continue;
System.out.println(i);
}
}
}
6.break只能用于switch语句和循环语句中。
continue 只能用于循环语句中。
二者功能类似,但continue是终止本次循环,break是终止本层循环。
break、continue之后不能有其他的语句,因为程序永远不会执行其后的语句。
7.方法概述
减少重复性劳动,提高代码重用性。
比如,打印乘法口诀的代码要多次的执行,如果每次都写两个循环来实现这样的功能的话,不但代码变多,使程序的可读性变差,
而且重复劳动非常多,解决的办法就是将这些经常重复使用到的代码提出来,放到一个{}中,并给这个{}起一个名字,
以后再次使用到这个{}的内容时,只需要调用这个名字就可以了,这个提取重复内容的过程就是方法的定义过程,{}中的内容,
就是方法的内容。
8.方法定义及格式
简单的说:方法就是完成特定功能的代码块{}
在很多语言里面都有函数的定义
函数在Java中被称为方法
9.方法格式的解释说明
- 修饰符
比较多,后面会详细介绍。目前可以这样记忆:被main方法直接调用的方法,定义时固定写成public static
- 返回值类型
用于限定返回值的数据类型(可以是基本数据类型,比如:byte,short,int,long等,也可以是引用数据类型,如String,数组,对象引用等,也可以什么都不返回,特定写成void)
需不需要返回值,需要什么类型的返回值,完全取决于业务逻辑,没有统一规定
- 方法名
一个名称,一般小写,多个单词使用驼峰命名,尽量做到见名知义
- 参数类型 限定调用方法时传入参数的数据类型
- 参数名
是一个变量,接收调用方法时传入的参数
参数类型和形参名合起来称为形参列表
- 方法体
完成功能的代码,每次方法被调用,就执行一次这里面的代码
- return
结束方法以及返回方法指定类型的值,如果方法定义时指定返回值为void,则return后不能接任何东西,此时的return可以省略
- 返回值 程序被return带回的结果,返回给调用者
10.自定义方法的位置
- 类体内
- 不能在方法中再定义方法,或者说方法不能嵌套定义
目前由于还没有涉及到类和面向对象,所以我们自定义的类都是和main方法在同一个类中,这时要求所定义的方法的修饰符必须是public static,暂时记住即可
11.
- 自定义的方法修饰符目前可以固定写成public static
- 返回值要看具体的方法功能,可以是void,可以是基本数据类型,可以是引用数据类型
- 方法名做到见名知义
- 形参列表里的参数类型可以是基本数据类型和引用数据类型
- return的含义:
用来表示一个方法的结束,并且携带返回值(如果有的话)
一旦携带返回值,一定要和方法定义的返回值类型相同或者是可以自动转换的类型,或者是子类型
12.案例:求三个数中最大值
/*
键盘录入三个数据,返回三个数中的最大值
*/
import java.util.Scanner;
class FunctionTest3 {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数据:");
int a = sc.nextInt();
System.out.println("请输入第二个数据:");
int b = sc.nextInt();
System.out.println("请输入第三个数据:");
int c = sc.nextInt();
int max = getMax(a,b,c);//调用方法,将返回值赋值给一个变量
System.out.println("三个数据中的最大值是:"+max);
}
/*
需求:返回三个数中的最大值
两个明确:
返回值类型:int
参数列表:int a,int b,int c
*/
13方法定义和使用的注意事项
1.自定义的方法不调用的话,不会自动执行
2.方法与方法是平级关系,不能嵌套定义
3.方法定义的时候参数之间用逗号隔开
4.方法调用的时候不用在传递数据类型,只传值,或者是变量名即可,例如
int res = add(1,2);
//也可以直接传递常量值
int a = 1,b = 2;
int res = add(a,b);
//以下调用是错误的,调用方法时不用再把实参的类型加上
//int res = add(int a,int b);
5.如果方法有明确的返回值,一定要有return带回一个同类型值(或者可以自动向上转型的返回值),比如,有如下方法定义:
public static int test(){
short s = 12;
return s; //s虽然是short型,但是可以自动转型成int型
}
14.方法重载
在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表(参数个数或者参数类型)不同即可,这就叫方法的重载。
如果一个类中存在两个或者两个以上同名的方法,但是形参列表不同,他们就是方法的重载
方法重载特点
- 与返回值类型无关,只看方法名和参数列表(形参个数,类型)
- 在调用时,虚拟机通过参数列表的不同来区分同名方法
15.自定义方法之间的互相调用
之前使用的自定义方法都是被main方法调用,实际上我们自己自定义的方法之间同样可以互相调用
例如,有如下两个方法,其中一个就调用了另一个方法,这两个方法在定义的顺序上没有先后要求
public static void speak(String content) {
sayHi(); //调用另一个自定义方法
System.out.println("我想说的是: "+content);
}
public static void sayHi() {
System.out.println("Hi");
}
public static void main(String[] args) {
speak("天气不错");
}
16.自定义方法总结:
- 方法定义和格式
固定的public static 返回值 方法名(形参类型1 形参名1,形参类型2 形参名2...)
- 一个没有返回值的方法只能单独调用,不能赋值,不能打印。
- 可以使用带有返回值的方法的返回值(打印/赋值),也可以不理会它的返回值(单独调用)
- 一个类中的同名,但是形参个数或者类型不同的多个方法称为方法的重载
- 返回值类型不能区别两个方法是否是方法重载