1.6 方法(语法基础)

  • 6.1 如何定义java中的方法

所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块。
一般情况下,定义一个方法的语法是:

Paste_Image.png

其中:
1、 访问修饰符:方法允许被访问的权限范围, 可以是 public、protected、private 甚至可以省略 ,其中 public 表示该方法可以被其他任何代码调用,其他几种修饰符的使用在后面章节中会详细讲解滴
2、 返回值类型:方法返回值的类型,如果方法不返回任何值,则返回值类型指定为 void ;如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用 return 语句返回值
3、 方法名:定义的方法的名字,必须使用合法的标识符
4、 参数列表:传递给方法的参数列表,参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开
根据方法是否带参、是否带返回值,可将方法分为四类:
Ø 无参无返回值方法
Ø 无参带返回值方法
Ø 带参无返回值方法
Ø 带参带返回值方法

public class HelloWorld {
    
    //定义了一个方法名为 print 的方法,实现输出信息功能
    public void print() {
        System.out.println("Hello World");
    }
    
    public static void main(String[] args){
        
        //在 main 方法中调用 print 方法
        HelloWorld test=new HelloWorld();
        test.print();
    }
}
  • 6.2 java中无参无返回值方法的使用

如果方法不包含参数,且没有返回值,我们称为无参无返回值的方法。
方法的使用分两步:
第一步,定义方法
例如:下面代码定义了一个方法名为 show ,没有参数,且没有返回值的方法,执行的操作为输出 “ welcome to imooc. ”

Paste_Image.png

注意哦:
1、 方法体放在一对大括号中,实现特定的操作
2、 方法名主要在调用这个方法时使用,需要注意命名的规范,一般采用第一个单词首字母小写,其它单词首字母大写的形式
第二步,调用方法
当需要调用方法执行某个操作时,可以先创建类的对象,然后通过 对象名.方法名(); 来实现(关于类和对象的概念在后面章节中会详细讲解滴,先熟悉语法,表着急哦~~)
例如:在下面的代码中,我们创建了一个名为 hello 的对象,然后通过调用该对象的 show( ) 方法输出信息

Paste_Image.png

运行结果为: welcome to imooc.

  • 6.3 java中无参带返回值方法的使用

如果方法不包含参数,但有返回值,我们称为无参带返回值的方法。
例如:下面的代码,定义了一个方法名为 calSum ,无参数,但返回值为 int 类型的方法,执行的操作为计算两数之和,并返回结果

Paste_Image.png

在 calSum( ) 方法中,返回值类型为 int 类型,因此在方法体中必须使用 return 返回一个整数值。
调用带返回值的方法时需要注意,由于方法执行后会返回一个结果,因此在调用带返回值方法时一般都会接收其返回值并进行处理。如:

Paste_Image.png

运行结果为: 两数之和为:17
不容忽视的“小陷阱”:

1、 如果方法的返回类型为 void ,则方法中不能使用 return 返回值!
Paste_Image.png
2、 方法的返回值最多只能有一个,不能返回多个值
Paste_Image.png
3、 方法返回值的类型必须兼容,例如,如果返回值类型为 int ,则不能返回 String 型值
Paste_Image.png
    //完成 main 方法
    public static void main(String[] args) {
        
        // 创建对象,对象名为hello
        HelloWorld hello = new HelloWorld(); 
        
        // 调用方法并将返回值保存在变量中
        int maxScore=hello.getMaxAge();
        
        // 输出最大年龄
        System.out.println("最大年龄为:" + maxScore); 
    }

    /*
     * 功能:输出学生年龄的最大值 
     * 定义一个无参的方法,返回值为年龄的最大值
     * 参考步骤:
     * 1、定义一个整形数组 ages ,保存学生年龄,数组元素依次为 18 ,23 ,21 ,19 ,25 ,29 ,17
     * 2、定义一个整形变量 max ,保存学生最大年龄,初始时假定数组中的第一个元素为最大值
     * 3、使用 for 循环遍历数组中的元素,并与假定的最大值比较,如果比假定的最大值要大,则替换当前的最大值
     * 4、使用 return 返回最大值
     */
    
    public int getMaxAge() {
        int[] ages={18,23,21,19,225,29,17};
        int max=ages[0];;
        for(int i=0;i<ages.length;i++){
            if(max<ages[i]){
                max=ages[i];
            }
        }
        return max;
  
    }
}
  • 6.4 java中带参无返回值方法的使用

