楼主的理解有一定的道理,我不敢说不对,但的确有点差别。print方法,不管传入什么参数都能输出,其实看API可以发现,System类~out,其实是一个System类里面定义的一个静态常量,这个常量是PrintStream类实例化对象。再去看 PrintStream的方法,可以看到,其实里面的print方法,经过了重写,8种基本数据类型都重写了一次,至于楼主说,方法内部是做了包装类的转换,我觉得应该不是,首先,要输出基本数据类型的话,还要转换成包装类,这就肯定会从一定的程度上加大了系统开销,我觉得方法内部应该是直接做了输出处理的,具体需要看源码。我不确定。手机没办法看源码。。。再来说String,这个在 PrintStream里面 也重写了一个输出String的方法。我觉得应该不应该是单单调用了,toString方法的,因为 PrintStream类里面还有一个重写过的print方法,里面的形参就是Object的,如果String也仅仅是调用了toString的话,就没必要特意为了String重写一个方法了吧?我觉得println(String s)这个方法,内部应该是直接查找并输出字符串常量池里面的字符的。具体还是要看源码。。下面的是println(int i)这个方法的说明。 Prints an integer and then terminate the line. This method behaves as though it invokes print(int) and then println(). |