方法调用完整版

参考:传智播客&黑马程序员

方法调用完整版

回顾–方法的定义和调用

前面的课程中,使用过嵌套循环输出矩形,控制台打印出矩形就可以了,因此将方法定义为 void ,没有返回值。 在主方法 main 中直接被调用。

示例

public class Method_Demo1 {
public static void main(String[] args) {
    print();
}

private static void print() {
    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 8; j++) {
            System.out.print("*");
        }
        System.out.println();
    	}
	}
}

print 方法被 main 方法调用后直接输出结果,而 main 方法并不需要 print 方法的执行结果,所以被定义为 void 。

定义方法的格式详解

修饰符 返回值类型 方法名(参数列表){ 
	//代码省略... 
	return 结果; 
}

几个概念

  • 修饰符: public static 固定写法
  • 返回值类型: 表示方法运行的结果的数据类型,方法执行后将结果返回到调用者
  • 参数列表:方法在运算过程中的未知数据,调用者调用方法时传递
  • return:将方法执行后的结果带给调用者,方法执行到 return ,整体方法运行结束
  • 小贴士:return 结果; 这里的"结果"在开发中,我们正确的叫法成为方法的返回值

定义方法的两个明确

  • 需求:定义方法实现两个整数的求和计算。
    • 明确返回值类型:方法计算的是整数的求和,结果也必然是个整数,返回值类型定义为int类型。
    • 明确参数列表:计算哪两个整数的和,并不清楚,但可以确定是整数,参数列表可以定义两个int类型的变量,由调用者调用方法时传递

示例

public class Method_Demo2 { 
		public static void main(String[] args) { 
		// 调用方法getSum,传递两个整数,这里传递的实际数据又称为实际参数 
		// 并接收方法计算后的结果,返回值 
		int sum = getSum(5, 6); 
		System.out.println(sum); }
		//定义计算两个整数和的方法 
		//返回值类型,计算结果是int 
		//参数:不确定数据求和,定义int参数.参数又称为形式参数 */
		public static int getSum(int a, int b) { 
		return a + b; 
		} 
	}

程序执行,主方法 main 调用 getSum 方法,传递了实际数据 5和6 ,两个变量 a和b 接收到的就是实际参数,并 将计算后的结果返回,主方法 main 中的变量 sum 接收的就是方法的返回值。

调用方法的流程图解
在这里插入图片描述

定义方法练习——比较两个整数是否相同

  • 分析:定义方法实现功能,需要有两个明确,即 返回值 和 参数列表 。
    • 明确返回值:比较整数,比较的结果只有两种可能,相同或不同,因此结果是布尔类型,比较的结果相 同为true。
    • 明确参数列表:比较的两个整数不确定,所以默认定义两个int类型的参数。

示例

public class Method_Demo3 {
    public static void main(String[] args) {
        //调用方法compare,传递两个整数
        // 并接收方法计算后的结果,布尔值
        boolean bool = compare(3, 8);
        System.out.println(bool);
    }

    /* 定义比较两个整数是否相同的方法
    返回值类型,比较的结果布尔类型
    参数:不确定参与比较的两个整数 */
    public static boolean compare(int a, int b) {
        if (a == b) {
            return true;
        } else {
            return false;
        }
    }
}

练习二 计算1+2+3…+100的和

  • 分析:定义方法实现功能,需要有两个明确,即 返回值 和 参数 。
    • 明确返回值:1~100的求和,计算后必然还是整数,返回值类型是int
    • 明确参数:需求中已知到计算的数据,没有未知的数据,不定义参数

示例

public class Method_Demo4 { 
	public static void main(String[] args) { 
		//调用方法getSum 
		//并接收方法计算后的结果,整数 
		int sum = getSum(); 
		System.out.println(sum); 
	}

	/* 
		定义计算1~100的求和方法 
		返回值类型,计算结果整数int 
		参数:没有不确定数据 
	*/
	public static int getSum() {
	//定义变量保存求和 int sum = 0; 
	//从1开始循环,到100结束 
	for (int i = 1; i <= 100; i++) { 
		sum = sum + i; 
		}
		return sum; 
		} 
	}

练习三 实现不定次数打印

  • 分析:定义方法实现功能,需要有两个明确,即 返回值 和 参数 。
    • 明确返回值:方法中打印出 HelloWorld 即可,没有计算结果,返回值类型 void 。
    • 明确参数:打印几次不清楚,参数定义一个整型参数

示例

public class Method_Demo5 { 
	public static void main(String[] args) { 
		//调用方法printHelloWorld,传递整数 
		printHelloWorld(9); 
		}

	/*
	定义打印HelloWorld方法 
	返回值类型,计算没有结果 void 
	参数:不确定打印几次 
	*/
	public static void printHelloWorld(int n) { 
		for (int i = 0; i < n; i++) { 		
			System.out.println("HelloWorld"); 
			} 
		} 
	}

