Java的方法类似于其他语言否认函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法含一下语法:
方法包含一个方法头和一个方法体。下面是一个方法的所有部分:
修饰符:修饰符,这是可选的,负责告诉编译器应该如何调用,和控制访问类型。
返回值类型:方法可能会返回值,returnValueType是方法返回值的数据类型;有些方法没有返回值时,returnValueType用void。
方法名:是方法的实际名字。方法名和参数共同构成方法的签名。
参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指参数的参数类型,顺序和参数的个数。参数是课选的,方法可以不包含任何参数。
方法体:方法体包含具体的语句,定义该方法的功能。
修饰符 返回值类型 方法名 (参数类型){
...
方法体
...
return 返回值;
}
示例:
//这里我们写一个加法的方法来演示
public class Demo01 {
public static void main(String[] args) {
//调用add方法
int sum = add(1,2);//这里的1,2就是实际参数:实际调用传递给他的参数
System.out.println(sum);//打印结果
}
//这是加法的方法
//public和static都是修饰符,int是返回类型,add是方法名,括号里面a,b是形式参数
public static int add(int a,int b){
return a+b;//a+b的值作为返回值
}
}
结果肯定是3咯。
示例:
//这里演示add方法的重载
public class Demo02 {
public static void main(String[] args) {
//调用add方法
int sum = add(1,2);//这里的1,2就是实际参数:实际调用传递给他的参数
double sum2 = add(0.2,0.4);
System.out.println(sum);//打印结果
System.out.println(sum2);
}
//这是加法的计算整数方法
//public和static都是修饰符,int是返回类型,add是方法名,括号里面a,b是形式参数
public static int add(int a,int b){
return a+b;//a+b的值作为返回值
}
//这里是计算小数相加得到重载方法,注意对比区别
public static double add(double a,double b){
return a+b;
}
}
示例:
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]);
}
}
}
然后我们右键单击Demo03在命令行里打开
输入javac Demo03,但是这里出现了一个编码DBK的错误
所以我们要在javac后面加上- encoding UTF -8,现在生成了一个.class文件
这个文件需要在src路径下才能运行,因为文件里面有包地址,所以我们返回src目录下,输入java SE3.Demo03.
在运行过程中我们传入参数this is input,结果如图:
这就是命令行传参,一般不常用到。
从JDK1.5开始,Java支持传递同类型的可变参数给一个方法
在方法声明中,在指定参数类型后加一个省略号(...)
一个方法中只能指定一个可变参数,他必须是方法最后的一个参数。任何普通的参数必须在他之前声明。
//可变参数演示
public class Demo04 {
public static void main(String[] args) {
Demo04 demo04 = new Demo04();//这里要调用test方法需要先创建Demo04类
demo04.test(1.0,2,5,4,9,4,5,87,9,5);//调用Demo04两类里面的test方法
}
public void test(double i,int... j){
if (j.length==0){//判断j有没有输入
System.out.println("j没有传入值");
return;//退出方法
}
System.out.println(i);
for (int k = 0; k <j.length ; k++) {
System.out.println(j[k]);
}
}
}
结果如图
注意:如果上面代码中方法中参数j放在参数i前面就会报错,像这样:
示例:
//递归演示
public class Demo05 {
//这里我们编写一个计算阶乘的递归算法
public static void main(String[] args) {
Demo05 demo05 = new Demo05();//创建对象
System.out.println(demo05.f(5));//计算5的阶乘
}
//递归方法
public int f(int n){
if(n==1){//边界条件
return 1;
}else {
return n*f(n-1);//递归
}
}
}
这里我们分析一下:
这个算法就像这个图一样,从main方法开始,进入f(5),f(4),直到f(1)遇到边界条件然后返回值相乘。
注意:递归我们最重要的是学习这种思想,这种方式在计算量大的情况下会造成栈溢出。
这篇文章是个人的学习日记,期待大佬指正!
{{uploading-image-486281.png(uploading...)}}
原文:https://www.cnblogs.com/YYwantMore/p/14392609.html