Java零基础小白到秃头--day06(方法)待续ing......

方法

定义

方法就是一个功能模块的集合,将很多的代码放置在一组{}中,形成一个代码块。可以提高代码的复用性。

为什么需要方法

举例

水仙花数:

public class IsFlower{
	public static void main(String[] args){
    	System.out.println("输入数字:");
    	Scanner sc = new Scanenr(System.in);
     	int num = sc.NextInt();
        int length = 0;
        int temp = num;
        while(temp>0){
            temp / = 10;
            length++;
        }
        temp = num;
        int result = 0;
        while(temp>0){
            int bit = temp%10;
            temp/ = 10;
            int ret = 1;
            for(int i = 0;i<length;i++){
                ret* = bit;
            }
            result += ret;
        }
        String msg = result==num?"是水仙花数":"不是水仙花数"
         System.out.println(msg);   
	}
}

Tips:在编写过程中,如果出现相同代码一定要注意,切勿重复造轮子

  • 方法的好处:
    • 可以提高代码的复用性
    • 提高代码后期的扩展性、延展性
    • 提高代码后期的维护性

如何使用方法

i、方法的声明

  • 存放在类中main方法外
  • 声明格式
[修饰符][static]{void|数据类型}方法名([参数列表]){
    执行语句;
}

public static void method(){
    System.out,println("第一个方法");
}
  • 使用
    • 在main方法中通过方法名进行调用
public class Method01 {    
    public static void main(String[] args) {     
        method();   
    }      
    public static void method() {       	
    System.out.println("我的第一个方法");  
    } 
}
  • 方法命名:
    • 遵循标识符命名规则
    • 见名知意

参数列表

i、完成两个数相加

public class Method02 {    
    public static void main(String[] args) {       		 add();    
                                           
   }  
    public static void add() {      
        int num1 = 20;      
        int num2 = 30;       
        int sum = num1+num2;                     
        System.out.println("累加的和是:"+sum);  
    }  
}

上述代码只能惊醒20和30两个数进行累加,无法计算任意两个数相加,该方法的复用性不强

ii、参数列表的使用

参数列表声明在方法后的小括号中,可以声明0个或者多个

public class Method03 {   
    public static void main(String[] args) {              add(40,20);   
    }        
    //声明一个add方法 需要两个int类型的参数  
     public static void add(int num1,int num2) {           System.out.println(num1+num2);   
     } 
}
  • 参数列表的注意事项
    • 将方法声明的番薯列表是形式参数
    • 传入的参数是实际参数
    • 形式参数只声明不需要初始化值就可以使用,因为调用的时候用实际参数给他赋值

iii、变量的分类

public class Method04 {   
    public static void main(String[] args) {             int num1 = 20;       
        int num2 = 30;       
        add(40,20);                                       System.out.println(num1+"==="+num2);   
   }      
    //声明一个add方法 需要两个int类型的参数   
    public static void add(int num1,int num2) {            System.out.println(num1+"==="+num2);  
     } 
}
  • 变量的三要素:数据类型、变量名、生命周期(作用范围)

根据声明的位置不同,将变量分为局部变量和成员变量(全局变量)

变量的分类声明位置作用范围注意事项
局部变量声明在方法中或者代码块中当前声明的{}中有效生命周期一定要先声明在赋值才能使用
成员变量声明在类中方法外在当前类中都有效调用时前加static修饰,或者创建对象访问,无需初始化,每个不同的对象都存在默认值

返回值

被调用的方法可以将自己的最后计算结果返回给调用处,方便继续执行后续的业务逻辑。

public class Method06 {  
    public static void main(String[] args) {                   int r = 10;//1:       
        double area = getCircleArea(r);  
    }  
    public static double getCircleArea(int r) {               double pi = 3.14;      
        double area = pi*r*r;     
        System.out.println("半径"+r+"的圆的面积是:"+area);       
         return area;
   } 
}
  • void:该方法没有返回值
  • 一个方法中可以不存在void
  • 返回值是什么类型,通过该类型去代替void的位置

方法重载

在同一个类中,同名的两个或者是多个方法,参数列表不同,我们称该多个方法为方法重载。
重载在编码过程中是有意义的,针对于不同的参数做相同的功能。
两同三不同:同类 同名 参数列表不同(个数、类型、顺序) 注意返回类型和重载无关。 附加知识:在jvm中确定一个方法的方式是:返回值类型+方法名称+参数列表。java编程规范和JVM规范。

public class Method08 {    
    public static void main(String[] args) {                
        add(1,2);
       }        //计算10和20的和    
    public static void add() {       
         int num1 = 10;      
         int num2 = 20;                                      
           System.out.println(num1+num2);   
    }    //计算传入的两个参数的和   
    public static void add(int num1,int num2){              
       System.out.println(num1+num2);    
      }            
    public static void add(int num1){                       
       System.out.println(num1+20);   
      }           
    public static void add(int num1,byte num2){             
       System.out.println(num1+num2);  
      }      
    public static void add(byte num1,int num2){               
    System.out.println(num1+num2);   
      } 
}

递归

递归是一种变成技巧,程序自己调用自己

在递归程序中存在一个出口–>递归头

递归的最大优势是编写简单

计算一个数的阶乘

1! = 1; 
2! = 1*2 = 1!*2 
3! = 1*2*3 = 2!*3 
...... 
f(n) = f(n-1)*n 
假设编写一个方法,用来计算一个数的阶乘。
public static int method(int n) {   
    if(n==1||n==2) {  
        return 1; 
    }   
    return method(n-1)+method(n-2);
}

递归耗时的原因:

u79SfS.png

递归不光运行慢,而其及其占内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值