JavaSE
五、Method方法
- 方法的基本调用
public static void main(String[] args) {
//直接(两者都是static)调用:这边的参数叫实参,实参可以传递给到形参
int sum = add(1, 2);
System.out.println(sum);
}
//add方法:这边add的参数叫形式参数,形参的名字可以随便写啥,但是形参和实参类型要一一对应
public static int add(int a,int b){
//a+b就是方法体
return a+b;
}
}
public static void main(String[] args) {
//调用test方法
test();
}
public static void test(){//void表示返回为空
for (int i = 0; i <= 1000; i++) {
if (i % 5 == 0) {
System.out.print(i + "\t");
}
if (i % (5 * 3) == 0) {
System.out.print("\n");//或者System.out.println();
}
}
}
public static void main(String[] args) {
int max = max(12, 13);
System.out.println(max);//把返回值打出来
}
//比大小
public static int max(int num1,int num2){
int result = 0;
if(num1==num2){
System.out.println("num1=num2");
return 0;//return还可以终止方法
}
else if(num1>num2) {
result = num1;
}else {
result = num2;
}
return result;//return给他放在外面来,整个result接收,但是记得初始化
}
public static void main(String[] args) {
int max1 = max(1,2);
System.out.println(max1);
}
public static int max(int num1,int num2){
if(num1 == num2){
System.out.println("num1=num2");
return 0;
}else if(num1>num2){
return num1;
}else{
return num2;
}
}
- 方法的重载
public static void main(String[] args) {
double max = max(12, 13);
System.out.println(max);//把返回值打出来
}
public static int max(int num1,int num2){
int result = 0;
if(num1==num2){
System.out.println("两者相等");
return 0;
}else if (num1>num2){
result = num1;
}else if (num1<num2){
result = num2;
}
return result;
}
public static double max(double num1,double num2){
double result = 0;
if(num1==num2){
System.out.println("两者相等");
return 0;
}else if (num1>num2){
result = num1;
}else if (num1<num2){
result = num2;
}
return result;
}
- 命令行传参:
//args.length 数组长度 psvm的main方法中是可以传递参数的
for (int i = 0; i < args.length; i++) {//这个是在遍历参数
System.out.println("args["+i+"]:"+args[i]);
}
- 可变参数
public static void main(String[] args) {
//可变参数可以理解为:不知道需要传入多少参数而设置的,可以避免方法的多次重载
Demo4 demo4 = new Demo4();
demo4.test(1,2,3,4,5);
/*
下面的方法没有static,如果有直接:
test(1,2,3,4,5);
*/
}
//用...表示可以有很多参数(可变参数,并且其他参数必须放在最前面
public void test(int x,int... i){
System.out.println(i[2]);
System.out.println(x);
}
public static void main(String[] args) {
printMax(3,31,4,56,7,3);
printMax(new double[]{1,2,3});
}
//找最大值
public static void printMax(double... numbers){
if(numbers.length==0){
System.out.println("No argument passed");
return;
}
double result = numbers[0];
for(int i =1;i<numbers.length;i++){
if(numbers[i]>result){
result = numbers[i];
}
}
System.out.println(result);
}
- 递归
public static void main(String[] args) {
Demo6 demo6 = new Demo6();
demo6.test();
}
public void test(){
test();
}
//自己调用自己,抛出异常:栈溢出
public static void main(String[] args) {
System.out.println(f(5));
}
//自己调用自己,阶层的例子
/*递归需要的条件:
边界条件:边界(最后一个就会执行到底
前阶段:一直调用的时候
返回阶段n*n-1
栈机制:压了好几个栈 要考虑内存的情况
学到的是递归思想:一层一层的往下解决
*/
public static int f(int n){
if(n==1){
return 1;
}else {
return n*f(n-1);
}
}