1. 如何定义Java中的方法
1.1 方法:解决一类问题的代码的有序组合,是一个功能模块
1.2 定义一个方法:
访问修饰符 返回值类型 方法名(参数列表){方法体}
1.3 各部分解释:
- 访问修饰符:方法允许被访问的权限范围, 可以是 public、protected、private 甚至可以省略 ,其中 public 表示该方法可以被其他任何代码调用
- 返回值类型:方法返回值的类型,如果方法不返回任何值,则返回值类型指定为 void ;如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用 return 语句返回值
- 方法名:定义的方法的名字,必须使用合法的标识符
- 参数列表:传递给方法的参数列表,参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开
package com.imooc;public class Demo13 {public static void main(String[] args) {Demo13 test = new Demo13();test.print(); //在main方法中调用print方法}public void print() { //定义print的方法System.out.println("hello demo13");}}
2. Java中无参无返回值方法的使用
2.1 定义方法
public void show(){ //访问修饰符 返回值类型为无返回值 方法名() System.out.println("Hello"); //方法体放在一对大括号中
}
2.2 调用方法
package com.imooc;public class Demo14 {public static void main(String[] args) {//创建对象,对象名为helloDemo14 hello = new Demo14();//通过 对象名.方法名() 调用方法hello.show();}//定义方法public void show() {System.out.println("hello");}}
3. Java中无参带返回值方法的使用
3.1 示例
package com.imooc;public class Demo16 {public static void main(String[] args) {//创建对象,对象名为helloDemo16 hello = new Demo16();//调用方法冰接收方法的返回值,保存在变量sum中int sum = hello.calcSum();System.out.println("sum =" + sum);}//定义无参带返回值的方法(返回值为int类型,使用return获得返回值)public int calcSum() {int a = 5;int b = 12;int sum = a + b;return sum;}}
3.2 注意
- 如果返回类型为void,则方法中不能使用return返回值;
- 方法的返回值只能有一个
- 方法返回值的类型必须兼容,例如:如果返回值类型为int,则不能放回String型值
3.3 练习
package com.imooc;public class Demo18 {public static void main(String[] args) {Demo18 hello = new Demo18();int maxAge = hello.maxAge();System.out.println("the max age is: " + maxAge);}public int maxAge() {int[] ages = {1, 11, 3, 33, 2, 22, 4, 44, 5};int max = ages[0];for (int i=0; i
4. Java中带参无返回值方法的使用
4.1 方法的定义
- 带一个String类型的参数,参数名为name,但是没有返回值
public void show(String name){System.out.println("welcome " + name + "!");
}
4.2 方法的调用
- 调用时必须传入实际的参数值:对象名.方法名(实参1, 实参2, ..., 实参n)
HelloWorld hello = new HelloWorld();
hello.show("Harry");
4.3 形参和实参
- 形参:定义方法时的参数,目的是用来定义方法需要传入的参数的个数和类型;
- 实参:调用方法时的参数,是传递给方法真正被处理的值。
4.4 注意:
- 调用带参方法时,必须保证实参的数量、类型、顺序与形参一一对应
public class HelloWorld{public static void main(String[] args){HelloWorld hello = new HelloWorld();hello.show(25.6); //实参与形参类型不一致}public String show(String name){return "Welcome " + name + "!";}
}
- 调用方法时,实参不需要指定数据类型
hello.show("i love you");
- 方法的参数可以是基本数据类型,如int、double等,也可以是引用数据类型,如String、数组等
package com.imooc;import java.util.Arrays;public class Demo19 {public static void main(String[] args) {Demo19 hello = new Demo19();int[] scores = {54, 34, 65, 23};hello.print(scores); //实参为整型数组}public void print(int[] scores) { //形参为整型数组//使用Arrays类的toString()方法将数组转换为字符串并输出System.out.println(Arrays.toString(scores));}}
- 当方法参数有多个时,多个参数之间以逗号分隔
public int calc(int num1, int num2){int num3 = num1 + num2;return num3:
}
4.5 练习
package com.imooc;public class Demo20 {public static void main(String[] args) {Demo20 hello = new Demo20();hello.calcAvg(94, 81);}public void calcAvg(int num1, int num2) {double avg = (num1 + num2)/2.0;System.out.println("the average score is: " + avg);}}
5. Java中带参带返回值方法的使用
5.1 方法的定义
public String show(String name){return "Welcome " + name + "!";
}
5.2 方法的调用
HelloWorld hello = new HelloWorld(); //创建对象hello
String welcome = hello.show("John"); //调用带参带返回值的方法,将返回值存在变量welcome中
System.out.println(welcome);
5.3 练习
package com.imooc;import java.util.Arrays;public class Demo21 {public static void main(String[] args) {Demo21 hello = new Demo21();int[] scores = {34, 23, 65, 15};int count = hello.sort(scores);System.out.println("there are " + count + " scores");}public int sort(int[] scores) {Arrays.sort(scores);System.out.println(Arrays.toString(scores));return scores.length;}}
6. Java中方法的重载
6.1 什么是方法的重载:
- 如果同一个类中包含了两个或者两个以上方法名相同,但 方法参数的个数、顺序或类型不同的方法。如下所示4个方法名称都为show,但方法的参数有所不同,因此都属于方法的重载:
//无参数的方法
public void show(){System.out.println("Welcome");
}//重载show方法,一个字符串参数
public void show(String name){System.out.println("Welcome " + name);
}//重载show方法,两个参数,先String后int
public void show(String name, int age){System.out.println("Welcome " + name);System.out.println("age " + age);
}//重载show方法,两个参数顺序不同
public void show(int age, String name){System.out.println("Welcome 2 " + name);System.out.println("age 2 " + age);
}
6.2 如何区分调用的是哪个重载方法:
- 当调用被重载的方法时,Java会根据参数的个数和类型来判断应该调用哪个重载方法,参数完全匹配的方法将被执行,如:
public static void main(String[] args){HelloWorld hello = new HelloWorld();hello.show(); //调用无参的show方法hello.show("tom"); //调用带有一个字符串参数的show方法hello.show("jack", 20); //调用先字符串参数后整型参数的show方法hello.show(20, "jack"); //调用先整型参数后字符串参数的show方法
}
6.3 判断方法重载的依据:
- 必须是在同一个类中
- 方法名相同
- 方法参数的个数、顺序或类型不同
- 与方法的修饰符或返回值没有关系
7. 练习题:创建指定长度的int型数组,并生成100以内随机数为数组中的每个元素赋值,然后输出数组
package com.imooc;
//导入java.util.Arrays
import java.util.Arrays;public class Demo23 {public static void main(String[] args) {//创建对象helloDemo23 hello = new Demo23();//调用方法并将返回值保存在变量中int[] nums = hello.getArray(8);//将数组转换为字符串并输出System.out.println(Arrays.toString(nums));}public int[] getArray(int length) {//定义指定长度的整型数组int[] nums = new int[length];//循环遍历数组,给数组赋值for(int i=0; i
8. 练习题:实现输出成绩前三名
package com.imooc;import java.util.Arrays;public class Demo25 {public static void main(String[] args) {int[] scores &#61; {89, -23, 45, 23, 112, 45, 34};System.out.println("the top3 is ");Demo25 res &#61; new Demo25();res.showTop3(scores);}public void showTop3(int[] scores) {//将成绩排序&#xff0c;默认升序顺序Arrays.sort(scores);int num &#61; 0;//倒序遍历for(int i&#61;scores.length-1; i>&#61;0; i--) {if(scores[i]<0 || scores[i]>100) {continue;}num&#43;&#43;;if(num > 3) {break;}System.out.println(scores[i]);}}}