Java---Java中的方法

在编写Java第一个程序中我们就运用的了方法,他就是System.out.println(),那他又是什么呢?

  • println()就是一个方法。

  • System是系统类。

  • out是标准输出对象

综上所述,System这句话我们就可以理解为是在调用系统中System中的标准输出对象里的println方法。

一、所以到底什么是方法呢?

打个比方,现在我们想要吃饭,我们是不是得去找筷子和婉呀,所以这里找筷子和碗解决吃饭这个问题的办法就相当于Java中的方法。当我们想要完成某件事的时候找到某种办法帮助我们完成,这个办法也就相当于Java中的方法。就比如Java中我们想要输出“hello world”是不是要这样写呀:

System.out.println("hello world");

它帮助我们完成了输出这个目的,那么他就是一个方法。方法就是帮助我们完成某些功能的一个办法,有需要的时候就调用对应的方法。

二、方法的优点

  • 方法可以是提高代码的复用性。

  • 是程序变得更加清晰切简短

  • 方法可以提高程序开发的效率

  • 方法有利于程序的维护

三、方法的定义

/**
方法定义的固定格式
*/
修饰符 返回值类型 方法名(参数类型 参数名称){
    ...
    方法体(也就是功能)
    ...
    return 返回值
}

定义格式有了,那么小伙伴们有人要问了,呢这个修饰符...这些是什么呢?

  • 修饰符:修饰符,是可以选的,主要是定义方法的访问类型,让不让访问。

  • 返回值类型:方法可能会返回一些数据,这些数据是什么类型呢,是字符串(string)、整型(int)、浮点型(float)...,需要什么类型就返回什么类型。

  • 方法名:跟我们自己的名字差不多,用于调用方法和标识方法。

  • 参数类型和参数:他们两个是一体的,就是规定定义了一个什么类型的参数,用于方法被调用时传递参数。也被称为实参或变量。

  • 方法体:一般来说就是该方法的功能。

实例:

 

三、方法的分类

1)根据方法有没有参数,可分为:

无参方法

有参方法

2)根据有没有返回值,可分为:

无返回值方法

有返回值方法

public class Demo{
    
//  1. 最简单的无参、无修饰符方法
    void sum(){
        System.out.println("hello world"); 
    }
    
//  2. 有修饰符的无参方法 
    public static void sum1(){ 
        System.out.println("hello world");
    }
    
//  3. 有参数有、修饰符的方法
    public static void sum2(int a,int b){ 
        System.out.println("两数相加的结果"+a+b); 
    }
    
//  4.拥有返回值的方法 
    public static int sum3(int a,int b){
        return a+b;
    }
    
//  5.声明一个无参数带返回值
    public static int sum5(){
        int x=20; //  定义变量存放一个加数
        int y=28; //  定义另一个变量存放另一个加数
        int sum=x+y; //  定义一个变量存放两数相加的结果
        return sum; //  最后返回两数相加的结果
    }
}

四、方法调用

  • 语法:方法名称(实参列表);

  • 注意

  • a.实参的数量和类型必须和形参保持完全的一致。

  • b.方法之间只能进行相互的调用,而不能在方法中声明方法,就目前而言声明的方法都和main方法时并列的

  • c.如果定义方法有返回值,运算的结果会返回给调用者,调用者需要定义变量接收数据

Java的方法调用有两种形式,具体根据方法时候有返回值决定。

当程序调用一个方法时,程序的控制权交给了被调用的方法。当被调用方法的返回语句执行或者到达方法体闭括号时候交还控制权给程序。

当方法返回一个值的时候,方法调用通常被当做一个值。例如:

int larger = max(30, 40);

如果方法返回值是void,方法调用一定是一条语句。例如,方法println返回void。下面的调用是个语句:

System.out.println("hello world");

 

实例1:两数交换(无返回值)

