6.1 何谓方法
- 何为方法
- 方法的定义及调用
- 方法重载
- 命令行传参
- 可变参数
- 递归
- System.out.println() 这就是方法
- Java 方法是语句的集合,它们在一起执行一个功能。
- 方法是解决一类问题 步骤的有序代码组合
- 方法包含于 类 中。(具化对象中)
- 方法在程序中被 创建,在其他地方被 引用
- 设计方法的原则:方法其实就是功能模块,为了实现某个功能的语句的集合。所以我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成 1 个功能,这样利于我们后期的扩展。
- 方法命名规则:首字母小写,驼峰原则!
6.1.1 简单创建方法
package method;
public class 什么是方法 {
//main 方法 是 java 默认提供的
public static void main(String[] args) {
System.out.println(add(1,3));
}
//简单加法
public static int add(int a,int b)
{
//static 表示 是静态变量,属于这个类,那么我们就不需要具象化一个对象出来才能调用了。我们直接 在这个类里面 拿过去 调用就行。
return a + b;
}
}
6.2 方法的定义
- Java 的放啊类似于面向过程的函数,是一段用来完成特定功能的代码片段。
- 方法包含一个 方法头 和一个方法体。下面是一个方法的在定义时,所有组成部分。
- 修饰符:这是可选的,告诉编译器 应该如何调用该方法,一般会定义该方法的访问范围以及访问类型。
- 返回值类型:方法可能有返回值,也可能没有返回值。返回值 统统用 return 来进行返回,当方法执行结束后,会返回给程序一个值或者不返回值,这个值 就叫做 “返回值”,在方法内部 统统用 return 来进行返回,该值的数据类型,与方法名前面的类型是一致的。
- 方法名:就好比一个事物一样,必须要有一个名字,我们才能调用它,一般 方法名 出现在 方法头部的 返回值类型名后面。
- 参数类型:参数就像一个占位符一样,当方法被调用的时候,必须传递给参数值(数据),来协助该方法完成相应的功能。而这些值不是瞎传的,它们具有固定的数据类型。顺序,个数。所以 你传递值的时候,一定要注意,该方法 让传递的每一个参数,数据类型是什么?传递的值 也被称为 实参。传递的值,只要数据类型一致,就可以随意传递。
- 形参:当传递给方法数据之后,方法会在内部产生一个形式参数(变量),被叫为 “形参”,形参只在方法内有效,而且与实参完全是两个东西!它是根据实参传递过来的值(数据),进行开辟临时空间,把值赋予给临时空间的临时变量,或临时参数。 所以它是一个新的变量,新的临时空间。它所做的任何操作,都和实参完全没有一点儿关系!!!!
- 方法体:方法体包含具体的语句集合,是定义该方法功能的地方。(方法体 由 {} 包括起来)
- 方法的定义
//比大小
/*修饰符*/public static /*返回值类型*/int /*方法名*/max(int a/*整数参数①*/,int b/*整数参数②*/)
{
/*方法体*/
if(a>b)
return a;
else return b;
}
- 方法的调用
package method;
public class 方法的定义和调用 {
public static void main(String[] args) {
System.out.println(max(1,8));
}
//比大小
/*修饰符*/public static /*返回值类型*/int /*方法名*/max(int a/*整数参数①*/,int b/*整数参数②*/)
{
/*方法体*/
if(a>b)
return a;
else return b;
}
}
6.2.1 return 具有终止 作用
return value; 是可以返回值的。然而它还有个特性!
return 之后,就会直接到函数的尾部。代表着函数结束!
所以 通常我们 在方法中,也会利用 return 来进行 方法的终止。(就跟 break 在 循环体 里面的 效果是 一样的!)
package method;
public class 方法的定义和调用 {
public static void main(String[] args) {
System.out.println(max(1,8));
System.out.println(max(1,1));
}
//比大小
/*修饰符*/public static /*返回值类型*/int /*方法名*/max(int a/*整数参数①*/,int b/*整数参数②*/)
{
/*方法体*/
if(a==b)
{
System.out.println(a+"=="+b);
return a;//我们在这里进行 终止
}
if(a>b)
return a;//终止 并且 返回
else return b;//终止 并且 返回
}
}
6.2.1 形参和实参的问题
- swap 替换方法的编写
//swap 替换
public static void tiHuan(int a,int b)
{
int temp = a;
a = b;
b = temp;
}
你会发现 还是 5 和 1 并没有 替换!这是因为 在 方法内部我们替换的是 形参,而在 外部 实参并没有改变!
Java 里 把这种传参方式,称之为 "值传递"
只有引用传递,才会实时 改变 实参!(因为引用传递,传递的实际上 内存空间的 地址!)