前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >揭秘Java方法的返回值,从void到诸多数据类型,有两下子!

揭秘Java方法的返回值,从void到诸多数据类型,有两下子!

原创
作者头像
bug菌
发布2024-06-25 00:13:02
2910
发布2024-06-25 00:13:02
举报
文章被收录于专栏:滚雪球学Java滚雪球学Java

  咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE相关知识点了,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~


🏆本文收录于 **[「滚雪球学Java」 ](https://blog.csdn.net/weixin_43970743/category_9600553.html)专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅**!持续更新中,up!up!up!!

代码语言:java
复制
环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8

前言

  在Java中,方法是指一段具有特定功能的可重复使用的代码块。在定义方法时,我们需要定义方法名、参数列表、返回值类型及方法体。其中,返回值类型表示方法返回值的类型,可以是Java基本数据类型,也可以是引用类型,甚至可以是void。本篇文章将从Java方法返回值的基础类型讲起,逐渐深入探讨Java方法返回值的详细内容。

正文

1. void类型

  void类型是Java中的一种基础数据类型,表示“无返回值”。在定义方法时,如果希望该方法不返回任何值,则可将返回值类型设为void。

下面是一个简单的示例:

代码语言:java
复制
public class Demo {
    public static void main(String[] args) {
        printHello();
    }

    public static void printHello() {
        System.out.println("Hello");
    }
}

  在这个示例中,我们定义了一个名为printHello的方法,该方法没有任何参数,返回值类型为void。在main方法中调用printHello方法,程序会输出“Hello”字符串。

  接着我将对上述代码进行详细的一个逐句解读,希望能够帮助到同学们,能以更快的速度对其知识点掌握学习,这也是我写此文的初衷,授人以鱼不如授人以渔,只有将其原理摸透,日后应对场景使用,才能得心应手,所以如果有基础的同学,可以略过如下代码分析步骤,然而没基础的同学,还是需要加强对代码的理解,方便你深入理解并掌握其常规使用。

  这段Java代码定义了一个名为Demo的公共类,其中包含了一个main方法和一个printHello方法。下面是对这段代码的详细解析:

  1. 类定义 (public class Demo):定义了一个名为Demo的公共类。在Java中,每个类都是一个蓝图,用于创建具有特定属性和行为的对象。
  2. 主方法 (public static void main(String[] args)):这是Java程序的入口点。main方法是一个特殊的方法,当程序运行时,Java虚拟机(JVM)首先查找并执行这个方法。
    • public:访问修饰符,表示main方法可以被任何外部代码访问。
    • static:关键字,表示这个方法属于类而不是类的实例,可以直接通过类名调用。
    • void:返回类型,表示这个方法不返回任何值。
    • main:方法名,是Java程序的入口点。
    • String[] args:参数列表,接受一个字符串数组,通常用于命令行参数。
  3. 调用**printHello**方法 (printHello()):在main方法的体内,调用了printHello方法。这个方法也是static的,因此可以直接通过类名调用,而不需要创建类的实例。
  4. printHello**方法定义** (public static void printHello()):定义了一个名为printHello的公共静态方法,它不接受任何参数,也不返回任何值(void类型)。
  5. 方法体 (System.out.println("Hello");):printHello方法的体内包含了一行代码,使用System.out.println打印字符串"Hello"到控制台。

2. 基本数据类型

  除了void类型之外,Java还支持一系列基本数据类型作为方法返回值类型。这些基本数据类型分别是int、short、long、float、double、byte、boolean、char。下面是这些基本数据类型的示例:

代码语言:java
复制
public class Demo {
    public static void main(String[] args) {
        int result = add(1, 2);
        System.out.println(result); // 3

        double area = circleArea(3);
        System.out.println(area); // 28.274333882308138
    }

    public static int add(int num1, int num2) {
        return num1 + num2;
    }

    public static double circleArea(double radius) {
        return Math.PI * radius * radius;
    }
}

  在这个示例中,我们定义了两个方法:add和circleArea。add方法接收两个int类型的参数,返回它们的和;circleArea方法接收一个double类型的参数,返回半径为该参数的圆的面积。在main方法中调用这两个方法,分别将返回值赋值给result和area变量,并输出它们的值。

  接着我将对上述代码进行详细的一个逐句解读,希望能够帮助到同学们,能以更快的速度对其知识点掌握学习,这也是我写此文的初衷,授人以鱼不如授人以渔,只有将其原理摸透,日后应对场景使用,才能得心应手,所以如果有基础的同学,可以略过如下代码分析步骤,然而没基础的同学,还是需要加强对代码的理解,方便你深入理解并掌握其常规使用。

  这段Java代码定义了一个名为Demo的公共类,其中包含了main方法和两个静态方法:addcircleArea。下面是对这段代码的详细解析:

  1. 类定义 (public class Demo):定义了一个名为Demo的公共类。
  2. 主方法 (public static void main(String[] args)):这是Java程序的入口点,main方法接受一个字符串数组args作为命令行参数。
  3. 调用**add**方法
    • int result = add(1, 2);:在main方法中,调用了add方法,传入两个整数参数12,并将返回值赋给int类型的变量result
  4. 打印结果
    • System.out.println(result); // 3:打印变量result的值,即add方法的返回值,这里注释中的// 3是对打印结果的说明。
  5. 调用**circleArea**方法
    • double area = circleArea(3);:调用circleArea方法,传入一个double类型的参数3,并将返回值赋给double类型的变量area
  6. 打印圆面积
    • System.out.println(area); // 28.274333882308138:打印变量area的值,即circleArea方法的返回值,这里注释中的// 28.274333882308138是对打印结果的近似值说明。
  7. add**方法定义** (public static int add(int num1, int num2)):定义了一个名为add的静态方法,接受两个整数参数并返回它们的和。
  8. circleArea**方法定义** (public static double circleArea(double radius)):定义了一个名为circleArea的静态方法,接受一个表示圆半径的double类型参数,并返回圆的面积,使用公式πr²计算。

代码作用

  这段代码演示了如何在Java中定义和使用类、静态方法以及基本的算术运算和数学公式计算。特别是,它展示了如何调用方法并打印结果。

代码执行流程

  1. Java虚拟机(JVM)启动,并查找main方法。
  2. main方法被执行,首先调用add方法并打印结果3
  3. 然后调用circleArea方法并打印圆的面积,结果大约为28.274333882308138

代码改进

  • 代码已经很好地展示了基本的Java编程概念,但可以进一步增加注释来提高代码的可读性。
  • 如果addcircleArea方法需要更复杂的逻辑或参数,可以考虑将它们设计为非静态方法或添加更多参数。

小结

  这段代码是一个很好的Java编程示例,展示了如何在类中定义静态方法,如何在main方法中调用这些方法,并如何使用System.out.println打印结果。这是学习Java编程中方法调用和数学计算的基础。

3. 引用类型

  除了基本数据类型之外,Java还支持使用引用类型作为方法返回值类型。在Java中,引用类型包括类、接口、数组等。下面是一个使用类作为返回值类型的示例:

代码语言:java
复制
public class Demo {
    public static void main(String[] args) {
        Person p = createPerson("Tom", 20);
        System.out.println(p.getName()); // Tom
        System.out.println(p.getAge()); // 20
    }

    public static Person createPerson(String name, int age) {
        Person p = new Person(name, age);
        return p;
    }
}

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    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;
    }
}

  在这个示例中,我们定义了一个名为Person的类,并在createPerson方法中返回一个Person对象。在main方法中调用createPerson方法,并使用返回的Person对象输出其name和age属性的值。

  接着我将对上述代码进行详细的一个逐句解读,希望能够帮助到同学们,能以更快的速度对其知识点掌握学习,这也是我写此文的初衷,授人以鱼不如授人以渔,只有将其原理摸透,日后应对场景使用,才能得心应手,所以如果有基础的同学,可以略过如下代码分析步骤,然而没基础的同学,还是需要加强对代码的理解,方便你深入理解并掌握其常规使用。

  这段Java代码定义了一个名为Demo的公共类和一个内部类Person。下面是对这段代码的详细解析:

  1. 类定义 (public class Demo):定义了一个名为Demo的公共类,作为程序的主类。
  2. 主方法 (public static void main(String[] args)):这是Java程序的入口点,main方法接受一个字符串数组args作为命令行参数。
  3. 创建Person对象
    • Person p = createPerson("Tom", 20);:在main方法中,调用了createPerson方法,传入两个参数:一个字符串"Tom"和一个整数20,并将返回的Person对象赋给变量p
  4. 打印Person对象信息
    • System.out.println(p.getName()); // Tom:打印Person对象的name属性,调用getName方法,注释中的// Tom是对打印结果的说明。
    • System.out.println(p.getAge()); // 20:打印Person对象的age属性,调用getAge方法,注释中的// 20是对打印结果的说明。
  5. createPerson**方法定义** (public static Person createPerson(String name, int age)):定义了一个名为createPerson的静态方法,接受一个字符串name和一个整数age作为参数,创建一个新的Person对象,并返回这个对象。
  6. Person**类定义** (class Person):定义了一个内部类Person,它不是静态的,因此每个Person对象都拥有自己的状态。
  7. 私有属性 (private String name; private int age;):Person类有两个私有属性nameage,分别用于存储人的名字和年龄。
  8. 构造函数 (public Person(String name, int age)):Person类有一个构造函数,用于初始化创建对象时传入的nameage属性。
  9. Getter和Setter方法
    • public String getName()public void setName(String name)getName是一个获取器(getter)方法,返回name属性的值;setName是一个设置器(setter)方法,允许外部代码修改name属性的值。
    • public int getAge()public void setAge(int age)getAge是一个获取器方法,返回age属性的值;setAge是一个设置器方法,允许外部代码修改age属性的值。

