方法
1.方法概述
1.1什么是方法
- 方法是讲具有独立功能的代码块组织称一个整体,使之成为具有特殊功能的代码集
注意:
- 方法必须先创建后使用,该过程称为方法定义
- 方法创建后并不是直接运行的,需要手动使用后才执行,该过程称为方法调用
package com.itheima_01;
public class MethodDemo {
public static void main(String[] args) {
//调用方法
isEvenNumber();
}
//需求:定义一个方法,在方法中定义一个变量,判断该数据是否是偶数
public static void isEvenNumber(){
//定义变量
int num = 10;
//判断该数是否是偶数
if(num % 2 == 0){
System.out.println("是偶数");
}else {
System.out.println("是奇数");
}
}
}
小案例(带参数):
package com.itheima_01;
/*
* 需求:
* 设计一个方法用于打印两个数字中的较大值,数据来源于方法参数
* 思路:
* 1.定义一个方法,用于打印两个数字中的较大值
* 2.为方法定义两个参数,用于接收两个数字
* 3.使用分支语句分两种情况对两个数字的大小关系进行处理
* 4.在main()方法中调用定义好的方法(使用常量)
* 5.在main()方法中调用定义好的方法(使用变量)
*
* */
public class MethodDemo02 {
public static void main(String[] args) {
//使用常量
getMax(10,20);
//使用变量
int a = 99;
int b = 55;
getMax(a,b);
}
//定义一个方法,用于打印两个数字中的较大值
public static void getMax(int a,int b){
//使用分支语句分两种情况对两个数字的大小关系进行处理
if (a > b){
System.out.println(a);
}else {
System.out.println(b);
}
}
}
1.2方法的通用格式
格式:
public static 返回值类型 方法名(参数){
方法体;
return 数据;
}
定义方法时,要做到两个明确
- 明确返回值类型:主要是明确方法操作完毕之后是否有数据返回,如果没有,写void,如果有,写对应的数据类型
- 明确参数:主要是明确参数的类型和数量
调用方法时
void类型的方法,直接调用即可
非void类型的方法,推荐使用变量接受调用
2.方法重载
2.1方法重载概述
方法重载是指在同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载
- 多个方法在同一个类中
- 多个方法具有相同的方法名
- 多个方法的参数不相同,类型不同或者数量不同
2.2方法重载特点
- 重载仅仅对应方法的定义,和方法的调用无关,调用方式参照标准格式
- 重载仅仅针对同一个类中方法的名称与参数进行识别,和返回值无关,换句话说就是不能通过返回值来确定两个方法是否相互构成重载。在方法调用的时候,JVM会通过参数的不同来区分同名的方法。
//函数重载和返回值无关,下列两个函数没有重载关系
public static void f(int a){
//方法体
}
public static int f(int a ){
//方法体
}
案例:
package com.itheima_01;
public class MethodDemo03 {
public static void main(String[] args) {
//调用方法
int result1 = sum(11,22);
System.out.println(result1);
double result2 = sum(11.1,12.2);
System.out.println(result2);
int result3 = sum(11,22,33);
System.out.println(result3);
}
//需求1:求两个int类型数据和的方法
public static int sum(int a,int b){
return a + b;
}
//需求2:求两个double类型数据和的方法
public static double sum(double a,double b){
return a + b;
}
//需求3:求三个int类型数据和的方法
public static int sum(int a,int b,int c){
return a + b +c;
}
}
3.方法的参数传递
3.1 基本类型的参数传递
对于基本数据类型的参数,形式参数的改变,不影响实际参数的值
package com.itheima_01;
public class MethodDemo04 {
public static void main(String[] args) {
int number = 100;
System.out.println("改变前:"+ number);
change(number);
System.out.println("改变后:"+ number);
}
public static void change(int number){
number = 200;
}
}
//改变前:100
//改变后:100
3.2引用类型的参数传递
对于引用类型的参数,形式参数的改变会影响实际参数的值。
package com.itheima_01;
public class MethodDemo05 {
public static void main(String[] args) {
int[] arr = {10,20,30};
System.out.println("调用change方法前arr[1]:"+arr[1]);
change(arr);
System.out.println("调用change方法后arr[1]:"+arr[1]);
}
public static void change(int[] arr){
arr[1] = 200;
}
}
//调用change方法前arr[1]:20
//调用change方法后arr[1]:200
数组遍历小案例
package com.itheima_01;
public class MethodDemo06 {
public static void main(String[] args) {
int[] arr = {11,22,33,44,55};
//调用遍历方法
printArray(arr);
}
//定义数组通用遍历方式
public static void printArray(int[] arr){
System.out.print("[");
for (int x = 0;x < arr.length;x++){
if (x == arr.length - 1){ //判断是否是最后一个元素来确定加不加逗号
System.out.print(arr[x]);
}else {
System.out.print(arr[x]+",");
}
}
System.out.println("]");
}
}