码歌学习Day(07)方法

方法

什么是方法?

方法就是一个功能模块的集合,将很多行代码放置在一组{}中,制作成一个代码块,可以提高代码的复用性,减小代码实现的功能之间的关联性

为什么要使用方法

举例:

/*
在一些需求中,有些代码实际上是重复的,可以使用方法来对代码中相同的部分进行
比如:
1.输入一个数字,并将这个数字倒序输出
2.输入一个数字,判断这个数字是否是水仙花数
需求1思路:
1:将输入的数字逐个分离
2:将分离出来的数字通过乘以10^位-1从个位到最高位依次从新排列
3:将计算出来的数字相加得到目标值
需求2思路:
1:将数字逐个分离
2:分别计算出分离出来的每个数字的位数次幂
3:将2中计算的出来的结果相加
4:将最后得到的数字和初始的数字进行对比,判断该数字是否是水仙花数
*/

​ 通过比较关键的思路步骤,不难发现其中的两个需求中对输入的数据的加工步骤是有共同点的,在这种情况下,可以用方法来将步骤分离,并通过调用方法来使用相应的步骤代码,达到降低程序代码耦合度,提高代码复用性的目的。

使用方法的好处

  • 可以提高代码的复用性
  • 可以提高后期代码的扩展性
  • 可以提高后期代码的维护性

如何使用方法

1:方法的声明

  • 位于类中,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("第一个方法");
    }
}
  • 方法名称命名遵守标识符的命名规则,并且基本和变量名的命名规则一样

参数列表

1.完成两个数相加

public class Test{
    public static void main(String[] args){
        add();
    }
    public static void add(){
        int a = 10;
        int b = 20;
        System.out.println("相加的和是"+(a+b);
    }
}

其中add方法中的数字不能在main方法中改变,导致程序的复用性比较差;可以通过参数列表来完成

2.参数列表的使用

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

public class Test{
    public static void main(String[] args){
        add(10,20);
    }
    public static void add(int a,int b){
        System.out.println("相加的和是"+(a+b);
    }
}
  • 参数列表的注意事项

    • 将方法声明的参数列表称之为形式参数(简称形参)
    • 对于调用的方法而言,传入的具体的参数的值是实际参数(简称实参)
    • 方法声明的参数不需要初始化就可以使用,因为方法调用到之后一定会赋一个默认值
    • 对于方法的调用者而言,在方法调用的时候不能只看方法名称,还需要相对应的实际参数列表,只有这样书写才能将方法正确调用。
    • 在一个类中确定方法通过方法签名来完成 方法签名(方法名称+参数列表)
    • 对于参数而言,具体的参数类型,个数,顺序都有一定的要求,要求取决于业务逻辑

    3.变量的分类:

public class Test{
    public static void main(String[] args){
       int a = 10;
        int b = 20;
        add(20,30);
        System.out.println(a+"==="+b)}
    public static void add(int a,int b){
        System.out.println(a+"==="+b)}
}

变量的三要素:变量类型,变量名,生命周期

按照变量声明的位置不同,将变量分为局部变量和成员变量

变量类型声明方式作用范围注意事项
成员变量声明在类中,方法外的变量当前类中有效成员变量在声明之后都附有一个默认值(各种数据类型的0)在调用变量的时候,需要使用static修饰变量名或者创建一个对象来调用对象
局部变量声明在方法中或者是代码块中,方法的参数列表是属于该方法的局部变量当前{}中有效一定要先声明赋值再使用

局部变量

局部变量就是定义在方法中或代码块中的变量,方法中的变量,局部变量的生命周期只有当前的代码块本身。

public class Test{
    public static void main(String[] args){
        {
            int a = 10;
            System.out.println("代码块内"+a);
        }
        System.out.println("代码块外"+a);
    }
}

就代码块而言,也分多种的代码块:局部代码块、初始化块、静态代码块。

局部代码块:声明在方法中的代码块。局部代码块中声明的变量只能在当前局部代码快中有效。

局部代码块的优势:缩减了变量的生命周期;提高了内存的使用率,降低内存占用。

成员变量

声明在类中,方法外的变量称之为成员变量。

public class Overload {
	int num ;
	double a;
	char ch;
	boolean b;
	String s;
	public static void main(String[] args){
		Overload o = new Overload();
		System.out.println(o.num);
		System.out.println(o.a);
		System.out.println("-"+o.ch+"-");
		System.out.println(o.b);
		System.out.println(o.s);
	}
}

成员变量要点:

  • 成员变量可以不初始化就直接使用
  • 成员变量的初始值是各种各样的0。
数据类型整数型浮点型字符型布尔型引用类型
初始值00.0’ ’falsenull

返回值

被调用的方法可以将自己最后的结果返回给调用处,方便后续的业务逻辑执行。返回值对于某些方法是极其有必要的。

  • void:该方法没有返回值
  • 一个方法可以不存在void,但是一定要有内容去填充void所在的位置
  • 返回的数据的具体是什么类型,则通过该类型去代替void的位置
  • 一个方法存在返回值,该方法的最后一行代码一定是return语句。
  • 某个有返回值的方法执行完成之后,return的返回值会直接返回到该方法中,可以声明一个变量来接收该方法返回的值
public class Return{
	public static void main(String[] args) {
		add(3);
	}
	public static int add(int num) {
		num = num +num;
		System.out.println(num);
		return num;
	}
}

如何定义方法

  • 方法的定义没有诀窍,只有多多练习,接收清晰的需求,方法就可以写出
  • 方法的功能尽可能单一,否则容易导致代码臃肿,不利于后期维护
  • 方法存在的目的是提高代码的复用性
  • 对于方法而言最重要的就是返回值和参数列表

#### 方法的重载

在同个一类中,有两个以上的方法名称相同,但参数列表不同,该多个方法就称为重载

重载在代码编写执行过程中是有意义的,可以通过不同的返回值来对应调用不同的方法

public class Overload {
	 
	 public static void main(String[] args) {
		 System.out.println(add(4,3));
		 System.out.println(add('a',3));
	 }
	public static int add(int num1,int num2) {
		int num = num1+num2;
		return num;
	} 
	public static int add(byte num1,int num2) {
		int num = num1+num2;
		return num;
	} 
 
	public static int add(char num1,int num2) {
		int num = num1+num2;
		return num;
	} 
	public static int add(int num1,char num2) {
		int num = num1+num2;
		return num;
	}
	
}

重载的触发条件:同名方法的不同的参数列表(不同的参数类型,不同的参数数量,不同的参数顺序,三个条件满足一个即可)

注意:返回值类型和重载无关

方法重载的问题

  • 执行方法调用时,一定要注意方法调用的原则是最近最优原则。先找一个完全能够匹配的被调用方法,如果不存在这个方法,则实际参数的数据类型会做自动类型提升,以期望可以找到一个最优的方法
  • 自动提升的方式和数据类型的自动类型提升锋方式一致
  • 一定不要让程序存在二义性,比如在程序中存在多个可以被调用的方法的时候,如果不存在一个完全匹配的方法,程序会报错
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值