JAVA ---方法

本文详细介绍了Java中的方法定义,包括方法名称、参数列表、返回值类型和方法体。方法调用的规则,强调了形参和实参的概念以及调用时的匹配要求。还讨论了方法的嵌套调用和递归调用。此外,提到了方法的重载,即同名方法通过参数差异实现多态性。最后,文章阐述了参数传递的机制,特别是引用类型的特殊性和类方法与实例方法的区别。
摘要由CSDN通过智能技术生成

 (一)定义:

Java的方法是为了完成某个操作而组合在一起的语句组。可以理解成 一个固定的程序段,可供重复使用。

定义方法:方法名称、参数列表、返回值类型以及方法体组成的。,其语法形式如下:

返回值类型  方法名称 (参数列表)

{

    方法体;

形式参数(简称形参):type name;type1 name1;……typen namen;//其中type ,type1……typen为类型标识符,表示形参类型。name ,name1……namen是形参名; 其main方法的形参为(String [] args),其形参也称命令行参圆,由操作系统在启动程序时初始化。不过命令行参数的数量和类型有特殊要求。函数在没有被调用时是静止的,此时的形参只是一个符号,它标志着在形参出现的位置应该有一个什么类型的数据。函数在被调用时才执行,也是在被调用时才由主调函数将实际参数(简称实参)赋予形参。

参数是有具体含义的,通常代表当前这个函数的功能需要具备的参数。

返回值和返回值类型

方法可以有一个返回值,方法的返回值是需要返回给主调方法的处理结果。类型说明
符规定了方法返回值的类型。方法的返回值由return语句给出,格式如下,
return 表达式;
       除了指定方法的返回值外,return 语句还有一个作用,就是结束当前方法的执行。 
一个方法也可以不将任何值返回给主调方法,这时它的类型标识符为void,可以不写return语句,但也可以写一个不带表达式的return语句,用于结束当前函数的调用。

      主方法是类的入口点,它定义了程序从何处开始;主方法提供对程序流向的控制,Java编译器通过主方法来执行程序。主方法的语法如下:
public   static  void main(Stringll args){
//主方法

}
在主方法的定义中可以看到其具有以下特性:
①主方法是静态的,所以如要直接在主方法中调用其他方法,则该方法必须是静态的。
②主方法没有返回值。
③主方法的形参为数组。其中args[0]~args[n]分别代表程序的第一个参数到第n个参数,可以使用args.len gth获取参数的个数。

(二)方法的调用

变量在使用之前需要首先声明,类似地,方法在调用之前也需要声明。方法声明的形式如下:

类型说明符 方法名(含类型说明的形式参数表) ;

函数参数:
//形参--->创建函数时用的参数(类型修饰的)
//实参--->调用函数时用的参数(没有类型修饰)

所有传参方式都是赋值方式

注意:声明方法时,形参表只要包含完整的类型信息,形参名可以省略;即原型声明的形参表可按下面格式书写:type,type1……typen

声明方法原型之后,可使用方法名(实参列表)调用子方法;

注意:方法调用的时候,形参和实参类型必须一致;不一致会存在强制类型转换 ,如果转换不了程序直接崩掉

   实参列表中应给出与方法原型形参个数相同、类型相符的实参,每个实参都是一个表达式,方法调用可以作为一条语句,这时方法可以没有返回值。方法调用也可以出现在表达式中,这时就必须有一个明确的返回值。
    调用一个方法时,首先计算方法的实参列表中各个表达式的值,然后主调方法暂停执行,开始执行被调方法,被调方法中形参的初值就是主调方法·中实参表达式的求值结果。当被调方法·执行到return语句,或执行到方法末尾时,被调方法·执行完毕,继续执行主调方法·。
 

嵌套调用:方法·允许嵌套调用。方法的调用可以通过用一个方法调用另一个方法来实现,这就形成了方法的嵌套调用。例子: 

递归调用:方法可以直接或间接地调用自身,称为递归调用。

所谓直接调用自身,就是指在一个方法的方法体中出现了对自身的调用表达式,相关代码

package com.sxt;
import java.util.Scanner;
public class Test {
//主方法: public static  void main(String[] args),有且仅有1个主函数
    public static  void main(String[] args)
    {
      int i=0;int y=9;int z=4;
      System.out.println(max(i,y));
        System.out.println(max(max(i,y),z));//简单递归:自己调用自己
        System.out.println( squareSum(6,8));
    }
    public static int max(int num1,int num2)
    {
        return (num1>num2?num1:num2);
    }
    public static int square(int num1 )
    {
         return num1*num1;
    }
    public static int squareSum(int num1,int num2)
    {
         return square(num1)+square(num2);//函数嵌套
    }
}


(三)方法重载   

       方法重载是多态性的一种,所谓功能多态性,是指可以向功能传递不同的消息,以便让对象根据相应的消息来产生一定的行为。对象的功能通过类中的方法来体现,那么功能的多态性就是方法的重载。
       方法重载是指一个类中可以有多个方法具有相同的名字,但这些方法的参数必须不同,即或者是参数的个数不同,或者是参数的类型不同。方法的返回类型和参数的名字不参与比较,也就是说,如果两个方法的名字相同,即使类型不同,也必须保证参数不同。

class A{

int getA(int a,double b)
{
  return (int)(a*b);
}
double getA(int a,double b)
{
  return  (a*b);
}
double getA(int a,float d,float c)
{
  return  (a*b*z);
}

public class AA{
public static void main(String args[]){
 A a=new A();
  System.out.println("面积:"+a.getA(10,3.64));

    System.out.println("面积:"+a.getA(10.0,8));
}}

(4)方法的参数传递

   ⒈  当方法未被调用时,方法的形参并不占有实际的内存空间,也没有实际的值。只有在方法被调用时才为形参分配存储单元,并将实参与形参结合。 当方法被调用时,如果方法有参数,参数必须实例化。即参数变量必须具有具体的值。每个实参都是一个表达式,其类型必须与形参相符(如果不符,则向该参数传递的值的级别不高于该参数的级别)。方法的参数传递指的就是形参与实参结合(简称形实结合)的过程,形实结合的方式有值传递和引用传递。

      方法参数一定要有意义,自己十分清楚参数的意义,如解释不了就别写。

注意

数组传参的特殊性:

数字类数组当做函数参数时,一定要传入输入长度。

二维数组传参列数不能缺省。

字符串当做函数参数,可以不需传入长度,因为字符串具有字符串结束标记'\0'

    ⒉ 引用类型参数的传值
       Java 的引用型数据包括我们学习过的对象、数组以及后面将要学习的接口。当参数是引用类型时,“传值”传递的是变量的引用而不是变量所引用的实体。
       如果改变参数变量所引用的实体,就会导致原变量的实体发生同样的变化,因为两个引用型变量如果具有同样的引用,就会用同样的实体,但改变参数的引用不会影响向其传值的变量的引用。

(5)Java中的类方法和实例方法的区别

Java中的类方法: 用static关键字修饰的方法

             实例方法:没有用static关键字修饰的方法

  类方法在Java源文件被编译成字节码,字节码执行时被加载到栈内存中就已经分配了入口地址,因此类方法可以直接用类名调用也可以用实例调用; 而实例方法在创建对象之前未被分配内存地址,需要实例化后,才能被分配堆内存空间,只能被实例调用。 

  实例方法只能通过实例对象去引用,类方法即可以通过实例对象又能通过类名去引用。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尘 关

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值