有时方法的执行需要依赖于某些条件,换句话说,要想通过方法完成特定的功能,需要为其提供额外的信息才行。例如,现实生活中电饭锅可以实现“煮饭”的功能,但前提是我们必须提供食材,如果我们什么都不提供,那就真是的“巧妇难为无米之炊”了。我们可以通过在方法中加入参数列表接收外部传入的数据信息,参数可以是任意的基本类型数据或引用类型数据。
我们先来看一个带参数,但没有返回值的方法:

Paste_Image.png

上面的代码定义了一个 show 方法,带有一个参数 name ,实现输出欢迎消息。
调用带参方法与调用无参方法的语法类似,但在调用时必须传入实际的参数值

Paste_Image.png

例如:

Paste_Image.png

运行结果为: 欢迎您,爱慕课!
很多时候,我们把定义方法时的参数称为形参,目的是用来定义方法需要传入的参数的个数和类型;把调用方法时的参数称为实参,是传递给方法真正被处理的值。
一定不可忽视的问题:
1、 调用带参方法时,必须保证实参的数量、类型、顺序与形参一一对应

Paste_Image.png

2、 调用方法时,实参不需要指定数据类型,如
Paste_Image.png

3、 方法的参数可以是基本数据类型,如 int、double 等,也可以是引用数据类型,如 String、数组等
Paste_Image.png

4、 当方法参数有多个时,多个参数间以逗号分隔

Paste_Image.png
public class HelloWorld {
    public static void main(String[] args) {
        
        // 创建对象,对象名为hello
        HelloWorld hello = new HelloWorld();
        
        // 调用方法,传入两门课程的成绩
        hello.calcAvg(94, 81);
    }

    /*
     * 功能:计算两门课程考试成绩的平均分并输出平均分
     * 定义一个包含两个参数的方法,用来传入两门课程的成绩
     */
     public void calcAvg(int A,int B){
         int avg=(A+B)/2;
         System.out.println("平均成绩为:"+avg);
     }
}
  • 6.5 java中带参带返回值方法的使用

如果方法既包含参数,又带有返回值,我们称为带参带返回值的方法。
例如:下面的代码,定义了一个 show 方法,带有一个参数 name ,方法执行后返回一个 String 类型的结果

Paste_Image.png

调用带参带返回值的方法:

Paste_Image.png

运行结果为: 欢迎您,爱慕课!

import java.util.Arrays;
public class HelloWorld {
    public static void main(String[] args) {
        HelloWorld hello = new HelloWorld();
        int[] scores={79,52,98,81};
        
        //调用方法,传入成绩数组,并获取成绩的个数
        int count=hello.sort(scores);
        
        System.out.println("共有"+count+"个成绩信息!");
    }
    
    /*
     * 功能:将考试成绩排序并输出,返回成绩的个数
     * 定义一个包含整型数组参数的方法,传入成绩数组
     * 使用Arrays类对成绩数组进行排序并输出
     * 方法执行后返回数组中元素的个数
     */
    public int sort(int[] scores){
        Arrays.sort(scores);
        System.out.println(Arrays.toString(scores));
        
        //返回数组中元素的个数
        return scores.length;
    }
}

6.6 Java中方法的重载
问: 什么是方法的重载呢?
答: 如果同一个类中包含了两个或两个以上方法名相同、方法参数的个数、顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了。如下所示 4 个方法名称都为 show ,但方法的参数有所不同,因此都属于方法的重载:

Paste_Image.png

问: 如何区分调用的是哪个重载方法呢?
答: 当调用被重载的方法时, Java 会根据参数的个数和类型来判断应该调用哪个重载方法,参数完全匹配的方法将被执行。如:

Paste_Image.png

运行结果:

Paste_Image.png
  • 判断方法重载的依据:

1、 必须是在同一个类中
2、 方法名相同
3、 方法参数的个数、顺序或类型不同
4、 与方法的修饰符或返回值没有关系

