Java学习之方法详解

方法详解

方法的定义与调用

定义:类似与其它语言的函数,是一段用来完成特定功能的代码片段

格式:

/*修饰符 返回值类型 方法名(参数类型 参数名){
方法题
return 返回值;
}
*/

方法名命名规则:首字母小写+驼峰原则

01简单理解方法

package com.KuangStudy.method;

public class Demo01 {
/*
@author xiuga
@version 1.8
@since 2021-02-09 16:11
*/
public static void main(String[] args) {
   //实际参数,实际调用传递给它的参数
   int sum=add(10,20);
   System.out.println(sum);
}
//形式参数,用来定义作用的。int 为返回值类型
public static int add(int a,int b){
   return a+b;//当返回值类型为void时就不用return了。
}
}

02比大小

package com.KuangStudy.method;

public class Demo02 {
/*
@author xiuga
@version 1.8
@since 2021-02-09 16:24
*/
public static void main(String[] args) {
   System.out.println(max(30,30));
}
public static int max(int num1,int num2){
  int result;
  if (num1==num2){
      System.out.println(num1+"="+num2);
      return 0;//终止方法
  }
   if (num1>num2){
       result=num1;
  }else {
       result=num2;
  }
   return result;
}
}

03值传递(Java)与引用传递

理解得不是很深刻,待我学了对象后重新研读

值传递与引用传递得区别易懂版

值传递与引用传递详解版

方法的重载

定义:指在一个类中,有相同的函数名称,但参数不同

重载的规则:

01方法名称必须相同

02参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)

03方法返回类型可以相同也可以不同

实现理论:方法名称相同时,编译器会根据调用方法的参数个数,参数类型等逐个匹配,调用相应的方法,如果匹配失效,方法报错。

package com.KuangStudy.method;

public class Demo01 {
/*
@author xiuga
@version 1.8
@since 2021-02-09 16:11
*/
public static void main(String[] args) {
   //实际参数,实际调用传递给它的参数
   int sum=add(10,20,30);
   System.out.println(sum);
}
//形式参数,用来定义作用的。int 为返回值类型
public static int add(int a,int b){
   return a+b;//当返回值类型为void时就不用return了。
}
public static int add(int a,int b,int c){
   return a+b+c;//当返回值类型为void时就不用return了。
}
}

命令行传参

定义:当希望运行一个程序时再给它传递消息,这要靠传递命令行参数给main()实现

package com.KuangStudy.method;

public class Demo03 {
/*
@author xiuga
@version 1.8
@since 2021-02-13 14:00
*/
public static void main(String[] args) {
   for (int i=0;i<args.length;i++){
       System.out.println("args["+i+"]"+args[i]);
  }
}
}

采用最原始的方法(Dos命令)运行该程序

01在Demo03.java目录下输入javac Demo03.java 产生class文件

02输入java Demo03,出现错误: 找不到或无法加载主类 Demo03

03此时文件目录应退到src下(根据包package的路径),再次输入java com.KuangStudy.method.Demo03

package com.KuangStudy.method;

04由于无参数输入,无值输出

05输入java com.KuangStudy.method.Demo03 who are you

06结果输出

可变参数

传递不定项参数,并不规定参数的个数

注意:

01在方法声明中,指定参数类型后加一个省略号(...)

02一个方法中只能指定一个可变参数,它必须时方法的最后一个参数

如:

package com.KuangStudy.method;

public class Demo04 {
/*
@author xiuga
@version 1.8
@since 2021-02-13 16:46
*/
public static void main(String[] args) {
   Demo04 demo04 = new Demo04();
   demo04.num(1,2,3);
}
public void num(int...numbers){
   System.out.println(numbers[0]);//数组
   System.out.println(numbers[1]);
   System.out.println(numbers[2]);

}
}

递归(笔试高频问点)

递归就是A方法调用A方法,即自己调用自己

优点:利用递归可以用一些简单的程序解决一些复杂的问题,递归策略只需用少量的程序就可描述解题过程中所需要的多次重复计算,减少了代码量

缺点:计算比较大的数据时,会占用大量内存,造成内存崩溃

递归结构:01递归头:什么时候不调用自身方法,如果没有头将陷入死循环

02递归体:什么时候需要调用自身方法

package com.KuangStudy.method;

public class Deno05 {
/*
@author xiuga
@version 1.8
@since 2021-02-13 17:33
*/
public static void main(String[] args) {
   //阶乘的运算
   System.out.println(f(3));
}
public static int f(int n){
   if (n==1){
       return 1;
  }else {
       return n*f(n-1);//自己调用自己
  }
  }
}

 

posted @ 2021-02-13 18:56  xiuga  阅读(52)  评论(0)    收藏  举报