什么是方法
用来解决一类问题的代码的有序组合,是一个功能模块
方法声明
语法格式:
访问修饰符 返回类型 方法名(参数列表){
方法体
}
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类的对象myHelloImooc
HelloImooc 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)); // 11
System.out.println(hl.plus(5.2, 6.3)); // 11.5
int[] 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 6
myHelloImooc.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=1
myHelloImooc.sum(1, 2); // sum=3
myHelloImooc.sum(1, 2, 3); // sum=6
int[] a = { 10, 20, 30 };
myHelloImooc.sum(a); // sum=60
}
} ```