Java 笔记 11:Java 方法相关内容

一、前言

记录时间 [2024-05-01]

系列文章简摘:
Java 笔记 01:Java 概述,MarkDown 常用语法整理
Java 笔记 02:Java 开发环境的搭建,IDEA / Notepad++ / JDK 安装及环境配置,编写第一个 Java 程序
Java 笔记 03:Java 基础知识,使用 IDEA 创建 Java 项目、设置注释颜色,以及自动生成 JavaDoc
Java 笔记 09:Java 流程控制相关,常见的三种控制结构(顺序、选择、循环)

更多 Java 相关文章,请参考上面专栏哦。

本文对 Java 方法进行简单介绍。(未完结)


二、方法概述

1. 思考引入

在之前的学习中,我们接触过 System.out.println(); 这个 Java 语句,它是用来在控制台输出信息的命令。

在 Java 中,System.out 是一个代表标准输出流的对象,而 println() 是一个方法,它会在控制台输出括号内的内容,并在最后自动换行。如果括号内没有任何内容,它将输出一个空行。

  • System:这是 Java 中的一个类,位于 java.lang 包中。它提供了与系统相关的方法和属性,包括标准输入、标准输出等。
  • out:这是 System 类的一个静态属性,类型为 PrintStreamPrintStream 是 Java 中用于打印输出的类。
  • println()这是一个方法,它会在控制台输出括号内的内容,并在最后自动换行。

2. 何谓方法

在 Java 中,方法是用来执行特定任务的一组语句的集合,它们在一起执行一个功能。方法可以接受参数,执行操作,并返回一个值。

  • 方法是解决一类问题的步骤的有序组合;
  • 方法包含于类或对象中;
  • 方法在程序中被创建,在其他地方被引用。

3. 方法设计原则

方法的本意是功能块,就是实现某个功能的语句块的集合。设计方法时,应遵循一些原则,以确保方法的可读性、可维护性和可重用性。

  • 单一职责原则:一个方法应该只有一个明确的功能或职责(原子性)。使方法更加清晰和易于理解,降低方法的复杂性。
  • 开放封闭原则:方法应该对扩展开放,对修改封闭。当需要修改方法时,应该通过扩展,而不是修改现有方法来实现。
  • 参数数量原则:尽量避免方法接受过多的参数。参数数量过多会增加方法的复杂性和理解难度。如果方法需要大量参数,可以考虑将这些参数封装成对象或者使用构建器模式。
  • 清晰明确的命名原则:方法的名称应该清晰、明确地描述方法的功能。
  • 提高可见性原则:在设计方法时,应该尽量将方法的可见性设置为最小化。如果可能,应该将方法设置为私有 private,只有在需要在类的外部调用时,才将方法设置为公共 public 或受保护 protected
  • 避免副作用原则:方法应该尽量避免对外部状态的修改,即所谓的副作用。副作用会增加方法的复杂性,降低方法的可预测性和可维护性。
  • 一致性原则:方法的设计应该保持一致性,即相似的功能应该采用相似的方法设计。这样做可以提高代码的可读性和可维护性。
  • 错误处理原则:方法应该提供良好的错误处理机制,包括抛出异常、返回错误码等。良好的错误处理可以增强方法的健壮性和可靠性。

4. 方法命名原则

在 Java 中,方法的命名应该遵循一定的规则和约定,以提高代码的可读性和可维护性。

以下是一些常用的方法命名规则:

  • 使用动词或动词短语:方法名称应该能够清楚地描述方法执行的操作。通常使用动词或动词短语来命名方法。例如:calculateTotal()getUserInfo()
  • 采用驼峰命名法:首字母小写,后续单词的首字母大写,没有下划线或其他分隔符。例如:calculateTotalAmount()
  • 清晰明确:方法名应该尽可能清晰和明确,避免使用缩写或简写,以确保其他开发者能够准确理解方法的作用。
  • 使用一致的命名风格:在整个代码库中,应该保持一致的命名风格。以提高代码的可读性,降低沟通成本。
  • 避免使用保留字:方法名不应该与 Java 中的保留字相同,以免引起歧义或编译错误。
  • 根据约定命名特殊方法:一些特殊用途的方法,例如构造方法、getter 和 setter 方法,有一定的命名约定。例如,构造方法应该与类名相同,getter 方法应该以 get 开头,setter 方法应该以 set 开头。
  • 反映方法的功能:方法名应该反映方法的功能,而不是具体的实现细节或内部实现。
  • 具有一定的描述性:避免使用过于简单或过于通用的名称,以免造成混淆或命名冲突。

三、方法定义及调用

1. 定义语法

以下是定义方法的一般语法:

