Java基础:方法

news2024/11/28 18:55:47

1. 回顾方法的定义和调用

前面的课程中,使用过嵌套循环输出矩形,控制台打印出矩形就可以了,因此将方法定义为 void ,没有返回值。

在主方法 main 中直接被调用。

public class Method { 
    public static void main(String[] args) { 
        print(); 
    }
    private static void print() { 
        for (int i = 0; i < 5; i++) { 
            for (int j = 0; j < 8; j++) { 
                System.out.print("*"); 
            }
            System.out.println(); 
        } 
    } 
}

在这里插入图片描述

print方法被main方法调用后直接输出结果,而main方法并不需要print方法的执行结果,所以被定义为 void

2. 定义方法的格式详解

修饰符 返回值类型 方法名(参数列表){ 
    //代码省略... 
    return 结果; 
}
  • 修饰符: public static固定写法

  • 返回值类型: 表示方法运行的结果的数据类型,方法执行后将结果返回到调用者

  • 参数列表:方法在运算过程中的未知数据,调用者调用方法时传递

  • return:将方法执行后的结果带给调用者,方法执行到return,整体方法运行结束

小贴士:return结果; 这里的"结果"在开发中,我们正确的叫法成为方法的返回值

3. 定义方法的两个明确

需求:定义方法实现两个整数的求和计算。

  • 明确返回值类型:方法计算的是整数的求和,结果也必然是个整数,返回值类型定义为int类型。

  • 明确参数列表:计算哪两个整数的和,并不清楚,但可以确定是整数,参数列表可以定义两个int类型的变量,由调用者调用方法时传递

public class Method_Demo2 { 
    public static void main(String[] args) { 
        // 调用方法getSum,传递两个整数,这里传递的实际数据又称为实际参数 
        // 并接收方法计算后的结果,返回值 
        int sum = getSum(5, 6); 
        System.out.println(sum); 
    }
    /*
    * 定义计算两个整数和的方法 
    * 返回值类型,计算结果是int 
    * 参数:不确定数据求和,定义int参数.参数又称为形式参数 
    */
    public static int getSum(int a, int b) { 
        return a + b; 
    } 
} 

在这里插入图片描述

程序执行,主方法main调用getSum方法,传递了实际数据 5和6 ,两个变量ab接收到的就是实际参数,并将计算后的结果返回,主方法main中的变量sum接收的就是方法的返回值。

4. 调用方法的流程图解

在这里插入图片描述

5. 定义方法练习

练习一

比较两个整数是否相同

  • 分析:定义方法实现功能,需要有两个明确,即 返回值 和 参数列表 。

  • 明确返回值:比较整数,比较的结果只有两种可能,相同或不同,因此结果是布尔类型,比较的结果相

  • 同为true

  • 明确参数列表:比较的两个整数不确定,所以默认定义两个int类型的参数。

public class Method_Demo3 {
    public static void main(String[] args) {
        //调用方法compare,传递两个整数
        //并接收方法计算后的结果,布尔值
        boolean bool = compare(3, 8);
        System.out.println(bool);
    }
    /*
     * 定义比较两个整数是否相同的方法
     * 返回值类型,比较的结果布尔类型
     * 参数:不确定参与比较的两个整数
     */
    public static boolean compare(int a, int b) {
        if (a == b) {
            return true;
        } else {
            return false;
        }
    }
}

在这里插入图片描述

练习二

计算1+2+3…+100的和

  • 分析:定义方法实现功能,需要有两个明确,即 返回值 和 参数 。

  • 明确返回值:1~100的求和,计算后必然还是整数,返回值类型是int

  • 明确参数:需求中已知到计算的数据,没有未知的数据,不定义参数

public class Method_Demo4 {
    public static void main(String[] args) {
        //调用方法getSum
        //并接收方法计算后的结果,整数
        int sum = getSum();
        System.out.println(sum);
    }
    /*
     *  定义计算1~100的求和方法
     * 返回值类型,计算结果整数int
     * 参数:没有不确定数据
     */
    public static int getSum() {
        //定义变量保存求和
        int sum = 0;
        //从1开始循环,到100结束
        for (int i = 1; i <= 100; i++) {
            sum = sum + i;
        }
        return sum;
    }
}

