c02章.s04节.对象的行为 -- 方法

对象的行为 -- 方法

[toc]

本章第二节我们讲了类的定义和实例化。 在类的定义中我们提到了方法的概念。方法是类或者对象的行为。

一 System类out对象的print方法

在前面几个章节中我们经常使用到 System.out.println(),那么它是什么呢?

  • println() 是一个方法。做打印内容的行为。
  • System 是系统类。里面定义了很多系统相关的属性,行为。
  • out 是标准输出对象。专门用来打印输入到控制台的对象。

这句话的用法是调用系统类 System 中的标准输出对象 out 中的方法 println()打印。

二 方法概念

Java方法是语句的集合,它们在一起执行一个功能。

  • 方法是解决一类问题的步骤的有序组合
  • 方法包含于类或对象中
  • 方法在程序中被创建,在其他地方被引用

三 方法的优点

  • 使程序变得更简短而清晰。
  • 有利于程序维护。
  • 可以提高程序开发的效率。
  • 提高了代码的重用性。

四 方法的定义

一般情况下,定义一个实例方法包含以下语法:

public class 类名{
    
    //有返回值的方法
    修饰符 返回值类型 方法名(参数类型 参数名){
        ...
        方法体 -- 代码    
        ... 
        return 返回值; 
    }
    
    //或者没有返回值的方法
    修饰符 void 方法名(参数类型 参数名){
        ...  
        方法体 -- 代码    
        ...
    }
}

方法包含一个方法头和一个方法体。下面是一个方法的所有部分:

  • 修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
  • 返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void
  • 方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
  • 参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。多个参数可以用逗号隔开。
  • 方法体:方法体包含具体的语句,定义该方法的功能。

修饰符后面会讲,常用的修饰符有public,static,final等。

public class Function {

    public void doSomething(){
        System.out.println("这是无返回值的方法,也没有参数,方法里可以写各种代码。");
    }

    public void doSomethingA(String strValue){
        System.out.println("这是无返回值的方法,有参数,方法里可以写各种代码。Value: "+strValue);
    }

    public int add(int a, int b){ //多个参数用逗号隔开
        System.out.println("这是有返回值的方法,有参数,方法里可以写各种代码。返回两个数的和。");
        return a + b;
    }

    public static void main(String[] args) {
        Function function = new Function();
        function.doSomething();
        function.doSomethingA("传入一个String。");
        int result = function.add(1, 3); //当方法返回一个值的时候,方法调用的返回值通常赋给一个新的变量。
        System.out.println("打印出两个值相加的结果:"+result);
        System.out.println("也可以简写成这样的方式,看需要决定。"+function.add(1, 3));

    }
}

五 静态方法

当方法被static修饰,方法就是静态方法。静态方法,不需要类实例化,就可以直接调用。也叫做类方法。

实例方法产生的行为一般都和对象的属性有关。而有些方法,为了提高代码重用,同时又不依赖实例对象的属性,就可以写成静态方法。看代码需要决定。

public class FunctionStatic {

    public static int addStatic(int a, int b){ //多个参数用逗号隔开
        System.out.println("这是有返回值的静态方法,有参数,外部可以直接调用该方法,无需实例化。");
        return a + b;
    }
    public static void doSomethingStatic(){
        System.out.println("这是无返回值的静态方法,也没有参数,方法里可以写各种代码。");
    }

    public static void main(String[] args) {
    
        System.out.println("-----调用静态方法-----------------------------------------------------");
        System.out.println("直接调用静态方法,打印出两个值相加的结果:"+ FunctionStatic.addStatic(2,4));
        FunctionStatic.doSomethingStatic();//直接调用静态方法,无需实例化。
    }
}

六 方法的实战

打开wx读书首页,点击排行榜里的任意一本书,比如点开《红楼梦》,打开链接为 红楼梦简介

如下图标记1,2,3:

标记1: 书内容介绍

标记2: 评分,评分人数

标记3: 阅读次数的人数

bookDetail.png

6.1 引入新的变量和方法

引入如下变量,简介,总阅读数,总评论数,平均分。同时增加方法增加阅读和评论总数。

public class Book {

    String name; //书名,类型为字符串String,默认值为null
    String author; //作者,类型为字符串String,默认值为null
    int rank; //排名,类型为整型int,默认值为0
    String brief;//书名简介 , 类型为字符串String
    int totalRead;//本书总阅读人数, 类型为整型 int, 默认值为0
    int totalComment; //本书总评价数, 类型为整型 int
    double score; //本书平均评分 ,类型为小数, double类型。

    public int addRead(){//当有新用户阅读时,就给阅读数加一。并返回最新的数量
        totalRead = totalRead + 1;
        return totalRead;
    }

    public int addComment(){//当有新评论时,评论数加一。并返回最新的数量
        totalComment = totalComment + 1;
        return totalComment;
    }

    public static void main(String[] args) {
        Book hongLouMeng = new Book();
        System.out.println("----------------从数据库读取出这些数据,并初始化赋值.------------");
        hongLouMeng.name = "红楼梦";
        hongLouMeng.author = "曹雪芹";
        hongLouMeng.rank = 5;
        hongLouMeng.brief = "《红楼梦》又名《石头记》,是中国古典小说的巅峰之作,位居“中国古典四大名著”之首。...";
        hongLouMeng.totalRead = 652000;
        hongLouMeng.totalComment = 31000;
        hongLouMeng.score = 8.9;
        System.out.println("----------------返回到前端浏览器,这里我们暂时忽略其它元素,比如评论内容,图片等.------------");
        System.out.println("------前端浏览器,有新用户阅读本书,就会发送请求,让阅读数加一.因为这个行为动作总是加一,所以方法就不传入参数了.------------");
        int read = hongLouMeng.addRead();
        System.out.println("-----返回最新的阅读数给浏览器,同时将最新的数据保存到数据库中,readTotal:"+read);
        //同样的,当有用户评论时,调用addComment()方法
        System.out.println("-----返回最新的阅读数给浏览器,同时将最新的数据保存到数据库中,commentTotal:"+hongLouMeng.addComment());
        //这里我们暂时先不处理评分计算,以及用户评论内容保存,以后章节处理.
    }
}

由此可以看出,调用方法,可以重用方法里面的代码,不再需要重复写。

文章和项目开源地址

一起学习,最简单易懂的Java零基础入门,答疑解惑,关注点赞github开源:https://github.com/BradYan/easy-java

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

推荐阅读更多精彩内容