一、定义方法的基本格式
修饰符 返回值类型 方法名(参数列表){
方法体;return结果;
}
1、 修饰符:public static 固定写法 (初期仅当记忆)
2、返回值类型: 表示方法运行的结果的数据类型 (即return后的返回值所属的类型),方法执行后将结果返回到调用处 (通常为main所调用的位置)
3、 参数列表:方法在运算过程中的未知数据,由参数类型和参数名称两部分组成(即创建方法中括号中的数据,只定义不赋值,参数如果有多个,使用逗号进行分隔),调用处调用方法时传递(调用处在调用方法时,会往括号中赋值)
4、return:将方法执行后的结果带给调处,方法执行到return ,整体方法运行结束(在没有返回值数据时可以省略不写)
//要求:调用方法打印一个五行十列的星形矩阵
public classJuZhen {public static voidmain(String[] args) {
method1();
}public static voidmethod1() {for (int i = 0; i < 5; i++) {for (int j = 0; j < 10; j++) {
System.out.print("*");
}
System.out.println();
}
}
}//测试结果:
**********
**********
**********
**********
**********
二、定义方法两个明确及注意事项
1、两个明确:
(1)明确返回值类型:知道自己调用方法需要返回的结果是什么类型。(通过计算的值的类型可以推出返回值类型)
(2)明确参数列表:调用方法计算时参与计算的值的数据类型和数据个数。
2、方法调用的流程图解:
3、定义方法的注意事项:
(1)方法定义的先后顺序无所谓。
(2)方法定义必须是挨着的,不能在一个方法的内部定义另外一个方法。
(3)方法定义之后,自己不会执行的;如果希望执行,一定要进行方法的调用。
三、三种调用方法格式
1、单独调用:方法名称(参数);
2、打印调用:System.out.println(方法名称(参数));
3、赋值调用:数据类型 变量名称 = 方法名称(参数);
4、注意事项:若返回值类型为void,这种方法只能单独调用,不能进行打印调用和赋值调用。
public classMethod2 {public static voidmain(String[] args) {//单独调用
sum(15, 25);//40//打印调用
System.out.println(sum(15, 25)); //40//赋值调用
int number = sum(15, 25);
number=number+100;
System.out.println("变量的值:" + number); //140
}public static int sum(int a, intb) {return (a+b);
}
}
四、有参数和无参数方法的比较
1、含参数方法:一个方法需要数据进行对比、运算时,通常采用含参数的方法(即小括号内参数列表内含有参数)。
2、不含参数方法:一个方法不需要数据进行对比、运算时,通常采用不含参数的方法(即小括号内参数列表内不含有参数)。
源代码:public classMethodCan {public static voidmain(String[] args) {
System.out.println("两个数大小是否相等" + method1(3, 4));
method2();
}//定义一个方法能够对两个数的大小是否相等
public static boolean method1(int a, intb) {return (a ==b);
}//定义一个方法能够连续输出十次I am a bird
public static voidmethod2() {for (int i = 0; i < 10; i++) {
System.out.println("I am a bird" + (i + 1));
}
}
}
运行结果:
两个数大小是否相等false
I am a bird1
I am a bird2
I am a bird3
I am a bird4
I am a bird5
I am a bird6
I am a bird7
I am a bird8
I am a bird9
I am a bird10
五、有返回值和无返回值的比较
1、有返回值:通过一系列的运算或者判断得到的结果,调用处需要调用它的值,此时需要采用(return + 返回值)向调用处发送返回值。
2、无返回值:通过一系列的运算或者判断得到的结果,调用处不需要调用它的值,此时返回值类型采用void且不需要(return+返回值)向调用处发送返回值。(通常表现为直接采用输出语句输出数据)
3、注意事项:
(1)对于有返回值的方法,可以使用单独调用、打印调用或者赋值调用。但是对于无返回值的方法,只能使用单独调用,不能使用打印调用或者赋值调用。
(2)返回值与参数无关,有参数可能有返回值,也可能没有返回值。
(3)对于一个void没有返回值的方法,不能写return后面的返回值,只能写return自己。
(4)一个方法当中可以有多个return语句,但是必须保证同时只有一个会被执行到,两个return不能连写。(如if-else语句中针对不同情况可能使用不同的return)
源代码(同上,仅加上分析):public classMethodCan {public static voidmain(String[] args) {
System.out.println("两个数大小是否相等" + method1(3, 4));
method2();
}//定义一个方法能够对两个数的大小是否相等,需要返回一个boolean值
public static boolean method1(int a, intb) {return (a ==b);
}//定义一个方法能够连续输出十次I am a bird,不需要返回值,只需要输出即可
public static voidmethod2() {for (int i = 0; i < 10; i++) {
System.out.println("I am a bird" + (i + 1));
}
}
}
运行结果:
两个数大小是否相等false
I am a bird1
I am a bird2
I am a bird3
I am a bird4
I am a bird5
I am a bird6
I am a bird7
I am a bird8
I am a bird9
I am a bird10
六、关于定义方法的三个小练习
1、题目:定义一个方法,用来判断两个数字是否相同。
源代码:
public classMethodTest1 {public static voidmain(String[] args) {
System.out.println("这两个数字是否相等:"+mathod1(25,25));
}public static boolean mathod1(int a,intb){boolean result = (a==b);returnresult;
}
}
运行结果:
这两个数字是否相等:true
2、题目:求出1到100之间的所有的和
源代码:
public classMethodTest2 {public static voidmain(String[] args) {
System.out.println("结果是:"+getSum());
}public static intgetSum(){int sum= 0;for (int i = 1; i <= 100; i++) {
sum=sum+i;
}returnsum;
}
}
运行结果:
结果是:5050
3、题目:实现不定次数打印
源代码:public classMethodTest3 {public static voidmain(String[] args) {
Scanner sc= newScanner(System.in);
getNumber(sc.nextInt());
}public static void getNumber(intnum){for (int i = 0; i < num; i++) {
System.out.println("Hello World!"+(i+1));
}
}
}
测试数据:8
运行结果:
Hello World!1Hello World!2Hello World!3Hello World!4Hello World!5Hello World!6Hello World!7Hello World!8
七、方法的重载(Overload)
1、背景:为什么会想到采用重载
答:重复的进行相同形式的运算时,会用到很多的方法名称,而这一系列方法的作用又近乎相同,所以采用方法的重载。
2、定义:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。(只需要记住唯一一个方法名称,就可以实现类似的多个功能。)
3、因素:
(1)相关因素:参数列表:个数不同,数据类型不同,多类型顺序不同。
(2)无关因素:与参数名称无关,与方法返回值类型无关
4、重载方法的调用:根据参数列表中参数的个数、类型、多类型顺序的不同,调用不同的方法。
源代码:public classMethodTest4 {public static voidmain(String[] args) {
System.out.println("结果是:" + method(3));
System.out.println("结果是:" + method(3, 4));
System.out.println("结果是:" + method(3, 4, 5));
}//定义一个只有一个参数的method方法
public static int method(inta) {returna;
}//定义一个有两个参数的method方法
public static int method(int a, intb) {return (a +b);
}//定义一个有三个参数的method方法
public static int method(int a, int b, intc) {return (a + b +c);
}
}
运行结果:
结果是:3结果是:7结果是:12
八、方法的重载两个练习
1、题目:比较两个数据是否相等,参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型,并在main方法中进行测试。
源代码:public classMethodSum {public static voidmain(String[] args) {byte a = 10;byte b = 20;
System.out.println(isSame(a, b));
System.out.println(isSame((short) 20, (short) 20));
System.out.println(isSame(11, 12));
System.out.println(isSame(10L, 10L));
}public static boolean same(byte a, byteb) {booleansame;if (a ==b) {
same= true;
}else{
same= false;
}returnsame;
}public static boolean same(short a, shortb) {boolean same = a == b ? true : false;returnsame;
}public static boolean same(int a, intb) {return a ==b;
}public static boolean same(long a, longb) {if (a ==b) {return true;
}else{return false;
}
}
}
运行结果:false
true
false
true
2、题目:模拟输出语句中的println方法效果,传递什么类型的数据就输出什么类型的数据,只允许定义一个方法名println。
源代码:public classMethodTest5 {public static voidmain(String[] args) {
println(10);
}public static void println(bytea) {
System.out.println(a);
}public static void println(shorta) {
System.out.println(a);
}public static void println(inta) {
System.out.println(a);
}public static void println(longa) {
System.out.println(a);
}public static void println(floata) {
System.out.println(a);
}public static void println(doublea) {
System.out.println(a);
}public static void println(chara) {
System.out.println(a);
}public static void println(booleana) {
System.out.println(a);
}
}
运行结果:10