<访问修饰符> <返回类型> <方法名>(<参数列表>) {// 方法体<语句>;// 可选的返回语句return <返回值>;
}
  • <访问修饰符>:指定了谁可以调用这个方法以及在什么情况下可以调用。常见的访问修饰符包括:
    • public(公共的,任何类都可以访问)
    • private(私有的,只有同一个类中的其他方法可以访问)
    • protected(受保护的,只有同一个包内的类和子类可以访问)
    • 默认(没有修饰符,只有同一个包内的类可以访问)
  • <返回类型>:指定了方法返回的数据类型:
    • 如果方法不返回任何值,则返回类型应为 void
    • 如果方法返回一个值,则返回类型应该是具体的数据类型,如 intdoubleString 等。
  • <方法名>:方法的名称,用来唯一标识方法。
  • <参数列表>:方法可以接受零个或多个参数,参数是方法执行时需要的输入值。参数列表是用括号括起来的,多个参数之间用逗号分隔。
  • // 方法体:方法体包含了方法执行的实际操作。这里是方法中的语句集合。
  • return <返回值>;:可选的返回语句,用于将结果返回给调用者。return 语句会结束方法的执行并返回一个值给调用者。如果方法的返回类型是 void,则不需要返回语句。

2. 简单示例

以下是一个简单的 Java 方法示例:

public class MyClass {public static void main(String[] args) {int sum = addNumbers(5, 3);System.out.println("Sum: " + sum);}public static int addNumbers(int a, int b) {return a + b;}
}

在这个例子中,addNumbers 方法接受两个整数作为参数,并返回它们的和。main 方法调用了 addNumbers 方法,并将返回的结果打印到控制台。


四、总结

本文对 Java 方法进行简单介绍。(未完结)

剩余部分:方法重载、命令行传参、可变参数、递归


一些参考资料

狂神说 Java 零基础:https://www.bilibili.com/video/BV12J41137hu/
TIOBE 编程语言走势: https://www.tiobe.com/tiobe-index/
Typora 官网:https://www.typoraio.cn/
Oracle 官网:https://www.oracle.com/
Notepad++ 下载地址:https://notepad-plus.en.softonic.com/
IDEA 官网:https://www.jetbrains.com.cn/idea/
Java 开发手册:https://developer.aliyun.com/ebook/394
Java 8 帮助文档:https://docs.oracle.com/javase/8/docs/api/

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

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

相关文章

C++之const用法小结

在C中&#xff0c;const关键字具有多种用法&#xff0c;主要用于声明常量&#xff0c;确保某些变量的值在程序运行期间不会被修改。以下是const在C中的一些常见用法&#xff1a; 1.声明常量&#xff1a; 使用const声明的变量是常量&#xff0c;其值在初始化后不能再被修改。 …

OneFlow 概念清单

OneFlow 概念清单 引言 在深度学习框架的丰富生态中&#xff0c;OneFlow 以其独特的架构设计和优化方法吸引了众多研究者和开发者的关注。本文旨在梳理 OneFlow 的核心概念&#xff0c;帮助初学者快速理解其设计理念和使用方法。我们将从基本概念入手&#xff0c;逐步深入到高…

在 PHP中使用 Redis 缓存的方法有哪些

在 PHP 中使用 Redis 作为缓存的方法非常多样化&#xff0c;因为 Redis 提供了丰富的数据结构和命令集。以下是一些常见的 PHP 中使用 Redis 缓存的方法&#xff1a; 字符串缓存 Redis 最基本的数据结构是字符串&#xff08;string&#xff09;&#xff0c;你可以用它来缓存简…

【数据结构】链表专题2

前言 本篇博客继续探讨有关链表的专题&#xff0c;这片博客的题&#xff0c;提前打个预防针&#xff0c;有点意思哦&#xff0c;哈哈哈&#xff0c;话不多说&#xff0c;进入正文 &#x1f493; 个人主页&#xff1a;小张同学zkf ⏩ 文章专栏&#xff1a;数据结构 若有问题 评论…

ASP.NET淘宝店主交易管理系统的设计与实现

摘 要 淘宝店主交易管理系统主要采用了ASPACCESS的B/S设计模式&#xff0c;通过网络之间的数据交换来实现客户、商品、交易的管理和对客户、商品、交易统计工作&#xff0c;从而提高淘宝店主在管理网店过程中的工作效率和质量。 系统分为基本资料模块&#xff0c;统计资料模…

“大唐杯”基础知识(部分)

DL&#xff1a;下载 UL&#xff1a;上行链路 在5G系统中&#xff1a;2.1GHZ DL最大4流&#xff0c;UL最大2流&#xff1b;700MHZ DL最大2流&#xff0c;UL最大1流 在5G系统中&#xff1a;在手机开机流程中&#xff0c;负责业务承载建立的过程是PDU会话建立过程 NR中支持基础的4…

北京大学肖臻老师《区块链技术与应用》P14(ETH概述)和P15(ETH账户)

1️⃣ 参考 北京大学肖臻老师《区块链技术与应用》 P14 - ETH概述篇P15 - ETH账户篇 1️⃣4️⃣ETH概述 ① 比特币与以太坊的对比 比特币&#xff08;区块链 1.0&#xff09;以太坊&#xff08;区块链 2.0&#xff09;出块时间大约10 min十几秒mining puzzle计算密集型Memo…