代码作用

  这段代码演示了如何在Java中定义类、创建对象、使用构造函数初始化对象以及通过getter和setter方法访问和修改对象的属性。

代码执行流程

  1. Java虚拟机(JVM)启动,并查找main方法。
  2. main方法被执行,调用createPerson方法创建一个新的Person对象。
  3. createPerson方法使用传入的参数创建Person对象并返回。
  4. main方法接收返回的Person对象,并将其赋值给变量p
  5. 使用p对象调用getNamegetAge方法,并打印结果。

代码改进

  • 代码已经很好地展示了基本的Java面向对象编程概念,但可以进一步增加注释来提高代码的可读性。
  • 可以考虑为Person类添加更多的属性和方法,以支持更复杂的功能。

小结

  这段代码是一个很好的Java面向对象编程示例,展示了如何定义类、创建对象、使用构造函数、以及如何通过方法访问和修改对象的属性。这是学习Java编程中面向对象概念的基础。

4. 返回值的多态

  Java中的继承与多态概念可以拓展到方法的返回值类型。具体来说,如果一个方法的返回值类型是父类或接口类型,那么该方法可以返回其子类或实现类的对象。

下面是一个使用多态作为返回值类型的示例:

代码语言:java
复制
public class Demo {
    public static void main(String[] args) {
        Animal a1 = getAnimal("dog");
        Animal a2 = getAnimal("cat");

        System.out.println(a1.getName()); // dog
        System.out.println(a2.getName()); // cat
    }

