教妹学Java(二十四):一文了解 Java 中的方法-阿里云开发者社区

开发者社区> 沉默王二> 正文

教妹学Java(二十四):一文了解 Java 中的方法

简介: 教妹学Java(二十四):一文了解 Java 中的方法
+关注继续查看

三妹上的洛阳理工,校区离我家很近, 所以每逢周末她都会来我家,让我辅导她学习 Java。作为一名拥有十余年编程经验的程序员,以及父母给我们的这份血缘关系,我觉得义不容辞。


“二哥,这次我们要学习的内容是‘方法’,对吧?”看来三妹已经提前预习了我上次留给她的作业。


“是的,三妹。通常,一个方法可以用执行一些任务,同样的,Java 中的方法是用来执行特定任务的指令集合。”


01、Java 中的方法是什么?


方法用来实现代码的可重用性,我们编写一次方法,并多次使用它。通过增加或者删除方法中的一部分代码,就可以提高整体代码的可读性。


只有方法被调用时,它才会执行。Java 中最有名的方法当属 main() 方法,点击下面的链接可以阅读更多关于 main() 方法的知识点。


https://qingmiaogu.blog.csdn.net/article/details/104000411

02、如何声明方法?


方法的声明反映了方法的一些信息,比如说可见性、返回类型、方法名和参数。如下图所示。


20200915102957641.png


访问权限:它指定了方法的可见性。Java 提供了四种访问权限修饰符:


public:该方法可以被所有类访问。

private:该方法只能在定义它的类中访问。

protected:该方法可以被同一个包中的类,或者不同包中的子类访问。

default:该方法如果没有使用任何访问权限修饰符,Java 默认它使用 default 修饰符,该方法只能被同一个包中类可见。

返回类型:方法返回的数据类型,可以是基本数据类型、对象和集合,如果不需要返回数据,则使用 void 关键字。


方法名:方法名最好反应出方法的功能,比如,我们要创建一个将两个数字相减的方法,那么方法名最好是 subtract。


方法名最好是一个动词,并且以小写字母开头。如果方法名包含两个以上单词,那么第一个单词最好是动词,然后是形容词或者名词,并且要以驼峰式的命名方式命名。比如:


一个单词的方法名:sum()

多个单词的方法名:stringComparision()

一个方法可能与同一个类中的另外一个方法同名,这被称为方法重载。


参数:参数被放在一个圆括号内,如果有多个参数,可以使用逗号隔开。参数包含两个部分,参数类型和参数名。如果方法没有参数,圆括号是空的。


方法签名:每一个方法都有一个签名,包括方法名和参数。


方法体:方法体放在一对花括号内,把一些代码放在一起,用来执行特定的任务。


02、方法有哪几种?


方法可以分为两种,一种叫预先定义方法,一种叫用户自定义方法。


1)预先定义方法


Java 提供了大量预先定义好的方法供我们调用,也称为标准类库方法,或者内置方法。比如说 String 类的 length()、equals()、compare() 方法,以及我们在初学 Java 阶段最常用的 println() 方法,用来在控制台打印信息。


/**
 * @author 微信搜「沉默王二」,回复关键字 PDF
 */
public class PredefinedMethodDemo {
    public static void main(String[] args) {
        System.out.println("沉默王二,一枚有趣的程序员");
    }
}



在上面的代码中,我们使用了两个预先定义的方法,main() 方法是程序运行的入口,println() 方法是 PrintStream 类的一个方法。这些方法已经提前定义好了,所以我们可以直接使用它们。


我们可以通过集成开发工具查看预先定义方法的方法签名,当我们把鼠标停留在 println() 方法上面时,就会显示下图中的内容:


image.png


println() 方法的访问权限修饰符是 public,返回类型为 void,方法名为 println,参数为 String x,以及 Javadoc(方法是干嘛的)。


预先定义方法让编程变得简单了起来,我们只需要在实现某些功能的时候直接调用这些方法即可,不需要重新编写。