DRF中的请求入口分析及request对象分析

DRF中的请求入口分析及request对象分析 django restframework框架是在django的基础上又给我们提供了很多方便的功能&#xff0c;让我们可以更便捷基于django开发restful API 1 drf项目 pip install django pip install djangorestframework1.1 核心配置 INSTALLED_APPS [d…

【ARMv8/v9 系统寄存 3 -- system counter CNTPCT_EL0】

文章目录 ARMv8/v9 system countersystem counter读取函数实现 ARMv8/v9 system counter 所有使用Arm处理器的系统中都会包含一个标准化的通用定时器&#xff08;Generic Timer&#xff09;框架。这个通用定时器系统提供了一个系统计数器&#xff08;System Counter&#xff0…

环形链表的经典问题

环形链表 环形链表的介绍链表中是否带环返回链表开始入环的第一个节点 本文主要介绍如何判断一个链表是否是环形链表&#xff0c;以及如何得到环形链表中的第一个节点。 环形链表的介绍 环形链表是一种链表数据结构&#xff0c;环形链表是某个节点的next指针指向前面的节点或指…

ctfshow-web入门-102

这个题我想记录一下&#xff0c;主要是这个方法属实是有点惊艳到我了。故而进行记录&#xff0c;也为了方便大家阅读理解。 看题目&#xff0c;根据题目我写一下我的分析&#xff1a; $_POST传入一个v1&#xff0c;$_GET传入一个v2&#xff0c;一个v3。 赋值符号 优先级高于…

vue和react这两大前端框架的优缺点对比

【A】Vue和React是目前最流行的两个前端框架&#xff0c;它们都具有各自的优点和缺点。下面是对Vue和React的优缺点的详细介绍&#xff1a; Vue的优点&#xff1a; 简单易学&#xff1a;Vue的API设计简单&#xff0c;上手较为容易&#xff0c;学习曲线相对较低。文档丰富&…

微软如何打造数字零售力航母系列科普05 - Azure中计算机视觉的视觉指南

Azure中计算机视觉的视觉指南 什么是计算机视觉&#xff1f;如何使用Microsoft Azure将计算机视觉功能集成到应用程序和工作流中&#xff1f; 作者&#xff1a;Nitya Narasimhan 编辑&#xff1a;数字化营销工兵 •11分钟阅读 什么是计算机视觉&#xff1f;如何使用Microso…

WORD排版常见问题与解决方案

前言 近期使用word软件进行论文排版工作&#xff0c;遇到了一些常见的问题&#xff0c;记录一下&#xff0c;避免遗忘。 基本配置 系统环境&#xff1a;win10/win11 word版本&#xff1a;Microsoft Office LTSC 专业增强版 2021 问题与解决方案 问题1&#xff1a;页眉显示内…

SQL数据库经典题型(2)列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩

1.查询平均成绩不及格的学生姓名及平均成绩 select s1.s_id,s1.s_name,round(avg(s2.s_score)) from s_student s1,s_score s2 where s1.s_ids2.s_id group by s1.s_id,s1.s_name having round(avg(s2.s_score))<60; 2.--列出有二门以上&#xff08;含两门&#xff09;不…

SSH远程Ubuntu22.04无法通过X11转发xclock之外的其他GUI界面

问题前置条件 ssh远程Ubuntu22.04服务器开发环境无异常x11转发环境已配置&#xff0c;xclock可正常运行于本地环境可视化程序能够正常运行于Linux服务器 问题现象 除xclock等x11验证工具外&#xff0c;其他诸如python之类编写的可视化程序均无法透过X11转发至本地环境 问题…

[华为OD]C卷 机场航班调度 ,XX市机场停放了多架飞机,每架飞机都有自己的航班号100

题目&#xff1a; XX市机场停放了多架飞机&#xff0c;每架飞机都有自己的航班号CA3385, CZ6678, SC6508 等&#xff0c;航班号的前2个大写字母&#xff08;或数字&#xff09;代表航空公司的缩写&#xff0c;后面4个数字代表航班信息。 但是XX市机场只有一条起飞用跑道&am…

Apollo 编译时报错 ERROR: Config value ‘gpu‘ is not defined in any .rc file

用Apollo的某个版本的源码&#xff0c;执行 bash docker/scripts/dev_start.sh bash docker/scripts/dev_into.sh 创建容器并进入容器后执行 bash apollo.sh build_gpu 编译报错: WARNING: The following rc files are no longer being read, please transfer their conten…

【网络原理】IP协议的地址管理和路由选择

系列文章目录 【网络通信基础】网络中的常见基本概念 【网络编程】网络编程中的基本概念及Java实现UDP、TCP客户端服务器程序&#xff08;万字博文&#xff09; 【网络原理】UDP协议的报文结构 及 校验和字段的错误检测机制&#xff08;CRC算法、MD5算法&#xff09; 【网络…

leetcode 搜索插入位置

给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例 2: 输入…