为什么输出是String而不是Object
来源:互联网 发布:ubuntu 查看用户 编辑:程序博客网 时间:2024/05/01 09:06
前边说了我准备写一下关于java提高的专栏,要怎么提高呢,我觉得要想提高还得从问题入手,我想先把从国外网站上别人提问的问题拿到这里,最后再做一下总结和大家相互探讨一下。。 继前边我翻译一道很不错的字符分割题和数组中的跳跃问题之后,今天我有看到一个比较好的问题,如题目所示。。
原文链接:http://stackoverflow.com/questions/23563212/why-output-string-passed-not-object
下面来看一下问题吧,先上代码:
public class test {public static void main(String[] args) { magic(null);}public static void magic(String s) { System.out.println("String passed");}public static void magic(Object o) { System.out.println("object passed");}}
代码输出是为:
String Passed
但是这是为什么呢,一开始我也很难理解,我感觉编译都会报错。
下面先说一下null吧,Java中,null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。
比如:int a = null;是错误的。Ojbect o = null是正确的,null本身不是对象,也不是Objcet的实例。
null作为一个不确定的对象,按理来说两个方法都可以匹配,但是java中有一个规则:优先匹配具体特殊的。
看以下代码:
public class test { public static void main(String[] args) { magic(null); } public static void magic(Object o) { System.out.println("object passed"); } public static void magic(String s) { System.out.println("String passed"); } public static void magic(Integer s) { System.out.println("Integer passed"); }}
结果会报错,错误如下:
The method magic(Object) is ambiguous for the type test(就是Integer和String相近,无法选择)。
欢迎加我的微博, 我会在微博实时更新文章,交流群:199326422
4 0
- 为什么输出是String而不是Object
- Object中的clone为什么是protected,而不是public?
- 为什么输出是Hello?而不是Hello World?的内存分析
- 为什么是GeoRSS而不是GML
- 为什么是MindPedia,而不是其它
- 为什么是我而不是别人?
- 为什么是string::size_type而不是int?---顺便聊聊无符号数和负数的比较
- 为什么R.string.ID 返回的是一串数字,而不是字符串?
- go结构体中String接口的实现为什么是结构体而不是指针
- 数组传递的是referrence,而不是object
- 为什么推荐std::string而不是char*
- 为什么Java中的HashMap<K, V>的get函数是get(Object key),而不是get(K key)?
- String[]的直接父类就是Object而不是Object[]
- 为什么崛起的是日本而不是中国
- C++为什么是C++而不是++C
- struts2-为什么是struts而不是servlet+jsp
- TCP为什么是三次握手,而不是两次
- 为什么是“深度”学习而不是宽度?
- HDU 4283 You Are the One (区间DP)
- 关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系
- 科技发展中
- Lua与C++的逻辑舞步
- pmon,linux内核,根文件系统问题
- 为什么输出是String而不是Object
- struts2项目简单配置
- 如何选择网站维护时间
- 1到N的平方和公式
- diff和patch使用指南
- 羊年女宝宝名字大全
- Mysql集群一:主从复制,通过mysql-proxy做负载均衡 。
- 标准库 之 nth_element
- 对当前网络路由的一点想法