Java方法使用详解:从基本概念到进阶技巧

1. 方法介绍

方法是执行特定功能的代码块,可以被多次调用。方法由方法头和方法体组成,方法头包括方法名、参数列表和返回类型。方法体包含实际执行的代码。

2. 方法通用格式各部分解释

[修饰符] 返回类型 方法名([参数列表]) {
  // 方法体
  // 执行的代码
  return 返回值;  // 如果方法有返回值,使用return语句
}
  • 修饰符:如publicprivatestatic等,表示方法的访问权限或其他属性。

  • 返回类型

    比如:
    return 1-> 方法上的返回值类型写int
    return 2. 5 -> 方法上的返回值类型写double
    return “” -> 方法上的返回值类型写string
    如果没有返回值,不要写具体的返回值类型了,要写void

  • 方法名:方法的名字(小驼峰式)。

  • 参数列表:方法需要的输入参数,可以有多个,用逗号分隔。

  • 方法体:方法执行的具体代码。

3. 无参无返回值方法使用

这种方法没有参数,也不返回任何值。常用于执行一些不需要输入数据或不需要返回结果的任务。

public static void 方法名(数据类型 变量名){
  方法体
}

无参无返回值调用greet方法来输出"Hello, welcome!"。

class MyClass {
  // 无参无返回值方法
  void greet() {
    System.out.println("Hello, welcome!");
  }

  public static void main(String[] args) {
    MyClass obj = new MyClass();
    obj.greet();  // 调用无参无返回值方法
  }
}

4. 有参无返回值方法使用

有参数的无返回值方法会根据传入的参数进行操作,但不会返回任何结果。

public static void 方法名(数据类型 变量名){
  方法体
}

调用printMessage方法,传递字符串参数"Hello, Java!"到控制台输出。

class MyClass {
  // 有参无返回值方法
  void printMessage(String message) {
    System.out.println(message);
  }

  public static void main(String[] args) {
    MyClass obj = new MyClass();
    obj.printMessage("Hello, Java!");  // 传递参数
  }
}

5. 无参有返回值方法使用

无参数的有返回值方法返回一个结果,通常用于计算或获取某个值。

public static 返回值类型 方法名(){
  方法体
  return 结果
}

调用getNumber方法获取返回值,然后将这个值打印到控制台。

class MyClass {
  // 无参有返回值方法
  int getNumber() {
    return 42;
  }

  public static void main(String[] args) {
    MyClass obj = new MyClass();
    int result = obj.getNumber();  // 获取返回值
    System.out.println(result);
  }
}

6. 有参有返回值方法使用

有参数且有返回值的方法根据输入参数进行计算并返回一个结果。

public static 返回值类型 方法名(参数){
  方法体
  return 结果
}

调用sum方法计算两个整数10和20的和,并打印出结果

class MyClass {
  // 有参有返回值方法
  int sum(int a, int b) {
    return a + b;
  }

  public static void main(String[] args) {
    MyClass obj = new MyClass();
    int result = obj.sum(10, 20);  // 传递参数并获取返回值
    System.out.println(result);  // 输出 30
  }
}

7. 形式参数和实际参数说明

  • 形式参数:方法定义时声明的参数(方法头中的参数)。

  • 实际参数:调用方法时传递给方法的具体值。

    示例:

    class MyClass {
      public static void main(String[] args) {
        // 实参:"树小振",
        greet("树小振"); 
      }
      public static void greet(String name) { // 形参:name
        System.out.println("Hello, " + name); 
      }
    }
    

8. 参数和返回值使用时机

  1. 参数:
    当想将方法A的数据传递到方法B时,那么定义方法B时就需要带个参数,在方法A中调用方法B时,可以将方法A中的数据通过参数传递到方法B中
  2. 返回值:
    调用方法A时,想要方法A的结果,去参与其他的操作,那么方法A就需要将自己的结果返回

9. 变量作为实参使用

在方法调用时,可以传递变量作为实参,这些变量的值将作为输入传递给方法。

class MyClass {
  public static void main(String[] args) {
    int a = 10;
    int b = 20;
    sum(a, b);
  }
  public static void sum(int a, int b) {
    int result = a + b;
    System.out.println("a + b = " + result);
  }
}

10. 方法注意事项

10.1. 方法名应简洁且具有描述性

方法名应清晰地描述方法的功能和目的,避免过长或过于模糊的名称,便于理解和维护。

10.2. 方法的参数和返回类型应根据具体业务需求设计

参数和返回类型应根据方法的实际功能来设计,确保方法的输入输出符合业务需求。

10.3. 如果方法没有返回值,返回类型必须是 void