定义方法的注意事项

  • 定义位置,类中,方法外面,不能嵌套。

  • 方法定义的前后顺序无所谓。

  • 如果方法有返回值,那么必须写上“return 返回值;”,不能没有

  • 对于一个void没有返回值的方法,不能写return后面的返回值,只能写return自己。

  • 返回值类型,必须要和 return 语句返回的类型相同,否则编译失败 。

    // 返回值类型要求是int 
    public static int getSum() { 
    	return 5;// 正确,int类型 
    	return 1.2;// 错误,类型不匹配 
    	return true;// 错误,类型不匹配 
    }
    
  • 不能在 return 后面写代码, return 意味着方法结束,所有后面的代码永远不会执行,属于无效代码。

public static int getSum(int a,int b) { 
return a + b;
System.out.println("Hello");
// 错误,return已经结束,这里不会执行,无效代码
}
  • 一个方法当中可以有多个return语句,但是必须保证同时只有一个会被执行到,两个return不能连写。
public class Demo04MethodNotice {

    public static int method1() {
        return 10;
    }

    public static void method2() {
//        return 10; // 错误的写法!方法没有返回值,return后面就不能写返回值。
        return; // 没有返回值,只是结束方法的执行而已。
    }

    public static void method3() {
        System.out.println("AAA");
        System.out.println("BBB");
//        return; // 最后一行的return可以省略不写。
    }

    public static int getMax(int a, int b) {
        /*int max;
        if (a > b) {
            max = a;
        } else {
            max = b;
        }
        return max;*/

        if (a > b) {
            return a;
            // return a;
        } else {
            return b;
        }
    }

}

调用方法的三种形式

  • 直接调用:直接写方法名调用
public static void main(String[] args) { 
	print(); 
	}
public static void print() { 
	System.out.println("方法被调用"); 
	}
  • 赋值调用:调用方法,在方法前面定义变量,接收方法返回值
public static void main(String[] args) { 
	int sum = getSum(5,6); 
	System.out.println(sum); 
}
public static int getSum(int a,int b) { 
	return a + b; 
}
  • 输出语句调用:
    1.在输出语句中调用方法,System.out.println(方法名()) 。
public static void main(String[] args) { 
	System.out.println(getSum(5,6)); 
}
	public static int getSum(int a,int b) { 
		return a + b; 
	}

2.不能用输出语句调用 void 类型的方法。因为方法执行后没有结果,也就打印不出任何内容。

public static void main(String[] args) { 
	System.out.println(printHello());
	// 错误,不能输出语句调用void类型方法 
	}
public static void printHello() { 		
	System.out.println("Hello"); 
}

有参数和无参数

  • 有参数

小括号当中有内容,当一个方法需要一些数据条件,才能完成任务的时候,就是有参数。
例如两个数字相加,必须知道两个数字是各自多少,才能相加。

  • 无参数

小括号当中留空。一个方法不需要任何数据条件,自己就能独立完成任务,就是无参数。
例如定义一个方法,打印固定10次HelloWorld。

public class Demo03MethodParam {

public static void main(String[] args) {
    method1(10, 20);
    System.out.println("==============");
    method2();
}

// 两个数字相乘,做乘法,必须知道两个数字各自是多少,否则无法进行计算
// 有参数
public static void method1(int a, int b) {
    int result = a * b;
    System.out.println("结果是:" + result);
}

// 例如打印输出固定10次文本字符串
public static void method2() {
    for (int i = 0; i < 10; i++) {
        System.out.println("Hello, World!" + i);
    	}
	}
}

有返回值和无返回值

  • 对于有返回值的方法,可以使用单独调用、打印调用或者赋值调用。
  • 但是对于无返回值的方法,只能使用单独调用,不能使用打印调用或者赋值调用。

题目要求:定义一个方法,用来【求出】两个数字之和。(你帮我算,算完之后把结果告诉我。)

题目变形:定义一个方法,用来【打印】两个数字之和。(你来计算,算完之后你自己负责显示结果,不用告诉我。)

public class Demo04MethodReturn {
public static void main(String[] args) {
    // 我是main方法,我来调用你。
    // 我调用你,你来帮我计算一下,算完了之后,把结果告诉我的num变量
    int num = getSum(10, 20);
    System.out.println("返回值是:" + num);
    System.out.println("==============");

    printSum(100, 200);
    System.out.println("==============");

    System.out.println(getSum(2, 3)); // 正确写法
    getSum(3, 5); // 正确写法,但是返回值没有用到
    System.out.println("==============");
// 对于void没有返回值的方法,只能单独,不能打印或者赋值
//        System.out.println(printSum(2, 3)); // 错误写法!
//        System.out.println(void);

//        int num2 = printSum(10, 20); // 错误写法!
//        int num3 = void;
//        void num4 = void;
}
// 我是一个方法,我负责两个数字相加。
// 我有返回值int,谁调用我,我就把计算结果告诉谁
public static int getSum(int a, int b) {
    int result = a + b;
    return result;
}
// 我是一个方法,我负责两个数字相加。
// 我没有返回值,不会把结果告诉任何人,而是我自己进行打印输出。
public static void printSum(int a, int b) {
    int result = a + b;
    System.out.println("结果是:" + result);
	}
}
发布了53 篇原创文章 · 获赞 56 · 访问量 1437

猜你喜欢

转载自blog.csdn.net/duwenyanxiaolaji/article/details/103809463