方法的定义,调用以及重载

方法的定义调用以及重载

定义:

public static void 方法名 ( ) {
// 方法体;
}

演示:

//演示
public static void method ( ) {
// 方法体;
}

调用:

方法名();
method();

注意:方法需要先定义,在调用,否则程序会报错,void表示无返回值,可以省略return,也可以单独的书写return,后面不加数据,方法不能嵌套

无参无返回值方法:

public void methed(){
}

有参返回值方法:

public void methed(int a){
}

无参有返回值:

public int methed(){
}

有参有返回值:

public int methed(int a){
}

注意:方法定义时,多个参数之间使用逗号( ,)分隔

练习:需求:设计一个方法可以获取两个数的较大值,数据来自于参数

public class MethodTest {
public static void main(String[] args) {
//在main()方法中调用定义好的方法并使用变量保存
int result = getMax(10,20);
System.out.println(result);
//在main()方法中调用定义好的方法并直接打印结果
System.out.println(getMax(10,20));
}
//定义一个方法,用于获取两个数字中的较大数
public static int getMax(int a, int b) {
//使用分支语句分两种情况对两个数字的大小关系进行处理
//根据题设分别设置两种情况下对应的返回结果
if(a > b) {
return a;
} else {
return b;
}
}
}

方法参数的实参和形参;

涉及到值传递和址传递。值传递,不影响数值,址传递影响数值,跟JVM工作原理有关,下面演示一下

值传递:

public class Demo {
    public static void main(String[] args) {
        int a = 10;
        Test(a);
        System.out.println(a);

    }
    public static void Test(int a){
        a = 12;
    }
}

结果:

址传递:

public class Demo {
    public static void main(String[] args) {
        int [] arr = {10,20};
        Test(arr);
        System.out.println(arr[0]);

    }
    public static void Test(int [] arr){
        arr[0] = 20;
    }
}

结果:

通过上述测试说明值传递不改变对象的值,址传递改变对象的值

方法的重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载

  多个方法在同一个类中
  多个方法具有相同的方法名
  多个方法的参数不相同,类型不同或者数量不同注意:重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式
  重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两
  个方法是否相互构成重载

示例:

public class MethodDemo {
public static void fn(int a) {
//方法体
}
public static int fn(double a) {
//方法体
}
}
public class MethodDemo {
public static float fn(int a) {
//方法体
}
public static int fn(int a , int b) {
//方法体
}
}

练习:

需求:使用方法重载的思想,设计比较两个整数是否相同的方法,兼容全整数类型(byte,short,int,long)

public class MethodTest {
public static void main(String[] args) {
//调用方法
System.out.println(compare(10, 20));
System.out.println(compare((byte) 10, (byte) 20));
System.out.println(compare((short) 10, (short) 20));
System.out.println(compare(10L, 20L));
}
//int
public static boolean compare(int a, int b) {
System.out.println("int");
return a == b;
}
//byte
public static boolean compare(byte a, byte b) {
System.out.println("byte");
return a == b;
}
//short
public static boolean compare(short a, short b) {
System.out.println("short");
return a == b;
}
//long
public static boolean compare(long a, long b) {
System.out.println("long");
return a == b;
}
}

猜你喜欢

转载自www.cnblogs.com/robinson-coding/p/12525324.html