java重载时自动转换咋回事

当一个重载的方法被调用时,Java在调用方法的参数和方法的自变量之间寻找匹配。 
但是,这种匹配并不总是精确的。只有在找不到精确匹配时,Java的自动转换才会起作用。 (如果定义了test(int),当然先调用test(int)而不会调用test(double)。 )
马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。

本章源码



//自动类型转换 Automatic type conversions() apply to overloading.

class Overl {
    // Overload test for two integer parameters.
    void test(int a, int b) {
        System.out.println("a and b: " + a + " " + b);
    }

    // overload test for a double parameter
    void test(double a) {
        System.out.println("Inside test(double) a: " + a);
    }
}

public class Test {
    public static void main(String args[]) {
        Overl ob = new Overl();
        int i = 80;
        ob.test(i); // 没有int类型,所以调用double类型的自动转换。this will invoke test(double)
        ob.test(555.5); // 准确调用,this will invoke test(double)
        ob.test(5, 8);//准确调用
    }
}

result结果 is:


Inside test(double) a: 80.0
Inside test(double) a: 555.5
a and b: 5 8

Assignment: practice overload, make two methods,add(int a,int b), add(int a,int b,int c) 




3.一个对象可能有多个参考(One Object can have many Reference)
AClass one = new AClass();one就是这个对象的参考,有点类似指针的概念。指向生成的对象。java中不叫pointer,叫reference。为什么叫参考 呢?比如在我的书中我说,你要不懂,可以参考一下abc那本书,顺着我的指引,你就知道世界上还有abc这本书。悟出"参考"和指针之间的关系了吗?

本章源码
class PointClass {
    int length;

    void setLength(int n) {
        length = n;
    }

    int getLength() {
        return length;
    }
}

public class Test {
    public static void main(String[] args) {
        PointClass p1 = new PointClass();//p1指向生成的对象。
        PointClass p2 = p1;//p2指向p1
        PointClass p3 = new PointClass();//p3是新的
        p1.setLength(10);
        System.out.println("p1: " + p1.getLength());
        System.out.println("p2: " + p2.getLength());
        System.out.println("p3: " + p3.getLength());
    }
}





result is:

p1: 10
p2: 10
p3: 0