黑马程序员技术交流社区
标题:
关于静态导入
[打印本页]
作者:
papercup
时间:
2014-3-28 13:39
标题:
关于静态导入
本帖最后由 papercup 于 2014-3-28 16:48 编辑
import java.util.*;
import static java.util.Arrays.*;
public class Test22 {
public static void main (String[] args){
int[] arr = {5,6,2,4};
sort(arr);
int index = binarySearch(arr,4);
System.out.println(Arrays.toString(arr));//这里写为:System.out.println(toString(arr)); 为什么不对呢?不是已经导入了吗?
System.out.println("Index = "+index);
}
}
复制代码
关于静态导入的问题。还有视频中毕老师继承了Object类有什么特殊作用呢?求大神解答!
作者:
蓝枫
时间:
2014-3-28 13:50
<font size="4">Test22 继承了 Object类
Object类中有toString()方法
而Arrays中也有toString()方法。
当你在运行的时候,不明确调用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
我知道了,在类中定义的函数是用函数名直接调用的,而当我们导入的静态函数和类中定义的函数相同时,是直接调用类中的函数的,不会调用我们导入的静态函数,就像这样
package com.blog;
public class blog9{
public static void run(int d){
}
}
package com.blog;
import static com.blog.blog9.run;
public class blog8{
public void main(String[]args){
run(6);//这里调用失败,因为类中已经定义了一个run()函数,所以不会再调用导入的同名的静态函数
}
public void run(){
}
}
复制代码
作者:
yanzhendong
时间:
2014-3-28 15:52
而你的test22类默认已经继承了Object类,所以你的类继承了Object的toString()方法,所以在你的类中调用toString方法时,是调用的从Object类中继承来的toString()方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2