方法的概念:一段可重复调用的代码
方法的定义格式:

public(权限) static(静态) void(没有返回值或者 写返回值类型) 方法名称(参数类型1 参数名字,参数类型2 参数名字,。。。。){ 
 //语句 
 //如果有返回值的时候 需要在执行方法语句的最后调用return 返回值类型的参数 
 }方法命名规范:首字母小写,后面的单词首字母大写 
 方法的执行顺序: 
 public static void funtionD1(){ 
 System.out.println(“调用funtionD1方法”); 
 funtionD2(); 
 }
public static void funtionD2(){
    System.out.println("调用funtionD2方法");
}

调用方法,执行完方法里面的代码,再从调用方法那里往下执行
非静态方法和静态方法的调用
静态方法: 类名.方法名();
非静态方法: 对象.方法名();

//静态方法 要使用类名.方法调用 
 MethodDemo01.funtionD1(); 
 //不写成静态方法 就得使用对象去调用 
 MethodDemo01 demo01=newMethodDemo01(); 
 demo01.funtionD3();带返回值参数的方法: 
 首先void 要改成返回的数据类型名称, 必须在当前方法执行完了调用return 返回值的参数类型的值。 
 //带返回值的方法 返回值参数 -所有的数据类型都可以写 
 publicstaticinttestMethod01(){ 
 inta=10; 
 intb=20; 
 // return a+b; 
 intc=a+b; 
 returnc; 
 }一个方法里面可以写多个return 但是只能执行一个 且必须在方法结束之前的最后一句执行 
 publicstaticinttestMethod02(){ 
 inta=10; 
 intb=20; 
 if(a+b>25){ 
 return a+b; 
 }
returna-b;
}

使用void 也是可以在方法里面写return 但是不能有返回值类型数据

publicstaticvoidtestMethod03(){ 
 inta=10; 
 intb=20; 
 if(a+b>25){ 
 return;// 可以执行return去结束一个方法 
 } 
 System.out.println(“我还想继续执行”); 
 }

包packpage
包里面是放类,都是小写,不同层次的包以.隔开 com.cn.method;
包的用处,对类进行分类,方便编写代码,分离类之间的影响,
写类名,不能与自己之前写过的类名重复,也最好不要与系统提供的类重复

eclipse:
1、工作空间-workspace 放代码的地方,修改命名空间 File-Switch-workspace
2、新建项目-File-new-Java project-写项目名字 finish
3、先在项目的src下建包package,再建类class。
3、运行,选择有main方法的run as java application

引用传递
基本数据类型作为方法的形参来传递,传递的是值,并不会改变改变属性或者变量的值
引用数据类型,传递的是地址,如果对方法传递的引用数据类型的值进行改变,实际也就改变了整个引用数据类型的值。

publicclassMethodDemo03{ 
 privatestaticints=100; 
 privatestaticint[] ar={2,3,41,123}; 
 publicstaticvoidmain(String[]args){ 
 fun(ar); 
 System.out.println(Arrays.toString(ar)); 
 fun1(s); 
 System.out.println(s); 
 } 
 publicstaticvoidfun(int[]arr){//形参,作用域仅限于当前方法里面,它的生命周期就是执行这个方法的时候。 
 arr[0]=200; 
 } 
 publicstaticvoidfun1(inta){ 
 a=20; 
 } 
 }


方法的重载:
方法名一样,参数列表不一样(参数数量或者数据类型不一样),(结构一至),与返回值无关,通过调用同一个方法名实现不同的功能。

publicclassMethodDemo04{ 
 publicstaticvoidmain(String[]args){ 
 ints=add(10,20); 
 floats1=add(20.22f,20); 
 }publicstaticintadd(inta,intb){ 
 intc=a+b; 
 returnc; 
 }publicstaticfloatadd(floata,floatb){ 
 floatc=a+b; 
 returnc; 
 } 
 }
//与返回值无关 
 如果返回值一样,那么在调用方法的时候,你就弄不清楚哪个是你需要的方法。 
 方法自己调用自己叫递归; 
 注意事项:一定要留有出口 
 publicclassMethodDemo05{ 
 publicstaticvoidmain(String[]args){ 
 // funInfo(1); 
 intcount=addSum(1); 
 System.out.println(count); 
 intcount1=addSum1(100);//递减 
 System.out.println(count1); 
 intsum=fei(8); 
 System.out.println(sum); 
 }/* 
 * 没有返回值的递归 
 */ 
 publicstaticvoidfunInfo(inti){ 
 System.out.println(i); 
 i++; 
 if(i>100){ 
 return; 
 }else{ 
 funInfo(i); 
 }}
/* 
 * 累加1~100 
 * 
 * a(1) = 1; 
 * a(1) = 1 + a(2); 
 * 
 */ 
 publicstaticintaddSum(inti){ 
 if(i>=100){ 
 return100; 
 } 
 returni+addSum(++i); 
 }/* 
 * addSum1(100) = 100+addSum1(99) 
 * a(100) = 100 + 99 + a(98); 
 * a(100) = 100 + 99 + 98 + a(97); 
 * a(100) = 100 + 99 + 98 + 97 + a(96); 
 * a(100) = 100 + 99 + …+ 1; 
 */ 
 publicstaticintaddSum1(inti){//1~i的累加和 
 if(i==1){ 
 return1; 
 } 
 returni+addSum1(–i); 
 }/* 
 * 使用递归 
 * 1 1 2 3 5 8 … 求第二十个数是多少 
 */ 
 public static int fei(intn){// fei(20) 代表是 第20个数是什么 
 if(n==1||n==2){ 
 return1; 
 } 
 returnfei(n-2)+fei(n-1); 
 //f20 = f19 + f18 = f18+ f17 + f17 + f16 
 } 
 }