Java入门-java的方法

java方法

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

方法结构

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

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

程序案例:

java 复制代码
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即为形式参数,名字是可以替换的,规范中建议方法的参数命名能够见名知意:

java 复制代码
public  static int add(int a , int b){

}

(2) 实参

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

程序案例:

java 复制代码
pubic static void main(String[] args){

int x = add(4, 6);

}

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

return a + b;

}

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

不定参数

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

java 复制代码
public void func(类型 ... 形参名称){

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

}

程序案例:

java 复制代码
public static void func(int... a) {

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

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

	}

}

方法的调用

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

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

程序案例:

java 复制代码
pubic static void main(String[] args){

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

 System.out.println(x);

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

}

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

程序案例:

java 复制代码
/**

 * 打印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, 也就是说编译器底层维护的方法名称依然是唯一的。

方法重载的几个必要条件

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

程序案例:

java 复制代码
public static int add(int a, int b) {

  return a + b;

}
java 复制代码
public static int add(int a, int b, int c) {

  return a + b + c;

}

方法递归

概念

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

递归流程

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

  • 找出递归的终止条件

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

程序案例:

计算一个整数的阶乘:

java 复制代码
public static int f(int n) {

if (1 == n) {

	return 1; //递归终止条件

}

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

}

案例解析:

java 复制代码
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)时开始出栈。

相关推荐
浮游本尊38 分钟前
Java学习第22天 - 云原生与容器化
java
渣哥2 小时前
原来 Java 里线程安全集合有这么多种
java
间彧3 小时前
Spring Boot集成Spring Security完整指南
java
间彧3 小时前
Spring Secutiy基本原理及工作流程
java
Java水解4 小时前
JAVA经典面试题附答案(持续更新版)
java·后端·面试
洛小豆6 小时前
在Java中,Integer.parseInt和Integer.valueOf有什么区别
java·后端·面试
前端小张同学6 小时前
服务器上如何搭建jenkins 服务CI/CD😎😎
java·后端
ytadpole7 小时前
Spring Cloud Gateway:一次不规范 URL 引发的路由转发404问题排查
java·后端
华仔啊7 小时前
基于 RuoYi-Vue 轻松实现单用户登录功能,亲测有效
java·vue.js·后端