如果方法没有返回值,应声明返回类型为 void,这意味着该方法仅执行操作而不返回任何结果。

10.4. 方法调用时,参数的类型和数量必须与定义时一致

方法调用时,传入的实参类型、数量和顺序必须与方法声明时的形参一致,否则会导致编译错误。

10.5. 方法不调用不执行

方法必须被显式调用才能执行。如果一个方法没有被调用,它就不会被执行。

10.6. 方法的执行顺序只和调用顺序有关

方法的执行顺序是由调用顺序决定的,调用顺序按代码中出现的顺序依次执行。

10.7. 方法之间不能互相嵌套

在 Java 中,一个方法不能直接嵌套定义在另一个方法内部。方法定义必须在类体内,而不是其他方法内。

10.8. void 不能与 return 结果 共存,但 void 能与 return 共存
  • void 表示方法没有返回值,因此不能与 return 语句同时返回结果。如果声明了 void 类型,return 语句只能用于结束方法执行。
  • 示例
    • 错误void 方法中不能有 return 返回值:
      public void example() {
          return 42;  // 错误,不能在void方法中返回结果
      }
      
    • 正确void 方法中可以使用 return 结束方法:
      public void example() {
          return;  // 正确,return 仅结束方法
      }
      
10.9. 一个方法中不能连续写多个 return
  • 一个方法只能有一个 return 语句来返回值或结束方法。虽然可以根据条件写多个 return,但每个分支中的 return 必须有明确的返回结果或结束方法。
  • 示例
    • 正确
      public int add(int a, int b) {
          if (a > b) {
              return a + b;
          } else {
              return b + a;
          }
      }
      
    • 错误
      public void example() {
          return;  // 第一个 return
          return;  // 错误,不能有多个 return
      }
      
10.10. 调用方法时要确保方法存在,否则会报错

在调用一个方法之前,必须确认该方法已定义。如果调用一个不存在的方法,编译时会报错。方法名、参数类型、数量以及返回类型都必须匹配。

11. 初学者如何学习方法小技巧

11.1 初学者怎么写方法

11.1.1. 先定义,再调用

  • 在 Java 中,方法的调用必须在方法定义之后,否则编译时会找不到方法的定义。

11.1.2. 没有返回值的方法

  • 如果方法没有返回值,直接在方法内部输出结果。比如使用 System.out.println() 打印结果。
  • 示例
    public void printMessage() {
        System.out.println("Hello, World!");  // 直接在方法内部输出
    }
    

11.1.3. 带返回值的方法

  • 如果方法有返回值,调用方法之后,使用一个变量接收方法的返回结果,然后输出这个变量。
  • 示例
    public int addNumbers(int a, int b) {
        return a + b;  // 返回计算结果
    }
    
    public static void main(String[] args) {
        MyClass obj = new MyClass();
        int result = obj.addNumbers(10, 20);  // 用变量接收返回值
        System.out.println(result);  // 输出返回的结果
    }
    

11.1.4. 调用方法

  • 直接调用:适用于没有返回值的方法。通过方法名直接调用。
    printMessage();  // 调用无返回值的方法
    
  • 打印调用:适用于有返回值的方法,但不推荐这种方式。直接在 System.out.println() 中调用方法。
    System.out.println(addNumbers(10, 20));  // 直接打印返回值
    
  • 赋值调用:适用于有返回值的方法。通过赋值给变量来接收方法的返回值。
    int sum = addNumbers(10, 20);  // 用变量接收方法返回值
    

11.2 初学者如何学习方法小技巧

11.2.1. 命名规范

  • 方法名通常使用小写字母开头的驼峰式命名法(camelCase)。例如:calculateSum
  • 方法名应简洁明了,能够表达出方法的功能。

11.2.2. 注释

  • 在方法头部添加简要注释,描述方法的功能、参数和返回值。这样可以帮助自己和他人理解方法的作用。
  • 示例
    /**
     * 计算两个整数的和
     * @param a 第一个整数
     * @param b 第二个整数
     * @return 两个整数的和
     */
    public int addNumbers(int a, int b) {
        return a + b;
    }
    

11.2.3. 分步骤学习

  • 初学者可以先从简单的无参、无返回值的方法开始,逐步理解方法的基本结构和调用方式。
  • 逐步过渡到有参数和返回值的方法,并学会如何在方法中处理参数和返回值。

方法调用:先定义方法,再调用方法。无返回值的方法直接输出结果;有返回值的方法可以通过变量接收结果并输出。
命名和注释:命名时遵循驼峰式命名法,方法上方加注释,描述功能和参数,帮助代码阅读和维护。
分步学习:从简单的无参无返回值方法开始,逐步学习更复杂的带参和有返回值的方法。