2)用户自定义方法


当预先定义方法无法满足我们的要求时,就需要自定义一些方法,比如说,我们来定义这样一个方法,用来检查数字是偶数还是奇数。


public static void findEvenOdd(int num) {
    if (num % 2 == 0) {
        System.out.println(num + " 是偶数");
    } else {
        System.out.println(num + " 是奇数");
    }
}



方法名叫做 findEvenOdd,访问权限修饰符是 public,并且是静态的(static),返回类型是 void,参数有一个整形(int)的 num。方法体中有一个 if else 语句,如果 num 可以被 2 整除,那么就打印这个数字是偶数,否则就打印这个数字是奇数。


方法被定义好后,如何被调用呢?


/**
 * @author 微信搜「沉默王二」,回复关键字 PDF
 */
public class EvenOddDemo {
    public static void main(String[] args) {
        findEvenOdd(10);
        findEvenOdd(11);
    }
    public static void findEvenOdd(int num) {
        if (num % 2 == 0) {
            System.out.println(num + " 是偶数");
        } else {
            System.out.println(num + " 是奇数");
        }
    }
}


main() 方法是程序的入口,并且是静态的,那么就可以直接调用同样是静态方法的 findEvenOdd()。


当一个方法被 static 关键字修饰时,它就是一个静态方法。换句话说,静态方法是属于类的,不属于类实例的(不需要通过 new 关键字创建对象来调用,直接通过类名就可以调用)。


03、什么是实例方法?


没有使用 static 关键字修饰,但在类中声明的方法被称为实例方法,在调用实例方法之前,必须创建类的对象。


/**
 * @author 微信搜「沉默王二」,回复关键字 PDF
 */
public class InstanceMethodExample {
    public static void main(String[] args) {
        InstanceMethodExample instanceMethodExample = new InstanceMethodExample();
        System.out.println(instanceMethodExample.add(1, 2));
    }
    public int add(int a, int b) {
        return a + b;
    }
}



add() 方法是一个实例方法,需要创建 InstanceMethodExample 对象来访问。


实例方法有两种特殊类型:


getter 方法

setter 方法

getter 方法用来获取私有变量(private 修饰的字段)的值,setter 方法用来设置私有变量的值。


/**
 * @author 沉默王二,一枚有趣的程序员
 */
public class Person {
    private String name;
    private int age;
    private int sex;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public int getSex() {
        return sex;
    }
    public void setSex(int sex) {
        this.sex = sex;
    }
}



getter 方法以 get 开头,setter 方法以 set 开头。


04、什么是抽象方法?


没有方法体的方法被称为抽象方法,它总是在抽象类中声明。这意味着如果类有抽象方法的话,这个类就必须是抽象的。可以使用 atstract 关键字创建抽象方法和抽象类。


/**

* @author 微信搜「沉默王二」,回复关键字 PDF

*/

abstract class AbstractDemo {

   abstract void display();

}



当一个类继承了抽象类后,就必须重写抽象方法:


/**
 * @author 微信搜「沉默王二」,回复关键字 PDF
 */
public class MyAbstractDemo extends AbstractDemo {
    @Override
    void display() {
        System.out.println("重写了抽象方法");
    }
    public static void main(String[] args) {
        MyAbstractDemo myAbstractDemo = new MyAbstractDemo();
        myAbstractDemo.display();
    }
}


输出结果如下所示:


重写了抽象方法


05、ending


“二哥,结束了吗?我还想学呢?”三妹虽然精神焕发,没有丝毫的疲惫,但我已经犯困了。


“三妹啊,哥要休息会,咱们下次再学好不好?”我站起来,转了转僵硬的脖子。。。。。。与此同时,耳朵的右后方传来了几声“叭叭叭”的声音。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9489 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
9050 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13172 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
7383 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
21901 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
6888 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
4009 0
+关注
沉默王二
微信搜索「沉默王二」,回复关键字「00」获取硬核计算机基础资料。
1084
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载