Java学习日记之05——方法与函数

方法和函数

什么是方法和函数?方法就是完成特定功能的代码块,调用方法可以减少在程序中多次重复写相同的代码

定义格式

创建方法的定义格式::

修饰符+返回值+方法名(参数类型1,参数名1,参数类型2,参数名2){
方法体;
return 返回值;

其中:

修饰符:目前只有一种 public static
返回值:根据返回值决定,没有放回值使用void
参数类型:用于限定调用方法传入时的数据类型
方法体:完成功能的代码;
return:把放回值带回给调用者

方法的调用

方法的调用分为有返回值的调用和无返回值的调用

有返回值的调用

有返回值的调用分为单独调用,输出调用,和赋值调用,返回值的类型通常为int,long,short,char,boolean等

调用类型 优缺点
单独调用 在有返回值的调用中,没有意义
输出调用 直接输出返回值,无法存储返回值
赋值调用 用一个变量接受返回值
/*有返回值的调用,输出调用,在main中使用一个值接受c,则为赋值调用
	 * 求和方法
	 * 两个明确:    //在写方法的时候,需要有两个明确的说明注释
	 * 		返回值类型:int
	 * 		参数列表: int a int b
	 */
	public static int sum(int a,int b) {
		int c = a + b;
		return c;
	}
}

无返回值的调用

无返回值的调用智能使用单独调用输出其值。

//两个明确:
		A:返回值:没有返回值,使用void
		B:参数类型:没有输入参数
public static void printhelloworld() {
		for(int i=1;i<=10;i++) {
			System.out.println("helloworld");
		}
	}
}

方法重载

什么是方法重载?

在同一个类中,其使用的方法的名字是可以相同的,如一个类中,可以使用两个sum的函数,但有以下几点明确的规定:
1.参数列表不可以相同,参数个数不同,参数的类型不同,都可以使得方法区别开来。
2.返回值的类型与方法重载无关。

public static int sum(int a,int b) {
		return a+b;
	}
public static int sum(int a,int b,int c) {
		return a+b+c;
	}
//两个函数都可以叫做sum,但其参数列表不能相同

方法的形式参数和实际参数

什么是形式参数和实际参数

实际参数就是在main方法中定义的参数,当该参数使用到方法中是,变成了形式参数。

基本数据类型中的形式参数与实际参数

在基本数据类型里,如int,short,long,char等,在方法中,引用参数改变,实际参数的值依然不会改变。

public class ArgsDemo {
	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		System.out.println("a:"+a+",b:"+b);
		change(a,b);
		System.out.println("a:"+a+",b:"+b);
	}
	public static void change(int a,int b) {
		System.out.println("a:"+a+",b:"+b);
		a=b;//a=20
		b=a+b;//b=40
		System.out.println("a:"+a+",b:"+b);
	}

}
输出结果:
a:10,b:20
a:10,b:20
a:20,b:40
a:10,b:20

Java学习日记之05——方法与函数

引用数据类型中实际参数和形式参数

引用数据类型中,形式参数的改变将会影响到实际参数。

public class ArgsDemo2 {
	public static void main(String[] args) {
		int[] arr= {1,2,3,4,6};
		for(int x=0;x<arr.length;x++) {
			System.out.print(arr[x]);
		}
		change(arr);
		System.out.println();
		for(int x=0;x<arr.length;x++) {
			System.out.print(arr[x]);
		}
	}
	//两点说明
	//		返回值类型:void
	//		参数列表:int[]
	public static void change(int[] arr) {
		for(int x=0;x<arr.length;x++) {
			if(arr[x]%2==0) {
				arr[x] *=2;
			}
		}
	} 

}
输出结果:
12346
143812

Java学习日记之05——方法与函数

方法的调用

遍历数组

传统方式
/*
 * for(int i =0;i<arr.length;i++) {
 *  System.out.println(arr[i]);
 *  }
 */
 使用方法遍历:
	//两个明确:
	//		返回值:void
	//		参数列表:int[]
	/*
	public static void printarr(int[] arr) {
		for(int i=0;i<arr.length;i++) {
			System.out.println(arr[i]);
		}
	}
	*/
	public static void printarr(int[] arr) {
		System.out.print("["); //print函数不会换行
		for(int i =0;i<arr.length;i++) {
			if(i==arr.length-1) {
				System.out.println(arr[i]+"]");
			}else {
				System.out.print(arr[i]+",");
			}
		}
	}

}

总结

在写方法的时候,一定要搞清楚两个明确:明确返回值的类型,明确参数列表的数据类型,才能写好方法。
基本数据类型和引用数据类型对引用参数的改变和对实际参数造成的影响需要注意。