本帖最后由 xiekai_sjz 于 2018-8-26 09:45 编辑
方法方法的使用
复习简单方法的使用
方法定义格式:
public static void 方法名称() {
方法体
}
方法调用格式:
方法名称();
方法注意事项:
1. 方法定义的先后顺序无所谓。
2. 方法定义必须是挨着的,不能在一个方法的内部定义另外一个方法。
3. 方法定义之后,自己不会执行的;如果希望执行,一定要进行方法的调用。
// 生成指定次数的for循环, 从0开始, 小于整数, 每次递增
5.fori
for (int i = 0; i < 5; i++) {
}
// 生成指定次数的for循环, 从整数开始, 大于0, 每次递减
5.forr
for (int i = 5; i > 0; i--) {
}
方法的定义格式
定义方法的完整格式:
数据类型 变量名 int a, int b, double c
修饰符 返回值类型 方法名称(参数类型 参数名称, 参数类型 参数名称, ...) { // 参数列表
方法体
return 返回值;
}
// 说明
修饰符: 目前写 public static
返回值类型: 方法执行结果的数据类型
方法名称: 方法的名字, 便于调用方法
参数类型: 传递进方法的数据的类型
参数名称: 传递进方法的数据的变量名称
方法体: 方法功能的实现代码
return: 结束当前方法, 并将返回值还给方法调用处
返回值: 方法执行结果. 返回值的数据类型必须和返回值类型一致
[Java] 纯文本查看 复制代码 // 求两个整数的和, 返回结果
public static int sum(int a, int b) {
int result = a + b;
return result;
}
public static double sum(double a, double b) {
double result = a + b;
return result;
}
方法的三种调用格式
方法的3种调用方式:
1. 单独调用:
方法名称(参数);
sum(1, 2);
2. 打印调用:
System.out.println(方法名称(参数));
System.out.println(sum(1, 2));
3. 赋值调用:
数据类型 变量名称 = 方法名称(参数);
int sum = sum(1, 2);
void方法只能单独调用,不能进行打印调用或者赋值调用。
方法的调用流程图解
总结: 方法调用流程:
对比有参数和无参数
定义参数原则:
如果方法执行依赖于外部数据, 就要定义参数
如果方法自身能完成功能, 则不需要参数
对比有返回值和无返回值
定义返回值原则:
如果方法执行结果, 需要被外界使用, 则需要返回值
如果方法执行结果, 不需要告诉外界, 则不需要返回值
注意事项:
有返回值的方法,可单独调用, 打印调用, 赋值调用
无返回值的方法, 只能单独调用
方法练习1: 定义方法比较两个数字是否相同
需求: 定义一个方法,用来判断两个数字是否相同, 在main()方法中测试
代码:
[Java] 纯文本查看 复制代码 /*
需求: 定义一个方法,用来判断两个数字是否相同, 在main()方法中测试
*/
public class Test {
// psvm
public static void main(String[] args) {
// 打印调用
System.out.println(isSame(10, 20)); // false
System.out.println(isSame(20, 20)); // true
}
/*
判断两个数字是否相同
返回值类型: boolean
方法名: isSame
参数列表: int a, int b
*/
public static boolean isSame(int a, int b) {
// 复杂方式
/*boolean same;
if (a == b) {
same = true;
} else {
same = false;
}
return same;*/
// 三元运算符方式
/*boolean same = a == b? true : false;
boolean same = a == b;
return same;*/
// 直接返回方式
// return a == b;
//if中直接返回结果方式
if (a == b) {
return true;
} else {
return false;
}
}
}
方法练习2: 定义方法求出1到100的累加和
需求: 定义一个方法,方法内部求出1-100之间所有数字的总和并返回. 在main()方法中调用并打印结果
代码:
[Java] 纯文本查看 复制代码 /*
需求: 定义一个方法,方法内部求出1-100之间所有数字的总和并返回. 在main()方法中调用并打印结果
*/
public class Test {
public static void main(String[] args) {
System.out.println("结果是:" + getSum());
}
/*
求出1-100之间所有数字的总和并返回
返回值类型: int
方法名称: getSum
参数列表: 无
*/
public static int getSum() {
// 定义求和变量
int sum = 0;
// for循环产生1-100的数字
for (int i = 1; i <= 100; i++) {
// 累加到sum
sum += i;
}
// 返回结果
return sum;
}
}
方法练习3: 打印指定次数的HelloWorld
需求: 定义一个方法,方法内部打印指定次数的HelloWorld. 次数通过方法的参数传递. 在main()方法中调用并打印结果
代码:
[Java] 纯文本查看 复制代码 /*
需求: 定义一个方法,方法内部打印指定次数的HelloWorld. 次数通过方法的参数传递. 在main()方法中调用并打印结果
*/
public class Test {
public static void main(String[] args) {
printHelloWorld(10);
}
/*
打印指定次数的HelloWorld
*/
public static void printHelloWorld(int num) {
for (int i = 0; i < num; i++) {
System.out.println("Hello world!!" + i);
}
}
}
方法定义的注意事项
注意事项:
1. 方法应该定义在类当中,但是不能在方法当中再定义方法。不能嵌套
2. 方法定义的前后顺序无所谓
3. 方法定义之后不会执行,如果希望执行,一定要调用:单独调用、打印调用、赋值调用
4. 如果方法有返回值,那么必须写上"return 返回值;",不能没有
5. return后面的返回值数据,必须和方法的返回值类型,对应起来
6. 对于一个void没有返回值的方法,不能写return后面的返回值,只能写return自己
7. 对于void方法当中最后一行的return可以省略不写
8. 一个方法当中可以有多个return语句,但是必须保证同时只有一个会被执行到,两个return不能连写
方法的重载方法重载的基本使用
方法重载:
Overload
多个方法, 名称相同, 参数列表不同
重载的好处: 定义多个方法实现类似的多个功能, 只需要记住一个方法名称
方法重载的注意事项
重载注意事项:
方法重载的参数列表不同包括:
1. 参数个数不同
2. 参数类型不同
3. 参数的多类型顺序不同
重载与以下无关
1. 与参数的名称无关
2. 与方法的返回值类型无关
多个方法, 名称相同, 参数列表不同(参数个数不同 || 参数类型不同 || 参数的类型顺序不同), 和参数名无关, 和返回值类型无关
[Java] 纯文本查看 复制代码 // 查看以下方法是否为重载关系
public class Test {
public static int sum(int a, int b) {
return a + b;
}
public static double sum(double a, double b) {
return a + b;
}
public static int sum(int a, int b, int c) {
return a + b + c;
}
}
重载练习1: 四种不同参数类型的方法
注意重载的方法如何通过参数确定调用哪个方法
需求: 定义方法比较两个数据是否相等
参数类型分别为:
两个byte类型
两个short类型
两个int类型
两个long类型
并在main()方法中测试
代码:
[Java] 纯文本查看 复制代码 /*
需求: 定义方法比较两个数据是否相等
参数类型分别为:
两个byte类型
两个short类型
两个int类型
两个long类型
并在main()方法中测试
*/
public class Test {
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(10, 20));
System.out.println(isSame(10L, 20L));
}
// 比较两个byte类型是否相等
public static boolean isSame(byte a, byte b) {
System.out.println("byte参数的方法执行");
return a == b;
}
// 比较两个short类型是否相等
public static boolean isSame(short a, short b) {
System.out.println("short参数的方法执行");
return a == b;
}
// 比较两个int类型是否相等
public static boolean isSame(int a, int b) {
System.out.println("int参数的方法执行");
return a == b;
}
// 比较两个long类型是否相等
public static boolean isSame(long a, long b) {
System.out.println("long参数的方法执行");
return a == b;
}
}
重载练习2: 判断方法的正确重载
[Java] 纯文本查看 复制代码 public class Demo03OverloadJudge {
public static void open(){}
public static void open(int a){} // 正确重载
static void open(int a,int b){} // 代码错误:和第8行冲突
public static void open(double a,int b){} // 正确重载
public static void open(int a,double b){} // 代码错误:和第6行冲突
public void open(int i,double d){} // 代码错误:和第5行冲突
public static void OPEN(){} // 代码正确不会报错,但不是重载
public static void open(int i,int j){} // 代码错误:和第3行冲突
}
重载练习3: 实现重载的println方法
需求: 自己定义方法, 能够打印各种类型的数据:
byte, short, int, long, float, double, char, boolean
String
|
|