在这里插入图片描述

练习三

实现不定次数打印

  • 分析:定义方法实现功能,需要有两个明确,即 返回值 和 参数 。

  • 明确返回值:方法中打印出HelloWorld即可,没有计算结果,返回值类型void

  • 明确参数:打印几次不清楚,参数定义一个整型参数

public class Method_Demo5 {
    public static void main(String[] args) {
        //调用方法printHelloWorld,传递整数
        printHelloWorld(9);
    }
    /*
     *定义打印HelloWorld方法
     *返回值类型,计算没有结果 void
     *参数:不确定打印几次
     */
    public static void printHelloWorld(int n) {
        for (int i = 0; i < n; i++) {
            System.out.println("HelloWorld");
        }
    }
}

在这里插入图片描述

6. 定义方法的注意事项

  • 定义位置,类中方法外面。

  • 返回值类型,必须要和return语句返回的类型相同,否则编译失败 。

// 返回值类型要求是int 
public static int getSum() { 
    return 5;// 正确,int类型 
    return 1.2;// 错误,类型不匹配 
    return true;// 错误,类型不匹配 
}

不能在return后面写代码,return意味着方法结束,所有后面的代码永远不会执行,属于无效代码。

public static int getSum(int a,int b) { 
    return a + b; 
    System.out.println("Hello");// 错误,return已经结束,这里不会执行,无效代码 
}

7. 调用方法的三种形式

  • 直接调用:直接写方法名调用
public static void main(String[] args) { 
    print(); 
}
public static void print() { 
    System.out.println("方法被调用"); 
}

在这里插入图片描述

  • 赋值调用:调用方法,在方法前面定义变量,接收方法返回值
public static void main(String[] args) { 
    int sum = getSum(5,6); 
    System.out.println(sum); 
}
public static int getSum(int a,int b) { 
    return a + b; 
} 

在这里插入图片描述

  • 输出语句调用:

在输出语句中调用方法,System.out.println(方法名())

public static void main(String[] args) { 
    System.out.println(getSum(5,6)); 
}
public static int getSum(int a,int b) { 
    return a + b; 
}

在这里插入图片描述

不能用输出语句调用void类型的方法。因为方法执行后没有结果,也就打印不出任何内容。

public static void main(String[] args) { 
    System.out.println(printHello());// 错误,不能输出语句调用void类型方法 
}
public static void printHello() { 
    System.out.println("Hello"); 
}

8. 方法重载

方法重载:指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。

  • 参数列表:个数不同,数据类型不同,顺序不同。

  • 重载方法调用:JVM通过方法的参数列表,调用不同的方法。

9. 方法重载练习

练习一

比较两个数据是否相等。参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型,并在main方法中进行测试。

public class Method_Demo6 { 
    public static void main(String[] args) { 
        //定义不同数据类型的变量 
        byte a = 10; 
        byte b = 20; 
        short c = 10; 
        short d = 20; 
        int e = 10; 
        int f = 10; 
        long g = 10; 
        long h = 20; 
        // 调用 
        System.out.println(compare(a, b)); 
        System.out.println(compare(c, d)); 
        System.out.println(compare(e, f)); 
        System.out.println(compare(g, h)); 
    }
    // 两个byte类型的 
    public static boolean compare(byte a, byte b) { 
        System.out.println("byte"); 
        return a == b; 
    }
    // 两个short类型的 
    public static boolean compare(short a, short b) { 
        System.out.println("short"); 
        return a == b; 
    }
    // 两个int类型的 
    public static boolean compare(int a, int b) { 
        System.out.println("int"); 
        return a == b; 
    }
    // 两个long类型的 
    public static boolean compare(long a, long b) { 
        System.out.println("long"); 
        return a == b;
    } 
}

在这里插入图片描述

练习二

判断哪些方法是重载关系。

public static void open(){}  // 正确重载
public static void open(int a){}  // 正确重载
static void open(int a,int b){}  // 代码报错:和第8行冲突
public static void open(double a,int b){}  // 正确重载
public static void open(int a,double b){}  // 代码错误:和第6行冲突
public void open(int i,double d){}  //代码错误:和第5行冲突
public static void OPEN(){}  // 代码正确不会报错,但是不是有效重载
public static void open(int i,int j){}  //代码错误:与第3行冲突

