Java入门-java的方法

java方法

java的方法是用来完成某种功能的代码块。使用方法封装代码块,可以提高代码的可复用性,模块化,使用者无需知道代码的具体实现也能通过方法调用使用其提供的功能,简化了应用过程。

方法结构

一般一个方法的构成有如图几部分构成:

img

方法的基本构成如下面的例子:

程序案例:

public static int add(int a, int b){

  return a +b;

}
方法构成含义
访问控制符private/protected/pubic/省略(不写)
static关键字可写(是否为静态方法,目前必备)
返回类型类型,和return的类型一致void(方法没有返回)
方法名称也是方法的入口,即内存中方法的地址。通过它可以找到我们要调用的方法在哪。例如: add()
形参形式上的参数,只是一个标记不是具体的值。例如: (int a, in b) a,b为形参
方法体大括号的内容,大括号可以理解为方法的作用域,即大括号中定义的变量其它方法是访问不到的。
方法使用中常见错误1. 方法体不能定义方法。2. 方法定义了返回类型,一定要有return 返回相应的类型。3. 方法中大括号不匹配。

方法参数

方法参数由定义和使用划分为形参(定义时)和实参(调用时)。

(1) 形参

形参即形式上的参数,在定义方法时虚拟的参数名称。例如下面例子中的a和b即为形式参数,名字是可以替换的,规范中建议方法的参数命名能够见名知意:

public  static int add(int a , int b){

}

(2) 实参

实际是指在实际方法调用过程中的实际传入的参数,例如以下程序在调用过程中调用add方法中传入的4和6即为实际传入的参数是实参。

程序案例:

pubic static void main(String[] args){

int x = add(4, 6);

}

public static int add(int a , int b){

return a + b;

}

(3) 形参和实参的关系图

img

不定参数

为了简化多参数的传递方式,编译器提供了一种不定参数的方式,其底层会转换为数组形式。

public void func(类型 ... 形参名称){

//编译器再运行时将传入的实参,转换为数组执行

}

程序案例:

public static void func(int... a) {

	for(int i = 0; i < a.length; i++) {

		System.out.println(a[i] + "\t");

	}

}

方法的调用

一旦方法定义好之后,方法则可以提供程序调用,常用的调用方式分为两种:

(1) 有返回值的方法:当作值使用。

程序案例:

pubic static void main(String[] args){

int x =add(4,6); //作为值返回给x

 System.out.println(x);

 System.out.println(99 + add(7,8)); //直接使用当作值用

}

(2) 无返回值方法: 做一行代码调用。

程序案例:

/**

 * 打印0~100之间的所有偶数

 */

public static void print(){	

	for(int i=0; i <= 100; i+= 2){
	 	System.out.print(i + "\t");	
	}
}

方法重载

如果同一个类中包含了两个或两个以上方法名相同、方法参数的个数、顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了。

方法重载的目的

方法重载的目的是在一个类(class范围)使用相同的方法名称,通过****参数类型或个数****不同复用方法名称,避免记录管理太多的方法名称。比如我们可以命名两个整数相加为add,如果是三个整数,四个整数相加呢?显然相同名称对于客户调用会容易很多。

方法重载的原理

编译器底层将方法名和参数类型重新组合命名为新的标识符,例如:add(int a, int b)转化为add_int_int, 将add(double a, int b)转换为 add_double_int, 也就是说编译器底层维护的方法名称依然是唯一的。

方法重载的几个必要条件

  • 在同一个类中
  • 方法名称完全相同
  • 方法的参数类型或者数量不同(与返回值等无关)

程序案例:

public static int add(int a, int b) {

  return a + b;

}
public static int add(int a, int b, int c) {

  return a + b + c;

}

方法递归

概念

