JAVA入门笔记3 —— 方法

  • 参考书:《Java语言程序设计与数据结构(基础篇)》—— 梁勇

一、概述

  • 方法:就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。 当我们需要这个功能的时候,就可以去调用。这样即实现了代码的复用性,也解决了代码冗余的现象。
  • java中的方法,基本等价于C++中类的方法和C中的函数

二、定义一个方法

1. 格式

修饰符 返回值类型 方法名 (参数列表)
{
    
    
	代码... 	//方法体
	return x; 	//返回值
}

2. 说明

  • 修饰符:

    1. 权限关键字:private/public/protect,类似C++(现在全写public即可,具体到对象和类的部分再说明)
    2. 静态关键字:static,加上后定义的方法称为静态方法
  • 返回值类型:

    1. 无返回值:void
    2. 各种数据类型:int、long、double、float、String...
  • 方法名:为我们定义的方法起名,满足标识符的规范,用来调用方法

  • 参数列表:这是形式参数的列表,调用时传入实际参数

  • 返回值:方法末尾可以通过return返回一个数据,类型为函数头中声明的返回值类型。若返回值类型是void,return可以省略,也可直接写return;不带返回值,从而提前退出方法

  • 注意:方法必须定义在其他类中方法外,不可嵌套定义

3. 示例

public static void methodName() 
{
    
     	
	System.out.println("这是一个方法"); 
}

三、调用方法

1. 静态方法和动态方法

  • 静态方法(有static修饰符):

    1. 静态方法存储在在一个公共的内存地址,可以被这个类的所有对象访问。
    2. 类的静态方法和类的静态变量一样是在类加载的时候初始化的。
    3. 调用静态方法时可以按常规方式对象名.方法名调用,也可以按类名.成员名形式调用,不需要创建对象(最好使用后者,可以方便看出这是静态的)
  • 动态方法/实例方法(无static修饰符):

    1. 动态方法和对象实例存储在一起
    2. 动态方法在实例化对象的时候初始化,因此静态方法不能调用动态方法(因为调用的时候动态方法可能还没生成)
    3. 调用动态方法前必须创建对象,按对象名.方法名方式调用

2. 传参说明

  • 调用时参数会尽量兼容,比如函数头为public static void print(int i),调用时写print('a'),可以自动转换

    扫描二维码关注公众号,回复: 12423721 查看本文章
  • java中参数传递方式只有值传递一种

    1. 传入的是基本数据类型int/float/char...):直接复制值,方法中修改形参不影响实参
    2. 传入的是引用数据类型String/数组/对象...):引用数据类型存储的是真实数据的引用(可以看作地址),传参时同样复制实参的值,故形参存储了一个相同的引用。也如果在方法内通过形参修改其引用的对象本身,在方法退出后修改仍会保留;如果在方法内没有修改引用的对象,只是修改了形参(比如指向了其他对象),方法退出后修改不会保留

    详细说明可参考:为什么说Java中只有值传递

四、重载方法

  • 重载允许你使用相同的名称定义不同的方法,但是他们的参数列表必须不同

  • 要求:

    1. 函数名称必须相同
    2. 参数列表必须不同(个数不同、类型不同、参数排列顺序不同等)
    3. 函数的返回类型可以相同也可以不相同,仅仅返回类型不同不足以成为函数的重载
    4. 如果函数调用时可以匹配多个函数,会匹配最精确的那个函数,如果两个函数一样精确,就会报错
      max(int a,double b);
      max(double a,int b);
      调用max(1,2)时,因为上面两个函数一样精确,所以会报错
  • 使用重载方法,可以使使程序更清楚更有可读性。执行同样的功能的方法应当具有相同的名字,不管其参数类型是什么

五、变量的作用域

  • 在方法中定义的变量称为局部变量,其作用域从变量定义处开始,直到其所在的块末尾为止。局部变量使用前必须要定义并赋值
  • 方法的参数实际上就是一个局部变量,其作用范围涵盖整个方法
  • 可以在一个函数内部的不同块(比如一个for循环体)里定义同名的局部变量
    • 在内层,内层的同名变量会 ”遮住“ 外层的同名变量
    • 在外层,内层的同名变量不可见

猜你喜欢

转载自blog.csdn.net/wxc971231/article/details/108613593