黑马程序员技术交流社区

标题: 关于静态导入 [打印本页]

作者: papercup    时间: 2014-3-28 13:39
标题: 关于静态导入
本帖最后由 papercup 于 2014-3-28 16:48 编辑
  1. import java.util.*;
  2. import static java.util.Arrays.*;
  3. public class Test22 {
  4.         public static void main (String[] args){
  5.                 int[] arr = {5,6,2,4};
  6.                 sort(arr);
  7.                 int index = binarySearch(arr,4);
  8.                 System.out.println(Arrays.toString(arr));//这里写为:System.out.println(toString(arr));    为什么不对呢?不是已经导入了吗?
  9.                 System.out.println("Index = "+index);
  10.         }

  11. }
复制代码
关于静态导入的问题。还有视频中毕老师继承了Object类有什么特殊作用呢?求大神解答!

作者: 蓝枫    时间: 2014-3-28 13:50
  1. <font size="4">Test22  继承了  Object类
  2. Object类中有toString()方法
  3. 而Arrays中也有toString()方法。
  4. 当你在运行的时候,不明确调用Object类中有toString()方法,还是Arrays中的toString()方法。所以必须明确!</font>
复制代码

作者: ヽし☆ve    时间: 2014-3-28 14:11
调用toString方法,应该写明谁调用的吧。test22也有个toString方法
作者: yanzhendong    时间: 2014-3-28 15:22
刚测试了下,只要和Object类中同名的静态方法都要通过类名.方法名的方式调用,不和Object类中同名的静态方法通过静态导入后可以直接调用,
作者: yanzhendong    时间: 2014-3-28 15:49
我知道了,在类中定义的函数是用函数名直接调用的,而当我们导入的静态函数和类中定义的函数相同时,是直接调用类中的函数的,不会调用我们导入的静态函数,就像这样
  1. package com.blog;
  2. public class blog9{
  3.         public static void run(int d){
  4.                
  5.         }
  6.        
  7. }



  8. package com.blog;

  9. import static com.blog.blog9.run;
  10. public class blog8{
  11. public void main(String[]args){
  12.         run(6);//这里调用失败,因为类中已经定义了一个run()函数,所以不会再调用导入的同名的静态函数
  13.        
  14. }
  15. public void run(){
  16.        
  17. }
  18. }
复制代码

作者: yanzhendong    时间: 2014-3-28 15:52
而你的test22类默认已经继承了Object类,所以你的类继承了Object的toString()方法,所以在你的类中调用toString方法时,是调用的从Object类中继承来的toString()方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2