12. 数组作为方法参数传递

数组可以作为方法的参数传递,允许你在方法中处理大量数据。

void printArray(int[] arr) {
    for (int num : arr) {
        System.out.println(num);
    }
}

public static void main(String[] args) {
    int[] numbers = {1, 2, 3, 4, 5};
    obj.printArray(numbers);  // 传递数组作为参数
}

13. 数组作为方法返回值返回

方法可以返回一个数组,这对于返回一组数据特别有用。

int[] getNumbers() {
    return new int[] {1, 2, 3, 4, 5};
}

public static void main(String[] args) {
    int[] numbers = obj.getNumbers();  // 获取数组作为返回值
    for (int num : numbers) {
        System.out.println(num);
    }
}

14. 方法的重载基本使用

方法重载是指在同一个类中,可以定义多个方法名相同,但参数列表不同(参数个数或类型不同)。返回类型可以相同,也可以不同。

public class Demo1OverLoad {
 public static void main(String[] args) {     
   sum(1,2);
   sum(1,2,3);
   sum(1,2,3,4); 
 }    
  
 //两个整数相加    
 public static void sum(int a,int b){      
   System.out.println(a+b);//3
 }    
  
 //三个整数相加    
 public static void sum(int a,int b,int c){        
   System.out.println(a+b+c); //6
 }    
  
 //四个整数相加    
 public static void sum(int a,int b,int c,int d){
   System.out.println(a+b+c+d);//10
 }
}

15. 方法重载的注意事项

方法重载时,方法名相同,但参数类型或参数个数必须不同,不能仅通过返回类型区分。
重载方法调用时,Java会根据传入的参数类型来选择匹配的方法。

// 错误示例:只有返回类型不同,无法区分重载方法
// int add(int a, int b) { return a + b; }
// double add(int a, int b) { return a + b; } // 这是错误的,会引起编译错误

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI 助力游戏开发中的常用算法实现

在当今的游戏开发领域,人工智能(AI)技术的应用已经成为推动行业发展的关键力量。AI不仅能够提升游戏的智能化水平,还能够增强玩家的沉浸感和游戏体验。随着技术的进步,AI在游戏设计、开发和测试中的应用越来越广泛&…

行业商机信息付费小程序系统开发方案

行业商机信息付费小程序系统,主要是整合优质行业资源,实时更新的商机信息。在当今信息爆炸的时代,精准、高效地获取行业商机信息对于企业和个人创业者而言至关重要。 一、使用场景 日常浏览:用户在工作间隙或闲暇时间&#xff0c…

LabVIEW 中 NI Vision 模块的IMAQ Create VI

IMAQ Create VI 是 LabVIEW 中 NI Vision 模块(NI Vision Development Module)的一个常用 VI,用于创建一个图像变量。该图像变量可以存储和操作图像数据,是图像处理任务的基础。 ​ 通过以上操作,IMAQ Create VI 是构建…

[AI] 深度学习的“黑箱”探索:从解释性到透明性

