方法
方法的使用可以让主函数变的简洁,也可以减少很多重复代码
-
main() 方法
//public, static 为修饰符 void为返回类型 main方法名 //main方法是特殊的,只能有一个main方法 public static void main(String[] args){ }
-
方法返回值
-
void 没有返回值
-
int,int[],double,char等,有返回值,且返回的类型就是方法中定义的类型,且return必须在最后
-
-
修饰符
-
static 修饰符:
- 如果方法加了此修饰符,就可以直接调用方法
- 如果没加,就要先声明一个这个类的数据,之后用其调用
//Demo类 public class Demo(){ //主函数 public static void main(String[] args){ pol(); //直接调用 //定义demo1 Demo demo1 = new Demo(); demo1.pol2(); //利用类来调用 } } //方法一 public static void pol(){} //方法二 public void poi2(){}
-
-
参数
-
形式参数:用来定义的参数,里面没有分配实际的数据
-
实际参数:实际调用传递给他的参数
-
可变参数:
- 可以输入不定量的值
2. 一个方法只能有一个可变参数,且要在最后定义可变参数
//主函数 public static void main(String[] args) { Demo04 demo04 = new Demo04(); //调用方法 demo04.test(0,1,2,3,4,5); demo04.test(0,new int[]{4,5,6,7,8,9,1}); //也可以传入数组 } //方法:依次输出传入的值 public void test(int x,int... i){ for ( x = 0; x < i.length ; x++) { System.out.print(i[x] + " "); } }
- 可以输入不定量的值
-
-
递归
自己调用自己
- 递归结构包含两个部分:
- 递归头:什么时候不调用自身方法,如果没有会陷入死循环
- 递归体:什么时候需要调用自身方法
- 递归结构包含两个部分:
public class Demo06 {
public static void main(String[] args) {
System.out.println(f(4));
}
//实现阶乘的运算 5!=5*4*3*2*1
public static int f(int n){
if(n == 1){
return 1; //递归的尽头(边界)
}else {
return n*f(n-1); //进行递归
}
}
}
-
值传递
package com.oop.demo01; //值传递 public class Demo04 { public static void main(String[] args) { int a = 1; System.out.println(a); //结果为1 Demo04.change(a); System.out.println(a); //结果还是 1 } //返回值为空 public static void change(int a){ a = 10; } }
见:基础语法.src.com.oop.demo01.Demo04
-
引用传递
package com.oop.demo01; //引用传递:传递一个对象(本质还是值传递) //引用传递:传递的是对象的地址 public class Demo05 { public static void main(String[] args) { Person person = new Person(); System.out.println(person.name);//null Demo05.change(person); System.out.println(person.name); //魏魏 } public static void change(Person person){ //person是一个对象:指向的是 ----> Person person = new Person(); //这是一个具体的类,可以改变其下的属性 person.name = "魏魏"; } } //定义了一个Person类 有一个属性:name class Person{ String name; //默认值为null }
见:基础语法.src.com.oop.demo01.Demo05