方法的定义
JAVA语言中的“方法”(Method)在其他语言当中也可能被称为“函数”(Function)。对于一些复杂的代码逻辑,如果希望重复使用这些代码,并且做到“随时任意使用”,那么就可以将这些代码放在一个大括号“{}”当中,并且起一个名字。使用代码的时候,直接找到名字调用即可。
方法头和方法体的定义
定义方法的部分
修饰符: 修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。
方法名: 是方法的实际名称。方法名和参数表共同构成方法签名。
参数类型: 参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变
量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以
不包含任何参数。
方法体:方法体包含具体的语句,定义该方法的功能。
修饰符 返回值类型 方法名 (参数类型 参数名){ *** 方法体 *** }
自定义的方法实例
比大小
public class Max { public static void main(String[] args) { System.out.println(max(20, 20)); } public static int max(int num1,int num2){ int result =0; if (num1==num2){ System.out.println("两数相等"); return 0 ; //返回会输出0 } if(num1>num2){ result = num1; }else{ result = num2; } return result; } }
方法的重载
重载就是在一个类中,有相同的函数名称,但形参不相同的函数
方法重载的规则
- 方法名称必须相同
- 参数列表必须不同(个数不同,或类型不同,参数排列顺序不同等)
- 方法的返回类型不做要求
- 仅仅返回类型不同不足以成为方法的重载
命令行传参
在Dos命令中编译的注意事项:
Dos命令传参遇到的问题
问题一:编码问题
text.java:5: 错误: 编码GBK的不可映射字符
解决: 在编译时改为UTF-8 格式
javac -encoding UTF-8 text.java
问题二:错误: 找不到或无法加载主类 text
解决因为涉及到多个独立库之间的调用,因此要回到根目录下执行
但是编译时需要在最详细的目录下编译,具体到文件
问题三:java text.text This is China
在Dos命令下传入参数-->This is China
即在运行Java 文件后直接导入 参数
源码呈现
package text; public class text { public static void main(String[] args) { for (int i = 0; i < args.length ; i++) { //fori 回车 快速写一个for循环 System.out.println("agr["+i+"]:"+args[i]); } } }
调用可变参数
释意:参数的不确定个数定义(数组的一种呈现)
但一个方法只能定义一个可变参数,且需要定义在该方法参数的最后
可变参数的错误定义
public static int printMax(double...x,int y) 报错: Vararg parameter must be the last in the list
可变参数的正确定义
public class text { public static void main(String[] args) { printMax(12,12,23,34,56,7,8); } public static void printMax(int...number){ int result = 0; result = number[0]; for (int i = 0; i <number.length ; i++) { if (number[i]>result){ result = number[i]; } } //最大值为:56 System.out.println("最大值为:"+result); } }
public void test(int...i) test.test(1,2,3,4,56,7)
对参数i数组化,使其可以只定义一个变量表示多个元素节省变量的定义数量
public class text { public static void main(String[] args) { text test = new text(); test.test(1,2,3,4,56,7); } public void test(int...i){ System.out.println(i[0]); System.out.println(i[1]); System.out.println(i[2]); System.out.println(i[3]); } }
定义静态参数变量的好处(便于调用)
public class text { public static void main(String[] args) { test(1,2,3,4,56,7); } public static void test(int...i) { System.out.println(i[0]); } }
在此部分
public static void main(String[] args) { test(1,2,3,4,56,7); }
可以省去
text test = new text(); test.test(1,2,3,4,56,7);
的定义过程(对新手友好,可以直接调用写好的方法)
方法中的递归思想
示例一:用递归实现阶乘
public class text { public static void main(String[] args) { System.out.println(f(4));//结果为24 } //实现阶乘的递归写法 public static int f(int n){ if (n==1){ return 1; }else{ return n*f(n-1); } } }
实例二:用递归实现累加
public class text { public static void main(String[] args) { System.out.println(f(4));//结果为10 } //实现阶乘的递归写法 public static int f(int n){ if (n==1){ return 1; }else{ return n+f(n-1); } } }