一个java问题,有兴趣的来! 包import 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 跟classpath毛关系都没有。具体使用的是哪个类,是编译期就决定了的,并非运行时决定的。 是这样啊,那为啥我import xxxx.*使用的就是本包中的类,import xxx.xxx.class写具体了使用的就是另一个包中的类 类似楼主引用类的问题,我曾经遇到过。当时写的程序类里,明明都已经import了相关的类了,但在实例化使用变量的方法时候,一大堆红叉,花了大把时间,后来也是把路径引用直接指向跟文件,就ok了。java编译器的查找解析顺序是这样的,package -》 import -》 class -》然后具体的类方法具体的原理,我推荐你看这本书《深入理解java虚拟机》。这本书看了两遍模模糊糊,希望楼主通过阅读此书找到答案通知我下!谢谢。 随便搞个例子试下就好,一个import .*,另一个import .class写完整了 其实,通过这样的案例,深刻地告诉我们程序员。就算代码写得准确无误,一旦逻辑出现问题,一切等于白搭。所以,testing时带着怀疑的看法,推荐一本书《程序员的职业素养》 顺序是:全名->本包->import你的情况:一个项目中有两个包:org.mrtwo.pack01 --- 包中有一个类Testorg.mrtwo.pack02 --- 包中有两个类Test和Demo,其中Demo为主类,内容如下:首先你代码里的Test类全名是org.mrtwo.pack02.Test,全名搜索你的代码里不存在这个类,于是转向第二个本包搜索。由于你Test和Demo都在org.mrtwo.pack02包下,找到,所以再进行import搜索。所以在import org.mrtwo.pack01.*的情况下,编译后的Test是pack02,也就是本包搜索的类。同样的,如果你写下import org.mrtwo.pack01.Test,那么在第一部全名搜索的时候就已经搜索到Test类,那么编译后的Test类就是pack01下的 如果导入的包和本包内有重复的类名jvm是随机实例化的,也就是也可能是实例化包1也可能是实例化包2内的Test类,所以为了避免这个情况在有相同类名的情况下实例化应该写全包名例:package pack2;import pack1.Test;public class Test{public void main(String[] args){pack1.Test t1 = new pack1.Test();pack2.Test t2 = new pack2.Test();}} 应该是跟变量的道理是一个样的,你在main中声明一个变量,在main里面弄个块再次声明相同名字变量,这是也是可以的,只不过会就近的使用该变量并覆盖外面的,要使用之前被覆盖的话就要使用完全名或者什么this,super(看情况而定) 1、首先在你编写代码时,IDE就开始校验,Test类路径,首先他找到是和你Demo同级路径的Test。如果当前包,没有找到,他才回提示你。需要引入外部包。 额,不知道我的理解对不对,我觉得应该是和ClassLoader有关,java中的类都是通过ClassLoader来加载的,java为了避免用户重名类覆盖基本类,总是先搜索JDK自带的类。 麻烦问一下,全名搜索是什么?我一直认为的是编译的时候需要一个类,现在本包中获得,如果没有再看import导入的类,但是问题就是import pack01.*;跟import pack01.Test不同,貌似后者是优先于包查找的,这就是全名搜索吗? 怎么处理这样的式子,给个思路就行。 如何得到一个日期是该月的第几周,并得到是星期几,那位高手能解决下!!! Java SQL的问题。。。请大家帮忙 关于获取list中的对象 java applet的问题 《Core Java》全称叫什么啊?我怎么找到《core java 应用程序设计教程》和《core java高级应用程序设计教程》,不知道是哪本? 文件写操作的问题?为什么不能添加内容进已写入过内容的文件? 面试题?? 关于java中使用jni实现ping功能的问题(linux系统) jbuilder 7---救急!!! 多线程的出来 如何提示文本框中还有多少字符可用
全名->本包->import
你的情况:一个项目中有两个包:
org.mrtwo.pack01 --- 包中有一个类Test
org.mrtwo.pack02 --- 包中有两个类Test和Demo,其中Demo为主类,内容如下:首先你代码里的Test类全名是org.mrtwo.pack02.Test,全名搜索你的代码里不存在这个类,于是转向第二个本包搜索。
由于你Test和Demo都在org.mrtwo.pack02包下,找到,所以再进行import搜索。
所以在import org.mrtwo.pack01.*的情况下,编译后的Test是pack02,也就是本包搜索的类。同样的,如果你写下import org.mrtwo.pack01.Test,那么在第一部全名搜索的时候就已经搜索到Test类,那么编译后的Test类就是pack01下的
例:
package pack2;
import pack1.Test;
public class Test{
public void main(String[] args){
pack1.Test t1 = new pack1.Test();
pack2.Test t2 = new pack2.Test();
}
}