Java SE入门(四)——函数与方法

iwehdio的博客园:https://www.cnblogs.com/iwehdio/

1、方法

解决代码重复的问题,是完成特定功能的代码块

  • 定义格式:
//定义格式
/*
修饰符 返回值类型 方法名(参数类型 参数1,参数类型 参数2,...){
	方法体;
	return 返回值;
}
修饰符:如public static;
返回值类型:返回值的数据类型;
参数类型:调用方法时,传入的数据类型
*/

public static int sum(int a,int b){
    int c = a + b;
    return c;
}
  • 写方法前:

    • 明确返回值类型,明确功能结果的数据类型。
    • 明确参数列表,明显参数的个数和类型。
  • 方法调用

    • 只有明确返回值的方法调用:单独调用没有意义,可以输出调用,应该赋值输出。
  • 求和方法及调用

public static void main(String[] args) {
	int res = sum(10,20);
	System.out.println(res);
}
	
public static int sum(int a, int b){
	int c = a + b;
	return c;
}
  • void修饰符

    • 用于没有明确返回值类型的方法,表示无返回值。
    • 调用时只能单独调用。
  • 方法的参数如果是基本数据类型,形式参数的改变不影响实际参数。

    • 实际参数:实际参与运算的变量。
    • 形式参数:方法中用于接收实际参数的变量。
  • 方法区存储了类的字节码文件,其中包含了类下的方法。

    • 调用时方法加载到栈内存。
    • 方法调用完成后,从栈内存中消失。
  • 方法的参数如果是引用数据类型,形式参数的改变直接影响实际参数。

  • 方法的参数是引用数据类型(如数组)时,方法接收的实际上是数组的地址,对数组进行操作直接改变了数组地址指向的堆内存中的数组的值。

  • 数组求和

    public static void main(String[] args) {
    	int[] arr = {5,6,7,8,9};
    	System.out.println(sumarr(arr));
    }
    public static int sumarr(int[] arr){
    	int sum = 0;
    	for(int i=0;i<arr.length;i++){
    		sum += arr[i];
    	}
    	return sum;
    }
    

2、重载

同一个类中出现了方法名相同的现象

  • 方法名相同,且参数列表不同(参数的个数不同或参数对应的数据类型不同)。

  • 与返回值无关。

  • 在调用方法时,Java通过参数列表不同来区分方法。

  • 可以通过强制转换来调用不同的重载方法。

  • 不同类型数组求和(重载)

    public static void main(String[] args) {
    	System.out.println(sum(2,3));
    	System.out.println(sum(2.2F,2.1F));
    }
        
    public static int sum(int a,int b){
    	return a + b;
    }	
        
    public static float sum(float a, float b){
    	return a + b;
    }
    

3、断点调试

  1. 查看程序的执行流程。
  2. 调试程序。
  • Eclipse如何加断点:代码和行号左边双击。

  • 代码区域 > 右键 > Debug As > Java Application > 选择进入Debug视图。

  • 进入Debug视图后,点 Step over(F6)单步执行。

    • Debug区域:程序的执行流程;
    • Variables:变量的变换;
    • Console:程序的输入输出。
  • 去除多个断点:Debug视图下的Breakpoint下的双×按钮。

  • 要查看被调用方法的执行流程,需要在被调用方法中也添加断点。

4、基础语法

  • case穿透,忘写break会一直向下执行直到遇到break。

    switch (month) {
    case 3:
    case 4:
    case 5:
    	System.out.println('春');
    	break;
    case 6:
    case 7:
    case 8:
    	System.out.println('夏');
    	break;
    case 9:
    case 10:
    case 11:
    	System.out.println('秋');
    	break;
    case 12:
    case 1:
    case 2:
    	System.out.println('冬');
    	break;
    default:
    	System.out.println("误");
    	break;
    }
    
  • 数组反转

    public class Arr_resever {
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		int[] arr = new int[5];
    		for(int x =0;x<5;x++){
    			arr[x]=sc.nextInt();
    		}
    		print_arr(arr);
    		reserve_arr(arr);
    		print_arr(arr);
    	}
    	public static void reserve_arr(int[] arr){
    		for(int s=0,e=arr.length-1;s<=e;s++,e--){
    			int temp = arr[s];
    			arr[s] = arr[e];
    			arr[e] = temp;
    		}
    	}
    	public static void print_arr(int[] arr){
    		System.out.print("[");
    		for(int x=0;x<arr.length;x++){
    			if(x==arr.length-1){
    				System.out.println(arr[x]+"]");
    			}else{
    				System.out.print(arr[x]+", ");
    			}
    		}
    	}
    }
    

iwehdio的博客园:https://www.cnblogs.com/iwehdio/

原文地址:https://www.cnblogs.com/iwehdio/p/12196177.html