public class HelloWorld {
    public static void main(String[] args) {

        // 创建对象
        HelloWorld hello = new HelloWorld();

        // 调用无参的方法
        hello.print();

        // 调用带有一个字符串参数的方法
        hello.print("夏");   

        // 调用带有一个整型参数的方法
        hello.print(5); 
    }

    public void print() {
        System.out.println("无参的print方法");
    }

    public void print(String name) {
        System.out.println("带有一个字符串参数的print方法,参数值为:" + name);
    }

    public void print(int age) {
        System.out.println("带有一个整型参数的print方法,参数值为:" + age);
    }
}

要求:
1、 要求通过定义带参带返回值的方法来实现
2、 通过参数传入数组的长度(例如长度为 8),方法执行后返回赋值后的数组
3、 通过 (int)(Math.random() * 100) 生成 100 以内的随机数
注:Math 类是用于进行算术操作的类,Math.random() 生成 0--1 的浮点数。 关于该类的其他应用在后面章节会有详细介绍,先熟悉随机数方法的使用~~
运行效果为:** [ 2 , 52 , 8 , 26 , 66 , 32 , 98 , 0 ]**

      import java.util.Arrays;

      public class HelloWorld {
        public static void main(String[] args) {
        
         // 创建对象,对象名为hello
        HelloWorld hello = new HelloWorld();
        
        // 调用方法并将返回值保存在变量中
        int[] nums = hello.getArray(8);
        
        // 将数组转换为字符串并输出
        System.out.println(Arrays.toString(nums)); 
        }

        /*
       * 功能:创建指定长度的int型数组,并生成100以内随机数为数组中的每个元素赋值
       * 定义一个带参带返回值的方法,通过参数传入数组的长度,返回赋值后的数组
       */
      public int[] getArray(int length) {
        // 定义指定长度的整型数组
        int[] nums = new int[length];

          // 循环遍历数组赋值
        for (  int i=0;i<nums.length;i++  ) {
            
            // 产生一个100以内的随机数,并赋值给数组的每个成员
            nums[i]= (int)(Math.random()*100);

        }
        return nums; // 返回赋值后的数组
    }
}

随机数

  • import java.util.Random;
    Random R=new Random();
    int number=R.nextInt(100);
  • nums= (int)(Math.random()*100);

要求:
1、 考试成绩已保存在数组 scores 中,数组元素依次为 89 , -23 , 64 , 91 , 119 , 52 , 73
2、 要求通过自定义方法来实现成绩排名并输出操作,将成绩数组作为参数传入
3、 要求判断成绩的有效性( 0—100 ),如果成绩无效,则忽略此成绩

import java.util.Arrays;
public class HelloWorld {
    
    //完成 main 方法
    public static void main(String[] args) {
        int[] scores={89,-23,64,91,119,52,73};
        result(scores);
    }
    
    //定义方法完成成绩排序并输出前三名的功能
    public static void result(int[] scores){
        Arrays.sort(scores);
        int scoreNum = 0;
        System.out.println("考试成绩前三名:");
        for (int i = scores.length - 1; scoreNum < 3 && i >= 0; i--) { // 倒序遍历数组,并通过有效成绩个数判断前三名
            if (scores[i] > 100 || scores[i] < 0) { // 过滤无效成绩
                continue;
            }
            scoreNum++; // 有效成绩个数加1
            System.out.println(scores[i]); // 每次循环输出有效成绩
        }
    }
}
import java.util.Arrays;
public class HelloWorld {
    
    //完成 main 方法
    public static void main(String[] args) {
        int scores[]={89,-23,64,91,119,52,73} ;   
        System.out.println("考试成绩的前3名为:")  ; 
        HelloWorld hello=new HelloWorld();   
        hello.paiMing(scores);  
    }
    
    //定义方法完成成绩排序并输出前三名的功能
    public void paiMing(int scores[]){
        Arrays.sort(scores);
        int num=0;
        for(int i=scores.length-1;i>=0;i--){
            if(scores[i]<0||scores[i]>100){
                continue;
            }
            num++;
            if(num>3){
                break;
            }
            System.out.println(scores[i]);
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容