什么是方法
用来解决一类问题的代码的有序组合,是一个功能模块
方法声明
语法格式:
访问修饰符 返回类型 方法名(参数列表){
方法体
}
public class HelloImooc {// 方法声明public static void main(String[] args) {// 方法体}}
方法调用
在main函数中调用方法,需要先创建类对象,然后调用对象的方法
package com.imooc;public class HelloImooc {// 输出打印星号的方法public void printStar() {System.out.println("**********");}public static void main(String[] args) {// 创建一个HelloImooc类的对象myHelloImoocHelloImooc myHelloImooc = new HelloImooc();// 使用对象名.方法名()去调用方法myHelloImooc.printStar();System.out.println("hello java");myHelloImooc.printStar();}}
在其他函数中,可以直接调用方法
package com.imooc;public class HelloImooc {public void printStar() {System.out.println("**********");}public void printTest() {printStar();System.out.println("hello java");printStar();}public static void main(String[] args) {HelloImooc myHelloImooc = new HelloImooc();myHelloImooc.printTest();}}
方法重载
方法名相同,参数列表不同(可以是数量不同,也可以是数据类型不同)
#注意返回值不同,不是重载
package com.imooc;public class HelloImooc {// 求两个int类型数的和public int plus(int m, int n) {return m + n;}// 求两个double类型数的和public double plus(double m, double n) {return m + n;}// 求数组元素的和public int plus(int[] arr) {int sum = 0;for (int n : arr) {sum += n;}return sum;}public static void main(String[] args) {HelloImooc hl = new HelloImooc();System.out.println(hl.plus(5, 6)); // 11System.out.println(hl.plus(5.2, 6.3)); // 11.5int[] arr = { 1, 2, 3, 4, 5, 6 };System.out.println(hl.plus(arr)); // 21}}
参数传递
1,值传递:传递基本类型数据
值传递不会改变原来的参数的值
package com.imooc;public class HelloImooc {// 更新数组public void updateNum(int num) {num++;System.out.println("被调用函数中的值:"+num); // 被调用函数中的值:11}public static void main(String[] args) {int num = 10;HelloImooc myHelloImooc = new HelloImooc();myHelloImooc.updateNum(num);System.out.println("主函数中的值:"+num); // 主函数中的值:10}}
2,地址传递:传递引用类型数据(比如数组,对象)
地址传递可能改变原来的参数的值
package com.imooc;public class HelloImooc {// 更新数组public void updateArray(int[] arr) {arr[3] = 15;}// 打印数组public void printArray(int[] arr) {for (int n : arr) {System.out.print(n + " ");}System.out.println();}public static void main(String[] args) {int[] arr = { 1, 2, 3, 4, 5, 6 };HelloImooc myHelloImooc = new HelloImooc();myHelloImooc.printArray(arr); // 1 2 3 4 5 6myHelloImooc.updateArray(arr);myHelloImooc.printArray(arr); // 1 2 3 15 5 6}}
可变参数
- 可变参数与数组类似,可以用增强for循环取值
- 参数列表中如果有两个以上的参数,可变参数一定是放在最后的
- 一个方法中只能有一个可变参数
- 可以将数组传递给可变参数列表
- 可变参数列表所在的方法是最后被访问的 ```java package com.imooc;
public class HelloImooc { // 求和 public void sum(int… n) { int sum = 0; for (int i : n) { sum += i; } System.out.println(“sum=” + sum); }
public static void main(String[] args) {HelloImooc myHelloImooc = new HelloImooc();myHelloImooc.sum(1); // sum=1myHelloImooc.sum(1, 2); // sum=3myHelloImooc.sum(1, 2, 3); // sum=6int[] a = { 10, 20, 30 };myHelloImooc.sum(a); // sum=60}
} ```
