Day06
Day06
一、方法
Java方法是语句的集合,它们在一起执行一个功能。
1、Java方法是语句的集合,它们在一起执行一个功能。
2、方法是解决一类问题的步骤的有序组合
3、方法包含于类或对象中
4、方法在程序中被创建,在其他地方被引用
1、方法的优点
A、使程序变得更简短而清晰。
B、有利于程序维护。
C、可以提高程序开发的效率。
D、提高了代码的重用性。
2、方法的定义
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;
}
- 修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
- 返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。
- 方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
- 参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
- 方法体:方法体包含具体的语句,定义该方法的功能。
编写的位置:类里,方法外
3、方法的分类
A、无参数无返回值的方法
B、有参数的方法
C、有返回值的方法
public class Test{
public static void main(String[] args){
run();
printStar("^");
}
public static void run(){
System.out.println("你跑啊!");
}
public static void printStar(String str){
for (int i=0;i<=6;i++)
{
for (int j=0;j<i;j++)
{
System.out.print(str);
}
System.out.println();
}
}
}
import java.util.Scanner;
public class Test02
{
public static void main(String[] ags){
Scanner sc=new Scanner(System.in);
System.out.println("请输入第一个人数字:");
int a=sc.nextInt();
System.out.println("请输入第二个人数字:");
int b=sc.nextInt();
int result=add(a,b);
System.out.println("最大值为"+result);
}
//方法声明时规定返回值类型
public static int add(int a,int b){
int c=(a>b)?a:b;
//return后接的数据时返回的具体数据,此数据必须和方法声明时的返回值数据类型相兼容
return c;
}
}
//需求:创建一个方法,该方法用于交换两个变量。
public class TestPassByValue {
public static void main(String[] args) {
int num1 = 1;
int num2 = 2;
System.out.println("交换前 num1 的值为:" +
num1 + " ,num2 的值为:" + num2);
// 调用swap方法
swap(num1, num2);
System.out.println("交换后 num1 的值为:" +
num1 + " ,num2 的值为:" + num2);
}
/** 交换两个变量的方法 */
public static void swap(int n1, int n2) {
System.out.println("\t进入 swap 方法");
System.out.println("\t\t交换前 n1 的值为:" + n1
+ ",n2 的值:" + n2);
// 交换 n1 与 n2的值
int temp = n1;
n1 = n2;
n2 = temp;
System.out.println("\t\t交换后 n1 的值为 " + n1
+ ",n2 的值:" + n2);
}
}
4、方法的用法
A、在方法中,需要外界的数据,就可以给方法设置参数。
B、在方法中,需要将方法的执行结果传递到外界,就可以给方法设置返回值。
C、方法不需要外界的数据,也不需要向外界传递数据,就可以将方法设置成无参数无返回值。
5、注意事项
A、方法功能的单一性:一个方法中的功能最好的单一的。
B、方法声明时规定返回值类型。
C、return后接的值必须和方法声明时规定的返回值类型相兼容。
D、一个方法只能返回一个数据。
二、方法的重载
1、在同一个类中,方法名相同,参数列表不同的方法。
参数列表不同:个数不同,数据类型不同
与返回值类型无关。
2、案例
/** 需求1:编写方法,传入两个int值,返回最大值
需求2:编写方法,传入三个int值,返回最大值
需求3:编写方法,传入两个double值,返回最大值
需求4:编写方法,传入三个double值,返回最大值
*/
public class Test{
public static void main(String[] args){
//打印方法注意事项:该方法(getMax)必须有返回值才能打印
System.out.println(getMax(10.1,20.2,30.3));
}
public static int getMax(int a,int b){
return (a>b)?a:b;
}
public static int getMax(int a,int b,int c){
int max = getMax(a,b);//系统会根据参数类型自动找到第1个getMax
max = getMax(max,c);
return max;
}
public static double getMax(double a,double b){
return (a>b)?a:b;
}
public static double getMax(double a,double b,double c){
double max = getMax(a,b);//系统会根据参数类型自动找到第3个getMax
max = getMax(max,c);
return max;
}
public static void method(int i,String str){}
public static void method(String str,int i){}
}
3、习题
//设计一个方法,求N的阶乘
import java.util.Scanner;
public class Test
{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入数字:");
int n=sc.nextInt();
int a=Demo(n);
System.out.println(a);
}
public static int Demo(int n){
if(n!=1){
return Demo(n-1)*n;
}else{
return 1;
}
}
}
//**不死神兔(斐波那契数)
有一对兔子,从出生起后第三个月起每个月都生一对兔子,
小兔子长到第三个月每个月又生一对兔子,假如兔子都不死,
问第n个月的兔子对数为多少?
*/
import java.util.Scanner;
public class Test
{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入第几月:");
int n=sc.nextInt();
int num=rabbit(n);
System.out.println("第"+n+"个月有兔子对数"+num);
}
public static int rabbit(int n){
if(n==1||n==2){
return 1;
}else{
return rabbit(n-1)+rabbit(n-2);
}
}
}
三、变量作用域
变量的范围是程序中该变量可以被引用的部分。
方法内定义的变量被称为局部变量。
局部变量的作用范围从声明开始,直到包含它的块结束。
局部变量必须声明才可以使用。
方法的参数范围涵盖整个方法。参数实际上是一个局部变量。
for循环的初始化部分声明的变量,其作用范围在整个循环。
但循环体内声明的变量其适用范围是从它声明到循环体结束。它包含如下所示的变量声明:

你可以在一个方法里,不同的非嵌套块中多次声明一个具有相同的名称局部变量,但你不能在嵌套块内两次声明局部变量。
浙公网安备 33010602011771号