6 Java中的方法
下面关于Java方法的介绍都引用了某B大佬狂神的PPT
6.1 方法简介
自己看注释,,,,这就是方法!
package com.zlx.method;
public class Demo01 {
//main方法
public static void main(String[] args) {
//实际参数:实际调用传递给他的参数
int sum = add(10, 32);
System.out.println(sum);
//test();
}
//加法
public static int add(int a,int b){
return a+b;
}
//练习2:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个
public static void test(){
for (int i = 1; i <= 1000; i++) {
if (i%5==0){
System.out.print(i+"\t");
}
if (i%(5*3)==0){
System.out.println();
//System.out.print("\n");
}
}
}
}
6.2 方法的重载
在下面这段代码当中,我们定义的这个max()就是一个判断最大值并输出的方法,但是哈我们又用了这个名为方法重载的东西,本来我们的max()只能比较int类型的数据,用了重载,等于给给max()方法的输入参数多添加了一个类型double,里面的东西都可以改。
package com.zlx.method;
public class Demo02 {
public static void main(String[] args) {
double max = max(10.234,10.2343);
System.out.println(max);
}
//方法重载:方法的名字可以一样,参数列表必须不同
//比大小
public static int max(double num1,double num2){
int result = 0;
if (num1==num2){
System.out.println("num1==num2");
return 0; //终止方法
}
if (num1>num2){
result = (int)num1;
}else {
result = (int)num2;
}
return result;
}
//比大小
public static int max(int num1,int num2){
int result = 0;
if (num1==num2){
System.out.println("num1==num2");
return 0; //终止方法
}
if (num1>num2){
result = num1;
}else {
result = num2;
}
return result;
}
}
6.3 方法中的可变参数
自己看下面这段代码,也是比较这个输入的double类型的数的大小,不一样的是我们的方法使用了可变参数,实现了不管输入多少的数都可以比较他们的大小,里面的for循环还利用数组传递输入的值,来比较大小,取得最大的那个值并输出。
package com.zlx.method;
public class Demo04 {
public static void main(String[] args) {
Demo04 demo04 = new Demo04();
demo04.test(1);
printMax(1.4212,1.324,1.52521,1.3920);
}
//可变参数:一个方法中只能有一个可变参数,他必须是方法的最后一个参数。任何普通的参数必须在他之前声明。
public void test(int... i){
System.out.println(i[0]);
}
//随便输入多少个double类型的数,比较出最大的并输出他
public static void printMax(double... numbers){
if (numbers.length==0){
System.out.println("No argument passed");
}
double result = numbers[0];
//排序!
for (int i = 1;i < numbers.length;i++){
if (numbers[i] > result){
result = numbers[i];
}
}
System.out.println("The max value is:" + result);
}
}
6.4递归
递归的话自己体会不,反正Java中的递归能不用就不用,因为Java用的栈的方式来存储使用数据,递归一旦多起来的话多与计算机的内存占用会很大,使得程序崩溃,每调用一层递归的函数,就会占用栈的一层内存空间,无法得到释放。
package com.zlx.method;
public class Demo06 {
//2! 2*1
//5! 5*4*3*2*1
public static void main(String[] args) {
System.out.println(f(1000));
}
//1! 1
//5! 5*4*3*2*1
//3! 3*f(2)
public static double f(double n){
if (n==1){
return 1;
} else {
return n*f(n-1);
}
}
}