关注「Java视界」公众号,获取更多技术干货

JAVA基础(九)------ 方法重载、值传递、引用传递、形参、实参、可变参数

方法重载只需要把握住下面几个重点:

(1)在同一个类中,方法名称相同,参数类型或个数不同的方法就是重载方法;

public static int sum(int x, int y){
    return x + y;
}
public static int sum(int x, int y, int z){
    return x + y + z;
}
public static double sum(int x, double y){
    return x + y;
}

(2)方法重载与返回值类型无关;(虽然支持返回值不同,但是建议重载的方法返回值类型统一,最好不要每个重载方法的返回值类不一样)

(3)System.out.println就是一个重载方法

System.out.println(1);
System.out.println(1.1);
System.out.println(true);
System.out.println('A');
System.out.println("Hello World!");

ps:

需要注意一点,那就是参数的顺序不同是否构成重载?答案是不一定。

int m(int x,int y)

int m(int y,int x)

上面这两个就不构成重载,编译器无法区别它们。但是看下面:

int fun( int x, char y )

int fun( char y, int x )
 public int getI(String i, int j, String k) { }

 public int getI(int j, String i, String k) { }

这几个就是重载。

因此顺序不同时还有看参数类型是否相同。

 总结:

  • 两同:同一个类中,方法名称相同
  • 三不同:参数列表的参数的类型,个数,顺序不同
  • 返回值不同构不能方法得载
  • 形参名称不同构不成方法重载

java中使用值传递还是引用传递?

是值传递。Java语言的方法调用只支持参数的值传递。

值传递的时候,将实参的值,copy一份给形参;引用传递的时候,将实参的地址值,copy一份给形参。

按值传递:值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。简单来说就是直接复制了一份数据过去,因为是直接复制,所以这种方式在传递时如果数据量非常大的话,运行效率自然就变低了,所以java在传递数据量很小的数据是值传递。

另外一种是按引用传递:引用传递其实就弥补了上面说的不足,如果每次传参数的时候都复制一份的话,如果这个参数占用的内存空间太大的话,运行效率会很底下,所以引用传递就是直接把内存地址传过去,也就是说引用传递时,操作的其实都是源数据。对象引用实际上进行的是值传递,只是拷贝了引用的值罢了,之所以能修改引用数据是因为它们同时指向了一个对象,但这仍然是按值调用而不是引用调用。

     

    

可变参数的作用及用法

可变长参数(varargs),适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理,对于同一方法可以使用不同个数的参数调用,例如print("hello");print("hello","lisi");print("hello","张三","alexia")

1、可变参数定义

2、可变长参数的方法的调用

3、可变长参数的使用规则

(1)在调用方法的时候,如果能够和固定参数的方法匹配,也能够与可变长参数的方法匹配,则选择固定参数的方法。

(2)如果要调用的方法可以和两个可变参数匹配,则出现错误

(3)一个方法只能有一个可变长参数,并且这个可变长参数必须是该方法的最后一个参数,即只能出现在参数列表的最后。

举例:

    @Test
    public void test1() {
        print("1");
        print("2", "3");
        print("4", "5", "6");
    }

    private void print(String ... args){
        for (int i=0; i<args.length; i++){
            Console.log(args[i]);
        }
    };
1
2
3
4
5
6

如何给main方法传递实参?

main方法是java程序的入口,其参数:String args[] 是一个数组,用来接收从程序执行的位置接收参数,添加参数的方法如下:

posted @ 2022-06-25 14:03  沙滩de流沙  阅读(52)  评论(0编辑  收藏  举报

关注「Java视界」公众号,获取更多技术干货