public class Demo01{
​
    public static void main(String[] args) {
       //  定义实参,用于传递给调用的函数进行参数传递
        int x = 10;
        int y = 20;
        swap(x,y);
      //  输出两个变量查看其存储的值
        System.out.println("main函数中的x=" + x);//10
        System.out.println("main函数中的y=" + y);//20
    }
    /**分析:需要传递参数参数(两个参数)
      *调用格式:swap(x,y)
      *不需要返回值
      *形参:没有携带值的变量,多个变量之间使用逗号分隔
      */
    public static void swap(int x,int y){
      //定义一个变量作为过渡,实现两数交换
        int temp = 0;
        temp = x;
        x = y ;
        y = temp ;
​
        System.out.println("swap函数中的x=" + x); //20
        System.out.println("swap函数中的y=" + y); //10
    }
}
控制台输出的结果:
swap函数中的x=20
swap函数中的y=10
main函数中的x=10
main函数中的y=20

注意:需要被传递的参数为实参,被调用函数中的参数列表中的参数为形参,形参与实参一定要相对应,而且数据的类型也需要相对应,否则会出错。

实例2:有方法的返回值的案例

说到返回值我们就一定要用到return关键字

这里我们将有返回值案例分为三类

第一类:

public class Demo02 {
​
    public static void main(String[] args) {
        test();
    }
​
    /*  
        在没有返回值的函数中使用return 
        return单独成为一条语句,类似于break或者continue(后面再说),后面不能跟任何的数值 
        作用:结束整个方法 
    */
    public static void test() {
        System.out.println("Hello World!");
        int x = 10;
        if (x > 5) {
            return;//  提前结束方法 类似于:‘}’但不完全相同
        }
        // 不会执行
        System.out.println("Hello World!我不会执行");
    }
}
​

第二类:

public class Demo03 {
    public static void main(String[] args) {
       System.out.println("两数相加返回的结果为:"+add(10,20));
    }
​
    /*
    在一个需要返回值的函数中使用return 
    这种情况下函数中必须出现return 
    return后面必须跟一个具体的数值或存储数值的变量,而且数值的类型和返回值类型必须保持一致 
    作用:结束整个方法,并且将返回值返回给调用者 
    */
    public static int add(int a ,int b) {
       System.out.println("我是两数相加!并返回结果sum!!");
       int sum = a+b;
       return sum;
    }
}
​

第三类:

public class Demo04
​
    public static void main(String[] args) {
        //  调用并输出
        System.out.println(compare(3,5));
    }
​
    /*
    如果一个自定义的函数有返回值,
    并且在方法中遇到了分支结构,使用return
    在每一个分支后面都需要出现一个return 
    */
    
    // 需求:比较两个变量的大小,返回较大的一个
    public static int compare(int a,int b) {
        if(a>b){
            return a;
        }
        else if(a<b){
            return b;
        }
        else{
            return 0;
        }
    }
}
​

四.方法的重载

方法重载的概念

  • 同一个类中,方法名字相同,参数列表不同,则是方法重载。

  • 注意:

  • 参数列表的不同包括,参数个数不同,参数数据类型不同,参数顺序不同

  • 方法的重载与方法的修饰符和返回值没有任何关系

public class Demo05 {
    public static void main(String[] args) {
    //  调用时通过参数列表及参数类型区分所要调用的方法
        test();
        test(17);
        test("17");
        test("17",17);
    }
    
    public static void test() {
        System.out.println("无参无返回值的test");
    }
    
    public static void test(int a) {
        System.out.println("参数类型为int的test");
    }
    
    public static void test(String a) {
        System.out.println("参数类型为String的test");
    }
    
    public static void test(String a,int b) {
        System.out.println("参数类型既有String 又有int的test");
    }
    
}

五、Java中的常见问题

  • 方法常见问题

  • 方法的编写顺序无所谓。

  • 方法与方法之间是平级关系,不能嵌套定义。

  • 方法的返回值类型为void(无返回值),方法内则不能使用return返回数据,如果方法的返回值类型写了具体类型,方法内部则必须使用return返回对应类型的数据。

  • return语句下面,不能编写代码,因为永远执行不到,属于无效的代码。

  • 方法不调用就不执行,调用时必须严格匹配方法的参数情况。

  • 有返回值的方法调用时可以选择定义变量接收结果,或者直接输出调用,甚至直接调用:无返回值方法的调用只能直接调用一下。

最后感谢大家观看,分享!!

先一篇分享Java中*面向对象*相关知识!!!


版权声明:本文为weixin_48019148原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。