A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘士林 中级黑马   /  2012-10-21 11:54  /  1706 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

自定义类时,如果用到了api中的java类时需要用import倒包,原因是类名的全名是包名加类名,这样可以简化书写
如用到io流时,不倒包的话,编译都通不过。但有时不用倒包也可以,如用到System类,Integer等类时,一样可以编译运行,这是为什么呢?
运行自定义类时,用到的api中的类是从哪里找到并加载的,由谁加载的,加载顺序又是什么?不好意思,一下子
问了这么多问题,因为实在想不明白,请哪位同学指点一下!

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

2 个回复

倒序浏览
在rt.jar中吧。system等基本类是在lang包里,lang包是自动加载的,所以不用再import。但用到其他包时,就要import导包了。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
第一个问题:java默认导入了lang包,System类、Integer等类对象都是属于lang包的
第二个问题:Java虚拟机中系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassLoader,AppClassLoader。其中BootStrap加载JRE/lib/rt.jar里面的,ExtClassLoader加载JRE/lib/ext/*中的,AppClassLoader加载CALSSPTH指定的所有jar或目录。对于自定义的类一般用的加载器时AppClassLoader。但是顺序是先由它委托给其父类ExtClassLoader,再委托给ExtClassLoader的父类BootStrap,如果这些父类加载的包里面没有自定义的类或者无法加载当前所要加载的类时,才会一级级退回子孙类加载器进行加载。

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马