编译时引用类型由声明该变量时使用的类型决定,运行时引用类型由实际赋给该变量的对象决定。
比如:Object s = new String("example")
Object 是引用的编译时类型,String是引用的运行时类型。其中后者必须是前者的子类,编译时只能调用编译类型的方法,运行时才能调用运行时类型的方法。
基本数据类类型存的是数值本身,而引用类型变量在内存放的是数据的引用,并不是数据的本身,引用类型变量是以间接方式去获取数据。引用类型变量都属于对象类型,如:数组、类、字符串等都属于引用类型变量。所以,引用类型变量里面存放的是数据的地址。说白了基本数据类型变量就像是直接放在柜子里的东西,而引用数据类型变量就是这个柜子对应编码的钥匙。钥匙号和柜子对应。