黑马程序员技术交流社区

标题: 有关类加载器的问题 [打印本页]

作者: 燕国庆    时间: 2013-3-31 21:39
标题: 有关类加载器的问题
本帖最后由 燕国庆 于 2013-4-1 12:52 编辑

public class ClassLoaderTest {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
               
                System.out.println(ClassLoaderTest.class.getClassLoader().getClass()
                                .getName());
               
                System.out
                                .println(System.class.getClassLoader());
               
               
                //类加载器的继承树状关系
                ClassLoader classloader=ClassLoaderTest.class.getClassLoader();
                while(classloader!=null)  为什么在此处用if  和 while 所打印出来的结果会不一样
                {
                        System.out.println(classloader.getClass().getName());
                        classloader=classloader.getParent();
                }
               
                System.out.println(classloader);
               
               

        }

}


if:
   sun.misc.Launcher$AppClassLoader
   null
   sun.misc.Launcher$AppClassLoader
   sun.misc.Launcher$ExtClassLoader

while:
   sun.misc.Launcher$AppClassLoader
   null
   sun.misc.Launcher$AppClassLoader
   sun.misc.Launcher$ExtClassLoader
   null

作者: 我手心里的宝    时间: 2013-3-31 21:48
while(classloader!=null)  为什么在此处用if  和 while 所打印出来的结果会不一样
                {
                        System.out.println(classloader.getClass().getName());
                        classloader=classloader.getParent();
                }
在这里,if()只会做一次判断
while()会做多层判断
因为while打印的过过会更多
作者: 刘胜寒    时间: 2013-3-31 21:48
哥们这个问的好...
if() 如果if语句中的表达式成立,那么将执行if语句里面的代码
否则不执行
while() 如果while()语句中的表达式不成立,则不执行while()y语句的东西,会结束while()语句,
如果whie()语句中的表达式成立则运行while()语句的东西,并且会继续判断while()语句的表达式是否成立,直到while()语句中的表达式不成立为止。
给你写个代码就懂了
int M = 10;
while(M>=1)
{
  System.out.println(M);
M/=2;
}
输出结果为 10,5,2,1
作者: 燕国庆    时间: 2013-4-1 12:51
谢谢大家的解答!




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