入门Java编程的知识点—>方法(day06)

2024-08-25 10:36

本文主要是介绍入门Java编程的知识点—>方法(day06),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

重点掌握方法是什么?为什么要使用?如何进行方法的定义?

方法

方法又称为函数,在程序中方法表示功能。

方法的适用性:当程序中有一段表示是功能且重复的业务逻辑代码,可以用方法来封装,模块化编程,易于程序维护。

方法的好处:使用方法封装功能,那么该功能只需要定义一次,多次使用,实现复用,减少代码冗余。

方法语法:

[访问修饰符]  返回值类型  方法名 ([参数]){方法体}
  1. 访问修饰符: 控制当前内容可见的范围.

  2. 返回值类型:

    • ​ 没有返回值类型 用void表示无返回值.方法中如果需要遇到某些条件需要退出方法,用return; 即可。
    • ​ 如果有,则再该位置写上具体的要返回的类型即可,其次要在方法体的结束代码之前 写上 return 表示退出 且在return写上要返回的具体数据,这个数据要与当前方法的返回值类型匹配.
  3. 方法名:见名知意(小驼峰命名)

  4. 参数:在方法小括号中写的参数叫做形式参数,意味占一个坑,具体参数内容是什么,由调用方法的人来决定.

    • ​ 参数语法: 参数类型 变量名(见名知意)
  5. 方法体:用来存放该方法的逻辑

  • 方法的4种形式:

    • 无参无返回值方法

        /*** 需求:只是为了复用一段逻辑代码!* 目的: 一定定义多次使用,减少代码冗余*/     
      static void attack() {//自定义方法需要调用才能执行!System.out.println("一个右鞭腿");System.out.println("一个左刺拳");System.out.println("一个过肩摔");System.out.println("年轻人!好自为之!");}
    • 有参无返回值方法

        /*** 需求:做一个问好的功能  sayHi   功能需要通用的!* 目的: 希望谁调用sayHi 谁决定问谁!*/  
      static void sayHi(String name,int age){ //自定义方法需要调用才能执行!System.out.println( name + "同学你好!,我的年龄是:"+age);}
    • 无参有返回值方法

        /*** 需求:做一个获取PI值的功能方法* 目的: 让调用者可以通过该功能,获取到一份数据PI: 3.1415926*/ 
      static double getPi() {return 3.1415926;}
    • 有参有返回值方法

          /*** 需求:写一个计算和的功能方法.* 目的:通过外部传入两个int类型的数据 ,方法中计算传入进来的数据相加和,并返回给调用者* 有参:为了让调用方法的人决定计算什么数据.* 有返回值:计算后将结果给调(使)用者*/static int sum(int a, int b) {return a + b;}
方法练习
2.做一个计算三个int值相加和功能,通过调用方法传递两个运算的数据,该方法则返回运算结果.static int sum1(int a, int b, int c) {return a + b + c;//返回传入数据的运算结果}3.做一个计算两个double值相加和功能,通过调用方法传递两个运算的数据,该方法则返回运算结果.static double sum2(double a, double b) {return a + b;//返回传入数据的运算结果}

测试:

    public static void main(String[] args) {int r = sum(10, 20);System.out.println(r);int r1 = sum1(10, 20,30);System.out.println(r1);int r2 = sum2(1.23, 2.2);System.out.println(r1);}

问题:上述需求功能一致都是在做求和的方法,只是方法参数个数或方法类型不同导致书写了多个方法,对于调用方法来说,需要记不同的方法名字,比较麻烦。

解决:可以使用方法的重载用一个名字表示同一个功能。

方法的重载

好处:当方法参数个数或方法类型不同导致书写了多个方法时,如果这些方法功能一致,我们可以用一个方法名来表示。

重载条件:当方法的参数个数或参数类型不同时,用一个方法名表示这些功能即可。

目的:让使用者只只需要调用一个功能,即可满足不同的需求。

	//我们尽可能让使用者直接使用功能即可,具体根据用户传入的参数个数或参数类型 让程序来区分执行哪个方法。//重载条件:方法参数个数或参数类型不同  方法名一样即可构建重载static int sum(int a, int b) {//int result = a + b;return a + b;//返回传入数据的运算结果}static int sum(int a, int b, int c) {return a + b + c;}static double sum(double a, double b) {return a + b;}

测试:调用一个名为sum的方法只需要根据自己的需求传入需要求和的数据即可,编译器会根据传入的参数自动匹配已有的方法进行使用。

    public static void main(String[] args) {int r = sum(10, 20);System.out.println(r);int r1 = sum(10, 20,30);System.out.println(r1);int r2 = sum(1.23, 2.2);System.out.println(r1);}
/*** 方法练习:*/
public class ArrayDemo02 {public static void main(String[] args) {/***  编写一个程序,求出下列数组中最大的数据并打印输出出来 。*  思路:假设数组中第一个元素为最大值。声明max变量接收这个最大值。*         如果max < 当前参与比较的数据..则将 当前参与比较的数据 赋值给max*         max最终则存放数组中最大值。*/int[] array = {100, 40, 20, 60, 700, 5};int max = getArrayMax(array);//调用方法 传入需要运算的数组System.out.println("max值为:" + max);int[] array1 = {300, 400, 500, 100, 1000, 50};int max1 = getArrayMax(array1);//调用方法 传入需要运算的数组System.out.println("max值为:" + max1);int[] array2 = {300, 400, 500, 6000, 1000, 50};int max2 = getArrayMax(array2);//调用方法 传入需要运算的数组System.out.println("max值为:" + max2);}static int getArrayMax(int[] array) {//有参有返回值方法  方法好处:一次定义多次使用。int max = array[0];//假设数组中第一个元素为最大值for (int i = 0; i < array.length; i++) {if (max < array[i]) {//如果max小于当前数组的数据max = array[i];//数组数据 赋值给 max}}return max;}
}
方法定义小技巧,所有方法的定义都是基于功能需求的前提,根据功能需要来进行选择:1.什么时候使用无形式参数的方法?
答:当定义方法时,不需要外部传递数据就能保证方法的复用,则可以不用写参数.2.什么时候使用有形式参数的方法?
答:当定义方法时,方法体的逻辑定义某些数据一旦写死,方法的使用则变的无法复用,那么就可以将该数据内容以形式参数的方法定义.让外部调用者决定传递具体数据.3.什么时候使用无返回值的方法?
答:当定义方法时,方法被调用后,无需返回给调用者一些信息数据等,则无需定义方法返回值类型,使用void表示该方法没有返回值类型.4.什么时候使用有返回值的方法?
答:当定义方法时,方法被调用后,需要返回给调用者一些信息数据等,则需要根据返回的数据类型,将数据类型定义在返回值类型的位置,且在方法结束花括号之间使用return 语句,return 需要返回的具体数据即可

这篇关于入门Java编程的知识点—>方法(day06)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1105315

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

基本知识点

1、c++的输入加上ios::sync_with_stdio(false);  等价于 c的输入,读取速度会加快(但是在字符串的题里面和容易出现问题) 2、lower_bound()和upper_bound() iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bou

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听