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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容