Java基础语法_7.Java方法
- 一、方法
-
- 1.什么是方法
- 2.方法声明
- 3.注意
- 4.执行过程
- 5.带参带返回值方法
- 6.带参有返回值的方法
- 7.数组作为方法参数
- 8.查找数组元素的值
- 二、方法的重载
-
- 1.方法重载是什么
- 2.实例
- 三、基本数据类型的传值
- 四、数组的传递
- 五、可变参数列表
-
- 1.概念
- 2.用可变参数列表实现多个数相加
- 3.注意
- 六、可变参数列表作为参数重载时的顺序
- 七、文档注释
- 八、方法的调试
一、方法
1.什么是方法
用来解决一类问题的代码的有序组合,是一个功能模块。
2.方法声明
语法格式:
访问修饰符 返回类型 方法名(参数列表){
方法体
}
3.注意
(1)方法必须在类的内部定义。
(2)方法不能嵌套定义。
(3)主方法中必须创建对象,用对象进行调用方法。
而在同一类中,其他方法可以直接写方法();调用。
4.执行过程
从主方法开始执行
创建一个类的对象
使用对象名.方法名()进行调用
5.带参带返回值方法
定义一个求两个float型数据的最大值的方法,在方法中将最大值输出。
public class Myprogram {
public void max(float a, float b) {
float max;
if (a > b) {
max = a;
} else {
max = b;
}
System.out.println(a + "和" + b + "的最大值是:" + max);
}
public static void main(String[] args) {
Myprogram m = new Myprogram();
m.max(5.56f, 4.5f);
}
}
6.带参有返回值的方法
定义一个求n!的方法
public class Myprogram {
public int fac(int n) {
int s = 1;
for (int i = 1; i <= n; i++) {
s *= i;
}
return s;
}
public static void main(String[] args) {
Myprogram m = new Myprogram();
System.out.println(5 + "的阶乘为:" + m.fac(5));
}
}
7.数组作为方法参数
定义方法,打印输出数组元素的值
public class Myprogram {
public void printArray(int[] arr) {
for (int n : arr) {
System.out.print(n + " ");
}
System.out.println();
}
public static void main(String[] args) {
Myprogram m = new Myprogram();
int[] arr = { 20, 30, 40, 50, 60 };
m.printArray(arr);
}
}
8.查找数组元素的值
import java.util.Scanner;
public class Myprogram {
public boolean search(int n, int[] arr) {
boolean flag = false;// 默认没找到
for (int i = 0; i < arr.length; i++) {
if (arr[i] == n) {
flag = true;
break;
}
}
return flag;
}
public static void main(String[] args) {
Myprogram m = new Myprogram();
int[] arr = { 20, 30, 40, 50, 60 };
Scanner re = new Scanner(System.in);
int n = re.nextInt();
boolean flag = m.search(n, arr);
if(flag)
System.out.println("已找到");
else
System.out.println("未找到");
}
}
二、方法的重载
1.方法重载是什么
方法名相同,参数列表不同
2.实例
定义三个方法,实现int、double、数组的和。
public class Myprogram {
public int plus(int m, int n) {
return m + n;
}
public double plus(double m, double n) {
return m + n;
}
public int plus(int[] arr) {
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}
public static void main(String[] args) {
Myprogram m = new Myprogram();
int[] arr = { 20, 30, 40, 50, 60 };
System.out.println(m.plus(20, 30));
System.out.println(m.plus(20.1, 30.1));
System.out.println(m.plus(arr));
}
}
三、基本数据类型的传值
public class Myprogram {
public void swap(int a, int b) {
int temp;
temp = a;
a = b;
b = temp;
System.out.println("swap方法内交换后a、b的值分别为" + a + "," + b);
}
public static void main(String[] args) {
Myprogram m = new Myprogram();
int a = 5, b = 4;
m.swap(a, b);
System.out.println("main方法内交换后a、b的值分别为" + a + "," + b);
}
}
由此可见,基本数据类型传值不会改变原数的值,只是将5,4值传递至swap方法中。
四、数组的传递
public class Myprogram {
public void updateArray(int[] a) {
a[3] = 15;
System.out.print("数组更新数据后updateArray方法元素为:");
for (int n : a) {
System.out.print(n + " ");
}
System.out.println();
}
public static void main(String[] args) {
Myprogram m = new Myprogram();
int a[] = { 1, 2, 3, 4, 5 };
m.updateArray(a);
System.out.print("数组更新后main方法中a数组元素:");
for (int n : a) {
System.out.print(+n + " ");
}
}
}
此时main中a数组元素也发生改变。
updateArray中的a和main中的a指向同一内存空间,所以main方法中的数组会跟随调用的方法改变其值。
五、可变参数列表
1.概念
参数数量不确定的参数。
2.用可变参数列表实现多个数相加
public class Myprogram {
public void sum(int... n) {
int sum = 0;
for (int i : n) {
sum += i;
}
System.out.println("和为:" + sum);
}
public static void main(String[] args) {
Myprogram m = new Myprogram();
m.sum(1);
m.sum(1, 2);
m.sum(1, 2, 3);
}
}
3.注意
(1)参数列表中如果有两个以上的参数,可变参数一定是在最后的。
(2)可以将数组传递给可变参数列表,但数组作为参数时,不能将多个数字传递给数组。
(3)在方法定义中,认为相同方法名的参数为数组的方法和参数为可变参数的方法为重复定义,不是方法的重载。
(4)一个方法只能有一个可变参数。
六、可变参数列表作为参数重载时的顺序
public class Myprogram {
public int sum(int a, int b) {
System.out.println("使用不带可变参数的方法");
return a + b;
}
public int sum(int... n) {
int sum = 0;
for (int i : n) {
sum += i;
}
System.out.println("使用带可变参数的方法");
return sum;
}
public static void main(String[] args) {
Myprogram m = new Myprogram();
System.out.println("1和3的和为:" + m.sum(1, 3));
}
}
由此可见,可变参数所在的方法是最后被访问的。
七、文档注释
/**回车即可生成
可写作者、版本号、程序作用等。
八、方法的调试
方法的调试与普通调试相似,先设置断点,debug
此时,按F5可跳入方法内部执行
按F8可由方法内部回到调用处。