程序调用自身的编程技巧称为递归(recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。 简单讲就是我们常说的自己调用自己(实际上是调用和自己的形式相同但是参数不同的方法而已)。

递归流程

解决方法递归问题,一般流程如下:

  • 找出递归的终止条件

  • 找出解决问题的通项公式

程序案例:

计算一个整数的阶乘:

public static int f(int n) {

if (1 == n) {

	return 1; //递归终止条件

}

return n *f(n - 1); //一般表达式(通项)

}

案例解析:

imgimg

f(5) = 5 x f(4);

f(4) = 4 x f(3);   

f(3) = 3 x f(2);

f(2) = 2 x f(1);

f(1) = 1; 

当n == 1 的时候,获取到结果,将结果返回给f(2),依次向上返回直到f(5)就获得了结果。这恰巧是栈的调用方式,先压栈,到达f(1)时开始出栈。

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

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

相关文章

【C++】vector问题解决(非法的间接寻址,迭代器失效 , memcpy拷贝问题)

送给大家一句话&#xff1a; 世界在旋转&#xff0c;我们跌跌撞撞前进&#xff0c;这就够了 —— 阿贝尔 加缪 vector问题解决 1 前言2 迭代器区间拷贝3 迭代器失效问题4 memcpy拷贝问题 1 前言 我们之前实现了手搓vector&#xff0c;但是当时依然有些问题没有解决&#xff…

HarmonyOS 开发-多模态页面转场动效实现案例

介绍 本示例介绍多模态页面转场动效实现&#xff1a;通过半模态转场实现半模态登录界面&#xff0c;通过配置NavDestinationMode类型为DIALOG&#xff0c;实现半模态的背景为透明&#xff0c;再与 全屏模态和组件转场结合实现多模态组合登录场景&#xff0c;其中手机验证码登录…

基于springboot+vue+Mysql的学习平台

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

【Web】CTFSHOW-2023CISCN国赛初赛刷题记录(全)

目录 Unzip BackendService go_session deserbug 主打一个精简 Unzip 进来先是一个文件上传界面 右键查看源码&#xff0c;actionupload.php 直接访问/upload.php&#xff0c;看到后端的源码 就是上传一个压缩包&#xff0c;对其进行解包处理 因为其是在/tmp下执行…

ip地址切换器安卓版,保护隐私,自由上网

在移动互联网时代&#xff0c;随着智能手机和平板电脑的普及&#xff0c;移动设备的网络连接变得愈发重要。为了满足用户在不同网络环境下的需求&#xff0c;IP地址切换器安卓版应运而生。本文将以虎观代理为例&#xff0c;为您详细解析IP地址切换器安卓版的功能、应用以及其所…

机器学习 基础 笔记 1

train阶段就是正常的学习 validation是知道正确答案是啥&#xff0c;检查正确率 test是不知道正确答案是啥&#xff0c;看看有啥结果 训练的时候记得model.train 测试&#xff08;后面两种都是&#xff09;的时候要model.eval &#xff08;有些模型两种阶段做的事不一样&a…

不要抱怨,不如抱 Java 运算符吧 (下篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人能接…

2024.4.9-day12-CSS 常用样式属性和字体图标

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 作业 作业 <!DOCTYPE html> <html lang"zh-CN"><he…

P4552 IncDec Sequence(差分)

题目描述 给定一个长度为 n n n 的数列 a 1 , a 2 , ⋯ , a n {a_1,a_2,\cdots,a_n} a1​,a2​,⋯,an​&#xff0c;每次可以选择一个区间 [ l , r ] [l,r] [l,r]&#xff0c;使这个区间内的数都加 1 1 1 或者都减 1 1 1。 请问至少需要多少次操作才能使数列中的所有数都…

rapidssl通配符证书760元

RapidSSL是Geotrust旗下的子品牌&#xff0c;旗下有两款基础型的数字证书产品——基础型单域名SSL证书和基础型通配符SSL证书。RapidSSL旗下的数字证书产品可以为个人或者企事业单位网站提供先进的加密算法和技术&#xff0c;确保网站数据在传输过程中不被窃取或篡改。今天就随…

Matlab|电价型负荷需求响应(考虑电价变化)

程序复现来源于《计及需求响应消纳风电的电-热综合能源系统经济调度 》第四章内容。 一、原理 需求响应的基本原理是需求侧根据电力市场价格和电网要求改变其负荷需求以 获取一定的利益回报。其中 PDR 可通过直观的电价变化信号引导用户调节用电方式&#xff0c; 从而达到优…

android11 如何修改状态栏的背景

修改status_bar.xml &#xff1a; <LinearLayout android:id"id/status_bar_contents"android:background"#1ABC9C"android:layout_width"match_parent"android:layout_height"match_parent"android:paddingStart"dimen/statu…

Linux部署FTP服务器

文章目录 什么是FTP协议&#xff1f;Linux上部署FTP服务器安装FTP服务启动FTP服务编辑/etc/vsftpd.conf重新启动服务测试FTP服务 什么是FTP协议&#xff1f; FTP协议是一种基于TCP的文件传输协议&#xff0c;能够实现高效的文件上传和下载功能&#xff0c;最重要的是它能够使用…

【群智能算法改进】一种改进的鹦鹉优化算法 鹦鹉优化器 IPO算法【Matlab代码#73】

文章目录 【获取资源请见文章第5节&#xff1a;资源获取】1. 原始鹦鹉优化算法PO2. 改进后的IPO算法2.1 自适应切换因子2.2 混合柯西和高斯变异 3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节&#xff1a;资源获取】 1. 原始鹦鹉优化算法PO 鹦鹉优化算法…

【数据结构】:顺序表专题

前言&#xff1a;今天我们开始介绍数据结构有关内容&#xff0c;那么数据结构是什么呢&#xff1f; 数据结构是计算机存储、组织数据的方式。在工作中&#xff0c;我们通常会直接使用已经封装好的集合API(应用程序编程接口)&#xff0c;这样可以更高效地完成任务。但是作为一名…

构建高效网络:深入理解正向与反向代理的作用与配置

正向代理 如果把局域网外的互联网环境想象成一个巨大的资源库&#xff0c;则局域网中的客户端要访问互联网则需要通过代理服务器来访问&#xff0c;这种代理成为正向代理。 示例&#xff1a; 用户想要访问 https://chensir.ink &#xff08;目标服务器&#xff09;&#xff0…

【资源分享】这个网站我愿称之为年度学术最伟大的发现

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验&#xff0c;帮助大家尽早适应研究生生活&#xff0c;尽快了解科研的本质。祝一切顺利&#xff01;—…

Open CASCADE学习|求曲面的参数空间

在三维空间中&#xff0c;任意的曲面都可以通过特定的方法映射到一个二维参数平面上&#xff0c;从而对其进行详细的几何分析和处理。首先&#xff0c;我们需要从三维模型中提取出特定的曲面&#xff0c;这通常被称为“Face”。一个face可以被视为三维空间中的一个封闭区域&…

创建型模式--2.简单工厂模式【人造恶魔果实工厂1】

1. 工厂模式的特点 在海贼王中&#xff0c;作为原王下七武海之一的多弗朗明哥&#xff0c;可以说是新世界最大的流氓头子&#xff0c;拥有无上的权利和无尽的财富。他既是德雷斯罗萨国王又是地下世界的中介&#xff0c;控制着世界各地的诸多产业&#xff0c;人造恶魔果实工厂就…

算法设计与分析实验报告c++java实现(矩阵链连乘、投资问题、完全背包问题、旅行商问题、数字三角形)

一、 实验目的 1&#xff0e;加深学生对算法设计方法的基本思想、基本步骤、基本方法的理解与掌握&#xff1b; 2&#xff0e;提高学生利用课堂所学知识解决实际问题的能力&#xff1b; 3&#xff0e;提高学生综合应用所学知识解决实际问题的能力。 二、实验任务 用动态规…