在这里插入图片描述

练习三

模拟输出语句中的println方法效果,传递什么类型的数据就输出什么类型的数据,只允许定义一个方法名println

public class Method_Demo7 { 
    public static void println(byte a) { 
        System.out.println(a); 
    }
    public static void println(short a) { 
        System.out.println(a); 
    }
    public static void println(int a) { 
        System.out.println(a); 
    }
    public static void println(long a) { 
        System.out.println(a); 
    }
    public static void println(float a) { 
        System.out.println(a); 
    }
    public static void println(double a) { 
        System.out.println(a); 
    }
    public static void println(char a) { 
        System.out.println(a); 
    }
    public static void println(boolean a) { 
        System.out.println(a); 
    }
    public static void println(String a) { 
        System.out.println(a); 
    } 
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/49415.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Lambda 表达式

1. Lambda 表达式 1.1 通过接口传递代码 针对接口而非具体类型进行编程&#xff0c;可以降低程序的耦合性&#xff0c;提高灵活性&#xff0c;提高复用性。接口常被用于传递代码&#xff0c;比如&#xff0c;我们知道 File 有如下方法&#xff1a; public File[] listFiles(F…

Unity3D中实现Player的第一人称视角

效果,上面为Scene场景&#xff0c;下面为Game场景 0创建地形&#xff0c;当然可以先简单的创建一个空白的Terrain。这里我已经对地形进行了初步的编辑和渲染。 1.在Hierarchy视图中右键创建一个胶囊体&#xff08;Capsule&#xff09;作为Player&#xff0c;添加好后重置胶囊体…

039-java集合框架的作用及使用(Collection,Set,Map,SimpleDateFormat)

上一讲:038-JTable控件应用案例讲解_CSDN专家-赖老师(软件之家)的博客-CSDN博客 Java集合体系框架 ava集合类主要由两个根接口Collection和Map派生出来的。 Collection派生出了三个子接口: 集合框架中所有的接口,类都在java.util包中 集合就是动态数组,与数组…

Ubuntu18 vscode配置Ceres的调试

Ceres只支持CMake编译&#xff0c;不支持外部链接方式。因此vscode无法配置Ceres调试&#xff01; 具体过程如下&#xff1a; 首先写了个CMakeLists.txt&#xff0c;(官方demo)&#xff0c;测试编译&#xff1a; project(ceres_test) cmake_minimum_required(VERSION 3.0) f…

uni-app进阶使用(vuex、组件、api)

在上一篇文章介绍了uni-app的基本用法&#xff0c;本章介绍在uni-app中vuex、组件、api的用法。 一、如何使用vuex 1.1 初始化 在项目根目录下创建store文件夹&#xff0c;在其内新建一个文件index.js&#xff0c;在index.js对vuex进行初始化。 import Vuex from vuex impor…

TML+CSS+JS大作业:腾讯课堂首页 1页 侧拉菜单

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材&#xff0c;DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 家公司官网网站 | 企业官网 | 酒店官网 | 等网站的设计与制 | HTML期末大学生网页设计作业&#xff0c;Web大学生网页 HTML&#xff1a;结构 CSS&…

算法竞赛入门【码蹄集进阶塔335题】(MT2281-2285)

算法竞赛入门【码蹄集进阶塔335题】(MT2281-2285&#xff09; 文章目录算法竞赛入门【码蹄集进阶塔335题】(MT2281-2285&#xff09;前言为什么突然想学算法了&#xff1f;为什么选择码蹄集作为刷题软件&#xff1f;目录1. MT2281 另一种模2. MT2282 小码哥的认可3. MT2283 整数…

安卓版微信8.0.31内测版出炉:安装包变小,功能变多!

人是社会性生物&#xff0c;建立依恋、经营亲密关系是人的本能&#xff0c;只不过到了网络时代之后&#xff0c;用户进行交流的方式几乎都变成了微信等社交软件。 不仅可以让用户很便捷的和朋友进行沟通&#xff0c;并且在上班办公的时候&#xff0c;也是可以轻松传输文件等&a…

C++ · 手把手教你写一个扫雷小游戏

Hello&#xff0c;大家好&#xff0c;我是余同学。这两个月真是太忙了&#xff0c;无暇给大家更新文章… 暑假不是写了个扫雷小游戏吗(Link)&#xff1f;考虑到很多同学对代码没有透彻的理解&#xff0c;那么&#xff0c;这篇文章&#xff0c;我们来详细分析一下代码. 我们分…

【图像处理OpenCV(C++版)】——初学OpenCV

前言&#xff1a; &#x1f60a;&#x1f60a;&#x1f60a;欢迎来到本博客&#x1f60a;&#x1f60a;&#x1f60a; &#x1f31f;&#x1f31f;&#x1f31f; 本专栏主要结合OpenCV和C来实现一些基本的图像处理算法并详细解释各参数含义&#xff0c;适用于平时学习、工作快…

百数低代码开发平台助力生产管理:制造管理系统

随着全球经济化与信息化&#xff0c;制造企业的生产管理系统的建立对于制造业企业的信息化以及生产的智能化具有重要的意义&#xff0c;同时也是促进现代工业进步和发展的基础条件之一。我国制造业属于传统行业&#xff0c;凭借生产规模大且劳动力资源丰富在全世界拥有着一定地…

[附源码]计算机毕业设计springboot旅游度假村管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Android 反编译入门(基于 Mac)

1 反编译基础 1.1 什么是反编译 定义&#xff1a;反编译就是将可执行程序转换为某种形式的高级编程语言的过程。 1.2 APK 文件的构成 首先&#xff0c;我们通过一张图来看看 APK 的整体组成&#xff1a; 可以看到&#xff0c;APK 主要由六个部分组成&#xff1a; Dex 文件…

什么值得一个头条?从世界杯看“头条”正确打开方式

“足球皇帝”贝肯鲍尔曾说&#xff1a;“在绿茵场上滚动的不是足球&#xff0c;而是黄金。” 卡塔尔世界杯不仅是球迷的盛宴&#xff0c;也是品牌的盛宴。绿茵场广告屏上&#xff0c;众多品牌纷纷现身。还有部分中国企业通过签约球队和球星等形式露面世界杯&#xff0c;共同挖…

【附源码】计算机毕业设计JAVA紫陶文化传播与学习交流网站

【附源码】计算机毕业设计JAVA紫陶文化传播与学习交流网站 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a;…

熤星传媒文化:抖音怎么切换到旧版本?

抖音现在也在不断地更新版本&#xff0c;但是很多小伙伴可能想知道一些新版本的功能&#xff0c;就随着了、系统去升级了&#xff0c;但是用着用着发现自己更喜欢旧版本的&#xff0c;那么抖音店铺又怎么去做店铺带货呢&#xff1f;跟着熤星传媒小编来一起看看吧&#xff01; 帐…

OWASP top10 的介绍

​ OWASP top10 的介绍 2021年版TOP 10产生三个新类别&#xff0c;且进行了一些整合 ​​ A01&#xff1a;失效的访问控制 ​ 从第五位上升称为Web应用程序安全风险最严重的类别&#xff0c;常见的CWE包括&#xff1a;将敏感信息泄露给未经授权的参与者、通过发送的数据泄…

07 CSS04

目标&#xff1a; 1、结构伪类选择器 2、伪元素 3、标准流 4、浮动 5、清除浮动 6、&#xff08;拓展&#xff09;BFC介绍 一、结构伪类选择器 1、作用与优势 作用&#xff1a;根据元素在HTML中的结构关系查找元素 优势&#xff1a;减少对于HTML中类的依赖&#xff0c;有…

[附源码]计算机毕业设计springboot家庭整理服务管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【MySQL】 MySQL亿级数据、主从架构,Sharding分片

数据库Mysql 内容管理MySQL填充亿级数据Insert into select存储过程loop insertLoadfile 导入CVS文件MySQL基准测试&#xff1a; sysbench、mysqlslapsysbenchmysqlslapSQL优化分页查询优化慢SQL日志工具mysqldumpslowMySQL主从复制MySQL主从复制 knowledgeMySQL二进制日志log_…