java学习笔记day6【方法】

it2024-10-10  41

一、方法

方法:

是语句的集合,组成在一起执行一个功能。包含于类或者对象中在程序中被创建,在其他地方被调用

方法设计的原则:一个方法只完成一个功能【方法的原子性】,有利于后期扩展。

变量的命名规范;

所有的变量、方法、类名,见名知意局部变量、类成员变量、方法名:首字母小写和驼峰原则:monthSalary,除了第一个单词意外所有的首字母都大写常量:大写字母和下划线:MAX_VALUE类名:首字母大写和驼峰原则:GoodMan

方法定义:只有把这个add方法用修饰符static定义成类方法才能在类中引用

1.方法定义

语法:

修饰符 返回值类型 方法名(参数类型 参数名){ 方法体 ``` return 返回值;

} 参数分类:

形参:相当于一个占位符

实参:实际调用时传递的参数

2.方法调用

当方法有返回值的时候,方法调用会被当做一个值来处理。当方法没有返回值的时候,方法调用是一条语句

代码实例:

这里可以理解一下,在方法中碰到return之后方法就结束了,后面就不会执行了。

package com.javastudy.method; public class Demo02 { public static void main(String[] args) { int c=max(1,1); System.out.println(c); } //比大小 public static int max(int a,int b){ int result=0; if (a==b){ System.out.println("a=b"); return 0;//return除了返回值,还可以终止方法, // 程序在方法里面执行到return这一步就结束了,后面就不跑了。 } if (a>b){ result=a; }else { result=b; } return result; } } 输出; a=b 0

3.方法重载

方法重载;在一个类中,有相同的函数名称但是形参不同的函数。

方法重载的原则;

方法名必须相同参数列表必须不同方法返回值类型可以相同也可以不同仅仅方法返回值类型不同不足以成为方法重载

方法重载后编译器会根据调用方法的参数个数,参数类型,逐个匹配对应的方法,如果匹配失败,编译器会报错。

4.命令行传参(了解)

package com.javastudy.method; public class Demo03 { public static void main(String[] args) { //args.length是数组长度 for (int i = 0; i < args.length; i++) { System.out.println("args["+i+"]:"+args[i]); } } }

打开程序所在文件

在文件夹下打开命令行,用javac去编译文件

如图所示,出现了一个错误,最后查找资料加上红框内的代码编译成功

编译出class文件后去执行,编译的时候不需要加包名,但是执行的时候一定要把包名写上

5.可变参数

JDK1.5以后引入的,当你不知道要传几个参数时,就定义一个可变长的参数。

定义方法:在方法声明中,指定参数类型后加个省略号

注意:一个方法中只能指定一个可变长的参数,并且这个可变长参数必须是方法的最后一个参数,任何普通参数必须在他之前声明。

package com.javastudy.method; public class Demo04 { public static void main(String[] args) { Demo04 demo04=new Demo04(); demo04.test(1,2,3);//这里具体传值个数是可变的 } public void test(int... i){//这地方去声明一个可变长参数 for (int j=0;j<i.length;j++){ System.out.println(i[j]); } } } 输出: 1 2 3

再来看一个例子去理解一下这个可变长参数

package com.javastudy.method; public class Demo04 { public static void main(String[] args) { //调用可变参数的方法 printMax(24,52,6,4,8,6,32,44,59);//这个地方我传多少个参数都可以 printMax(new double[]{1,2,3});//这里是传了一个数组 } public static void printMax(double...numbers){ if (numbers.length==0){ System.out.println("没有数据输入"); return; } double result=numbers[0]; //排序 for (int i=1;i<numbers.length;i++){ if (numbers[i]>result){ result=numbers[i]; } } System.out.println("最大值是"+result); } } 输出: 最大值是59.0 最大值是3.0

二、递归

递归:A方法自己调用自己

递归结构包括两个部分:

递归头:什么时候不调用自身方法,如果没有就会陷入死循环。递归体:什么时候需要调用自身方法。

代码实例:

package com.javastudy.method; import java.util.Scanner; public class Demo05 { //计算阶乘 public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入数字:"); int number=scanner.nextInt(); System.out.println(f(number)); scanner.close(); } //5! 5*f(4) //f(4)=4*f(3) //f(3)=3*f(2) //f(2)=2*f(1) public static int f(int n){ if (n==1){ return 1; }else { return n*f(n-1); } } } 请输入数字: 5 120

以5!为例,递归原理:

缺点:如果递归层次比较大,会导致栈溢出,能不用递归就不用递归。

最新回复(0)