    public static Animal getAnimal(String type) {
        if (type.equals("dog")) {
            return new Dog("dog");
        } else {
            return new Cat("cat");
        }
    }
}

interface Animal {
    String getName();
}

class Dog implements Animal {
    private String name;

    public Dog(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

class Cat implements Animal {
    private String name;

    public Cat(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

  在这个示例中,我们定义了一个Animal接口以及两个实现该接口的子类:Dog和Cat。在getAnimal方法中根据参数type的值返回对应的Animal子类对象,在main方法中调用getAnimal方法,分别将返回值赋值给a1和a2变量,并输出它们的name属性的值。

  接着我将对上述代码进行详细的一个逐句解读,希望能够帮助到同学们,能以更快的速度对其知识点掌握学习,这也是我写此文的初衷,授人以鱼不如授人以渔,只有将其原理摸透,日后应对场景使用,才能得心应手,所以如果有基础的同学,可以略过如下代码分析步骤,然而没基础的同学,还是需要加强对代码的理解,方便你深入理解并掌握其常规使用。

  这段Java代码演示了多态性的使用,以及接口和实现类的基本概念。下面是对这段代码的详细解析:

  1. 类定义 (public class Demo):定义了一个名为Demo的公共类,作为程序的主类。
  2. 主方法 (public static void main(String[] args)):这是Java程序的入口点,main方法接受一个字符串数组args作为命令行参数。
  3. 获取Animal对象
    • Animal a1 = getAnimal("dog");:在main方法中,调用了getAnimal方法,传入字符串"dog",并将返回的Animal对象赋给变量a1
    • Animal a2 = getAnimal("cat");:同样调用getAnimal方法,传入字符串"cat",并将返回的Animal对象赋给变量a2
  4. 打印Animal对象名称
    • System.out.println(a1.getName()); // dog:打印a1对象的名称,调用getName方法,注释中的// dog是对打印结果的说明。
    • System.out.println(a2.getName()); // cat:打印a2对象的名称,调用getName方法,注释中的// cat是对打印结果的说明。
  5. getAnimal**方法定义** (public static Animal getAnimal(String type)):定义了一个名为getAnimal的静态方法,接受一个字符串type作为参数。根据参数的值,返回一个新的DogCat对象。
  6. 接口定义 (interface Animal):定义了一个名为Animal的接口,包含一个方法getName,该方法用于返回动物的名称。
  7. Dog**类定义** (class Dog implements Animal):定义了一个名为Dog的类,实现了Animal接口,提供了getName方法的具体实现。
  8. Cat**类定义** (class Cat implements Animal):定义了一个名为Cat的类,同样实现了Animal接口,提供了getName方法的具体实现。
  9. 构造函数DogCat类都有构造函数,用于初始化创建对象时传入的name属性。
  10. 实现**getName**方法DogCat类都实现了getName方法,返回各自对象的name属性。

代码作用

  这段代码演示了如何在Java中使用接口和实现类来实现多态性。通过getAnimal方法,可以根据传入的类型参数返回不同类的对象,而这些对象都实现了同一个接口Animal

代码执行流程

  1. Java虚拟机(JVM)启动,并查找main方法。
  2. main方法被执行,调用getAnimal方法两次,分别传入"dog""cat"
  3. getAnimal方法根据传入的参数,实例化DogCat对象,并返回。
  4. main方法接收返回的Animal对象,并将其赋值给变量a1a2
  5. 使用a1a2对象调用getName方法,并打印结果。

代码改进

  • 代码已经很好地展示了多态性和接口的使用,但可以进一步增加注释来提高代码的可读性。
  • getAnimal方法目前只处理了两种类型,如果有更多的动物类型,可以考虑使用工厂模式来改进这个方法。

小结

  这段代码是一个很好的Java多态性和接口使用的示例,展示了如何定义接口、实现类、使用多态性以及如何通过接口引用调用实现类的方法。这是学习Java编程中多态性和接口概念的基础。

总结

  本篇文章详细介绍了Java方法的返回值类型,包括基本数据类型、引用类型以及多态的应用。在实际开发中,我们需要根据具体需求选择合适的返回值类型,并保证方法的返回值类型与方法实现的功能一致。

☀️建议/推荐你

  无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学Java」,bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门Java编程,就像滚雪球一样,越滚越大,指数级提升。

  码字不易,如果这篇文章对你有所帮助,帮忙给bugj菌来个一键三连(关注、点赞、收藏) ,您的支持就是我坚持写作分享知识点传播技术的最大动力。   同时也推荐大家关注我的硬核公众号:「猿圈奇妙屋」 ;以第一手学习bug菌的首发干货,不仅能学习更多技术硬货,还可白嫖最新BAT大厂面试真题、4000G Pdf技术书籍、万份简历/PPT模板、技术文章Markdown文档等海量资料,你想要的我都有!

📣关于我

  我是bug菌,CSDN | 掘金 | infoQ | 51CTO 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金等平台签约作者,华为云 | 阿里云| 腾讯云等社区优质创作者,全网粉丝合计30w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。


--End

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 正文
    • 1. void类型
      • 2. 基本数据类型
        • 代码作用
        • 代码执行流程
        • 代码改进
        • 小结
      • 3. 引用类型
        • 代码作用
        • 代码执行流程
        • 代码改进
        • 小结
      • 4. 返回值的多态
        • 代码作用
        • 代码执行流程
        • 代码改进
        • 小结
      • 总结
      • ☀️建议/推荐你
      • 📣关于我
      相关产品与服务
      腾讯云代码分析
      腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档