11. 方法

从零开始学Java封面11.jpg

方法又称为功能函数,有时候我们需要在程序中反复执行同一项任务,我们不需要反复编写完成该任务的代码,而只需要调用该任务的方法,让 Java 运行其中的代码。方法可以使程序的编写、阅读、测试和修复变得非常容易。

从面向对象的角度理解,方法可以描述一类对象的行为与功能。展现某个对象的行为,调用该对象对应的方法就可以完成。

1. 定义方法

方法必须在一个类中定义,不能单独存在。

public class Person {
  //定义一个打招呼的方法
  public static void greet() {
    System.out.println("Hello!");
  }
  public static void main(String[] args) {
     greet();//调用greet方法
  }
}

输出结果:

Hello!

greet是定义在 Person 类中的一个类方法。

  • static 意思是这个方法属于Person类, 而不是属于Person类实例化的某个对象 . 可以在另外一个类里面像这样 Person.greet() 一样直接用。static修饰的方法叫做类方法,类方法也称为静态方法。
  • void 意思是这个方法没有返回值。 在Java 中也可以给方法定义一个 返回值 ,这个需要在方法声明
  • 这个方法没有任何参数, 但是在其他场景Java方法可以有一个或多个参数

2. 传递参数

方法允许向它传递一些数据,即传递参数。这样可以根据传递参数的不同,产生不同的结果。

向某人Say Hello

public class Person {
    public static void greet(String username) {
        System.out.println("Hello, " + username);
    }
    public static void main(String[] args) {
        greet("Tom");//调用greet方法,传递Tom字符串
        greet("Lily");//再次调用greet方法
        greet("Arvin");
    }
}

输出结果:

Hello, Tom
Hello, Lily
Hello, Arvin
  • String username 定义方法传递参数为一个String 类型的字符串,定义参数时必须声明参数数据类型。参数可以传递Java 中任意数据类型
  • greet("Tom");调用greet方法并传递一个"Tom"字符串,方法调用时传递的参数类型必须和声明方法参数的数据类型保持一致。
  • 方法可以重复被调用

传递多个参数:

public class Calculator {
    public static void add (int a, int b) {
        int sum = a + b;
        System.out.println("a + b = " + sum);
    }
    public static void main(String[] args) {
        add(1000,24);
    }
}

输出结果:

a + b = 1024
  • 方法可以传递多个参数

3. 返回值

方法并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值。这些返回的值称为返回值

在方法中使用return语句将值返回到调用方法的代码行。返回值可以将程序的大部分繁重工作转移到方法中去完成,从而简化主程序。

public class Calculator {
    public static int add (int a, int b) {
        int sum = a + b;
        return sum;
    }
    public static int multiply(int a, int b) {
        return a * b;
    }
    public static void main(String[] args) {
        int sum = add(1000,24);
        System.out.println("a + b = " + sum);
        int product = multiply(20,45);
        System.out.println("a * b = " + product);
    }
}

输出结果:

a + b = 1024
a * b = 900
  • int add(int a, int b) 方法名之前必须声明方法的返回值类型,比如 add 方法返回值为int类型,没有返回值时声明为 void
  • return语句必须在方法的结尾,之后不能有其他语句
  • return 可以返回任何类型的值(数值、数组、对象、集合、文本)。必须和方法声明的返回值类型保持一致
  • return后面可以跟字面量(常量)、变量或者表达式
  • return也可以单独使用,不跟任何表达式,表示立即结束当前方法的执行

了解前面规则之后,来个综合练习实例:制作一个任务列表

public class Person {

    /**
     * 读取输入的任务
     * @return 返回数组
     */
    public static String[] todo() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入今天要完成的5件事儿: ");
        String[] todoArray = new String[5];
        int i = 0;
        while (true) {
            todoArray[i] = scanner.nextLine();
            i++;
            if (i == 5) {
                break;
            }
        }
        return todoArray;
    }

    /**
     * 打印数组
     * @param array
     */
    public static void printArray(String[] array) {
        for (int i = 0; i < array.length; i++) {
            System.out.println((i + 1) + " : " + array[i]);
        }
    }


    public static void main(String[] args) {
        //调用todo方法,获取todo数组
        String[] todoArray = todo();
        System.out.println("嘿,你今天要完成以下任务:");
        //打印今天的任务
        printArray(todoArray);
    }
}

输出结果:

请输入今天要完成的 5 件事儿: 
读书
写作
做家务
购物
运动
嘿,你今天要完成以下任务:
1 : 读书
2 : 写作
3 : 做家务
4 : 购物
5 : 运动

4. 对象的方法

上面定义的一些方法都属于静态方法,也就是类的方法,属于一个类。描述一个类的统一方法,不属于某个实例对象。

对象的方法,又叫成员方法,它属于一个对象实例,描述的是一个对象的行为和功能。

public class Calculator {
    public int add (int a, int b) {
        return a + b;
    }
   
    public static void main(String[] args) {
        //创建一个计算器的对象
        Calculator calculator = new Calculator();
        //调用这个计算机对象的方法
        int sum = calculator.add(1000,24);
        System.out.println("a + b = " + sum);
    }
}
  • add 方法是一个对象的方法,描述的是一个计算机的功能,不可以用static修饰,否则会变成类方法。
  • 对象的方法,属于一个对象,必须先去创建该对象才可以使用,对象的方法

关于类和对象更多的方法,在后面内容会介绍

方法的内容,先介绍到这儿,简单总结:方法也称之为函数,直观地理解,返回值就是函数的输出,参数就是函数的输入,方法中的语句就是函数的计算公式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容