Java基础知识整理【4】 (方法)

方法

java中不区分函数和方法,方法就是函数

什么是方法?

循环是为了解决重复操作的事情,某些情况之下,某些代码需要大量重复,此时循环就不能满足要求,此时可以对这些代码进行封装,这个封装就是方法

方法就是一段可重复调用的代码段,要在多个地方多次使用这段代码,如果在各个地方重复编写此代码,则肯定会比较麻烦,而且此部分代码如果进行修改,也比较麻烦,所以此时可以将此代码定义成一个方法,以供程序反复使用。

方法格式:  
        访问权限修饰符[其他修饰符] 返回值类型 方法名(参数列表){
                           方法体; 
                          return;   
          }

定义方法的时候方法和方法之间是平级关系
方法详情说明
访问权限修饰符:
提供当前方法可以被谁调用(被谁访问)
访问权限修饰符有4个:public共有的 最大权限,谁都可以访问

其他修饰符:
其他修饰符用中括号括起来的,是可以省略不写的
其他修饰符有4种:static 静态的 属于类

返回值类型:
当前方法完成某项功能后,可以得到的结果是什么
1、无返回值类型–>>void此方法不会得到任何返回结果
2、有返回值类型:值类型(基本数据类型) 引用类型(数组,接口,集合,流等等)

方法名:
方法名要遵守表示符命名规则,尽量使用动词
大驼峰:所有字母首字母大写 小驼峰:第一个单词小写,后续每一个单词的首字母大写 例如:getNumber ------->>>驼峰命名法

参数列表(形参列表):
形参,可以提供给方法使用,获得外部传递进来的参数
参数列表的组成:参数的数据类型 参数名 ,参数的数据类型 参数名
形参列表就是定义变量,这个变量没有具体值,只要方法不调用,这个变量就不会有任何空间

方法签名:
每一个方法的方法签名都是唯一的,若出现相同的签名就会编译报错
组成 方法名+参数列表

 return关键字:
 是在方法体内部使用,return关键字可以终止方法或者带回一个返回值
 第一种使用方式无返回值类型:
 此时方法中可以使用return也可以不写return,但是绝对不能在return后面添加
 任何具体的值。
 第二种使用方式有返回值类型:
 此时方法必须使用return,必须带有一个当前返回值类型一致的值。
 ps:正常来说方法中只有一个return,即执行一个return操作!
 有多个return时,只能执行一个return,其他的用分支判断隔开

方法的调用
写在方法体内部,静态方法有两种调用方式:

第一种:   方法名();

ps:若当前方法中有参数列表,必须传入对应怼数据常量,变量或表达式或者其他方法,传入的数据类型和个数必须与参数列表的数据类型和个数一致。
传入的数据是实参—>>>实际参数(有具体的值)
//若当前方法有返回值,可以选择接受也可以选择不接受,具体看后续代码是否需要使用返回值

第二种调用方式:通过类名.静态方法名(); 静态属于类,类可以调用静态方法

两种的不同点:在同一个类下静态方法可以不使用类名.方式调用,在其他类中需要访问当前类怼静态法,必须使用类名.方式调用方法 ps:MethodDemo.printNineNine();

没有返回值类型的方法一定不能接受 ps:printNineNine();

总结:方法的调用分为同类和不同类,和有返回值和没有返回值;
同类中调用 直接写 *方法名(对应参数列表)*调用
不同类中调用 方法名所在类名.方法名(对应参数列表) 调用
ps:如何判断一个方法是否有返回值 system.out.println(方法名());

方法的常见样式

public class MethodDemo2{
    public static void main(String[] args){
    }
    }
	//1.无参无返回值 --> 纯打印
  public static void show1(){ }
    //2.有参无返回值 --> 打印
    public static void show2(int a){ } //3.有参有返回值 --> 计算
    public static int show3(int a){ } //必须有return //4.无参有返回值--> 计算
    public static int show(){ } // 必须有return
}

方法在内存圈
需求:定义一个方法,求两个数的和
在这里插入图片描述

方法的重载
学习方法的时候就是在间接的学习面向对象–>封装,也是在学习多态
方法多态---->>>
相同功能的方法,不需要定义不同的方法名,这样不利于记忆!相同功能的方法名,通过相同的方法名,不同怼参数可以达到重载的目的。只需要记住一个方法名,根据传入的不同的数据,系统自动选择最合适怼方法使用

重载的定义:
方法签名=方法名+参数列表
方法重载即方法名相同,但是参数列表不同只能满足下列其中一种即可,即是重载
1 参数怼数据类型不同 2 个数不同 3顺序不同
只要满足方法名和参数列表的要求即可,其他的都不管
好处:可以不用大量记录方法名,可以通过一个方法名调用方法,动态怼通过参数来决定实现逻辑

系统会通过程序员传入的参数来动态决定调用哪个方法,所以会出现一个重载的中的问题(避免出现下面的问题)
 public class OverloadDemo2 {
        public static void main(String[] args) {
			//求和
				byte num1 = 1;
				byte num2 = 1;
				//OverloadDemo2 中的方法 add(byte,short) //OverloadDemo2 中的方法 add(short,byte) 都匹配 //二义性
                 int sum = add(num1,num2); System.out.println(sum);
           }
            public static int add(byte num1 ,short num2){
            return  num1+num2;
    }
    public static int add(short num1,byte num2){
} }

递归(初级)
递归是方法本身调用本身,对内存消耗很严重
递归本身就相当于在方法体怼内部有一个隐式的循环是不断怼调用自身(方法本身)
递归没有出口即没有结束的点,此时JVM会抛出一个错误StackOverFlowError 栈溢出

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/root1994/article/details/88911133