目录 1. 深度学习的“黑箱”问题:何为不可解释? 1.1 为什么“黑箱”问题存在? 2. 可解释性研究的现状 2.1 模型解释的方法 2.1.1 后置可解释性方法(Post-hoc Explanations) 2.1.2 内在可解释性方法(I…

UnityRenderStreaming使用记录(四)

测试把UnityRenderStreaming部署在docker,剧透一下,嘎了…… 当然webserver运行的妥妥的 那么打包出的程序运行log Mono path[0] /home/unity/Broadcast/Broadcast_Data/Managed Mono config path /home/unity/Broadcast/Broadcast_Data/MonoBleedingE…

javaEE-文件操作和IO-文件

目录 一.什么是文件 1.文件就是硬盘(磁盘)上的文件。 2.计算机中存储数据的设备: 3.硬盘的物理特征 4.树型结构组织和⽬录 5.文件路径 文件路径有两种表示方式: 6.文件的分类 二、java中文件系统的操作 1.File类中的属性: 2.构造方…

SqlSession的线程安全问题源码分析

🎮 作者主页:点击 🎁 完整专栏和代码:点击 🏡 博客主页:点击 文章目录 SqlSession 是线程安全的吗?为什么说是线程不安全的?事务管理问题 数据库连接的共享问题 一级缓存线程安全问题…

拆解 Web3:探寻去中心化网络的核心密码

近年来,Web3频繁出现在技术讨论中,被视为互联网发展的下一阶段。那么,Web3究竟是什么?它如何区别于传统互联网,又将为未来的网络带来哪些新的可能?本文将从科普的角度拆解Web3的核心密码,揭开它…

《Vue3实战教程》37:Vue3生产部署

如果您有疑问,请观看视频教程《Vue3实战教程》 生产部署​ 开发环境 vs. 生产环境​ 在开发过程中,Vue 提供了许多功能来提升开发体验: 对常见错误和隐患的警告对组件 props / 自定义事件的校验响应性调试钩子开发工具集成 然而&#xff…

Ruby自动化:用Watir库获取YouTube视频链接

引言 Watir(Web Application Testing in Ruby)是一个强大的工具,它允许开发者使用Ruby语言来自动化控制浏览器。Watir最初被设计用于自动化Web应用测试,但其功能远不止于此。通过Watir,我们可以模拟用户行为&#xff…

[CTF/网络安全] 攻防世界 warmup 解题详析

查看页面源代码&#xff0c;发现source.php 得到一串代码&#xff0c;进行代码审计&#xff1a; <?phpclass emmm{public static function checkFile(&$page){$whitelist ["source">"source.php","hint">"hint.php"];…

solr9.7 单机安装教程

1.环境要求:jdk11以上 2.下载wget https://dlcdn.apache.org/solr/solr/9.7.0/solr-9.7.0.tgz 3.解压 4.修改solr.in.sh配置 5.启动命令 bin/solr start 6.创建core bin/solr create -c <core名称> 注意:用solr ui界面创建&#xff0c;会提示找不到solrconfig.xml和m…

应用架构模式-总体思路

采用引导式设计方法&#xff1a;以企业级架构为指导&#xff0c;形成较为齐全的规范指引。在实践中总结重要设计形成决策要点&#xff0c;一个决策要点对应一个设计模式。自底向上总结采用该设计模式的必备条件&#xff0c;将之转化通过简单需求分析就能得到的业务特点&#xf…

基于AI大模型的医院SOP优化:架构、实践与展望

一、引言 1.1 研究背景与意义 近年来,人工智能(AI)技术取得了迅猛发展,尤其是大模型的出现,为各个领域带来了革命性的变化。在医疗领域,AI 医疗大模型正逐渐崭露头角,展现出巨大的应用潜力。随着医疗数据的海量积累以及计算能力的大幅提升,AI 医疗大模型能够对复杂的…

AWS re:Invent 2024 - Dr. Werner Vogels 主题演讲

今年&#xff0c;我有幸亲临现场参加了所有的 keynote&#xff0c;每一场都让我感受到深深的震撼。无论是全新的功能发布&#xff0c;还是令人眼前一亮的新特性展示&#xff0c;每一场 keynote 都精彩纷呈&#xff0c;充满干货&#xff0c;值得反复学习和回味。 恰好&#xff…

UnionTech OS Server 20 网页无法访问yum源地址

统信yum地址 https://euler-packages.chinauos.com/server-euler/fuyu/1060/everything/sw_64/Packages/ 浏览器访问401报错无权限&#xff0c;查看linux uos环境下yum配置的用户名和密码 cat /etc/yum/vars/auth_* 然后自己组装生成Basic Authorization def generate_basic_…

自动化测试常考的面试题+答案汇总(持续更新)

Hi&#xff0c;大家好&#xff0c;。最近很多朋友都在说今年的互联网行情不好&#xff0c;面试很难&#xff0c;不知道怎么复习&#xff0c;我最近总结了一份在自动化测试面试中比较常见的面试题合集&#xff0c;希望对大家有帮助。 本文共 4800 字&#xff0c;预计阅读时间 1…

jvm结构介绍

JVM结构概述 Java虚拟机&#xff08;JVM&#xff09;是Java程序的运行环境&#xff0c;它负责将Java字节码转换为机器码并执行。JVM的结构主要包括类加载子系统、运行时数据区、执行引擎、本地接口以及垃圾收集器。 1. 类加载子系统&#xff08;Class Loader Subsystem&#xf…

ruoyi开发学习

将若依框架中的若依元素删掉 1.删除主目录中的“若依官网”&#xff1a; 在后端项目中&#xff0c;idea里借助mysql管理工具&#xff0c;找到sys_menu数据表&#xff0c;双击打开&#xff0c;找到4 若依官网&#xff0c;选中点击减号&#xff0c;绿色上箭头刷新&#xff0c;删…

计算机网络 (13)信道复用技术

前言 计算机网络中的信道复用技术是一种提高网络资源利用率的关键技术。它允许在一条物理信道上同时传输多个用户的信号&#xff0c;从而提高了信道的传输效率和带宽利用率。 一、信道复用技术的定义 信道复用&#xff08;Multiplexing&#xff09;就是在一条传输媒体上同时传输…
最新文章