1.何谓方法?
System.out.println(),
类,对象,方法
方法是Java语句的集合
2.方法的定义和调用
java都是值传递,不是引用传递
值传递
package com.oop.demo01;
public class Demo04 {
//Java都是值传递
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;
}
}
引用传递
package com.oop.demo01;
public class Demo05 {
//引用传递:对象:本质还是值传递
//对象,内存!
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.name);//null
change(person);
System.out.println(person.name);//duzehou
}
public static void change(Person person){
//Person是一个对象,指向的--->Person person = new Person();
person.name = "duzehou";
}
}
//定义一个Person类,有一个属性name
class Person{
String name ;
}
3.方法重载
4.命令行传参
javadoc
javac
有时候你希望运行一个程序的时候再传给他消息,这要通过给main()函数传递命令行参数实现
package com.duzehou.method;
public class Demo03 {
public static void main(String[] args) {
//args.length数组长度
for (int i = 0; i < args.length; i++) {
System.out.println("args["+i+"]:"+args[i]);
}
}
}
5.可变参数
6.递归(重要)(栈机制)
空间占用大,基数比较小可以用,尽量不用递归
package com.duzehou.method;
public class Demo06 {
public static void main(String[] args) {
System.out.println(f(3));
}
//递归求阶乘
//5! = 5*4*3*2*1
public static int f(int n){
if (n == 1){//递归头:边界条件
return 1;
}else { //前阶段
return n * f(n-1);//返回阶段
}
}
}
public static int f(int n){
if (n == 1){//递归头:边界条件
return 1;
}else { //前阶段
return n * f(n-1);//返回阶段
}
}
}