}
public static void sayHello(Serializable arg) {
System.out.println("hello Serializable");
}
public static void sayHello(Object arg) {
System.out.println("hello Object");
}
public static void sayHello(char... arg) {
System.out.println("hello char……");
}
public static void main(String[] args) {
sayHello('a');
// 运行结果为hello int
//代码我给排序了,不要误解为从上往下查找哈,当找不到的情况下,实参会自动类型提示,这个查了类型自动提升过程为 char,int,long,Character,Serializable,Object,char []
}
}
```
-
- 动态分派
- 虚方法
- 指向常量池中的方法的符号引用
## 初始化
- 类的加载、验证、准备、初始化是先后开始的 , 多是在初始化之前 , 加载 , 验证 , 准备必然是已经开始了 。
初始化阶段(Cinit<>)对static类变量赋初始值(非零值)
- 初始化的5个时机
- new / putstatic(调用类的static方法或static字段(非final static)的时候)
- 子类初始化的时候如果父类没有初始化 , 那么父类会初始化
- main入口方法对应的类
- 反射
- ...忘记了
- 3种容易误以为会初始化的情况
- 子类.父类static 属性
- 这种情况只会初始化父类 , 不会初始化子类
- 数组元素是类类型 , 那么这种类类型不会初始化 , 除非实例化数组元素
- 访问类的final static属性 。那么这个类是不会初始化的 , 因为final static在编译阶段就会直接保存到常量池中 , 如果用到final static属性 , 也只是宏替代 。
推荐阅读
- Python接入不同类型数据库的通用接口方法
- 鱼类在死亡后,为什么大多都会肚皮朝天?
- 冬奥会|再见!明起冰墩墩停产 想买的抓紧了:各类特许商品持续销售到9月
- |麝香钓鱼有效果吗?麝香、白酒和糖类在钓鱼时的相互作用关系
- 古代铜镜做什么用,古代铜镜制作过程-
- 牛蒡茶不适合什么人喝?四类人群不宜饮用牛蒡茶
- 小孩拔牙好吗
- 智能手机|男子坐地铁被陌生小男孩拔腿毛玩 手机记录全过程引热议:你怎么看?
- 胎儿先心病
- 世界历史上的五大灾难,人类历史上的十大灾难排名-