黑马程序员技术交流社区

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

作者: 王大斌    时间: 2013-4-17 23:13
标题: java类加载器的问题
本帖最后由 王大斌 于 2013-4-17 23:16 编辑

学习反射之后,发现类加载器的一些疑问。
在我们jar包下有很多的.class字节码文件。比如String.class
文件。
问:
是不再程序中使用String对象的时候,到了run的时候
才去由jvm去加载这个Stirng.class文件并转换成一个Class类的实例
还是当在程序run的时候,jvm将所有jar包下的.class全部加载并转换成各自实例。

这个类的实例是不是叫字节码文件对象??

作者: 高梦晓    时间: 2013-4-17 23:24
 顾名思义,类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。一般来说,Java 虚拟机使用 Java 类的方式如下:Java 源程序(.java 文件)在经过 Java 编译器编译之后就被转换成 Java 字节代码(.class 文件)。类加载器负责读取 Java 字节代码,并转换成 java.lang.Class 类的一个实例。每个这样的实例用来表示一个 Java 类。通过此实例的 newInstance()方法就可以创建出该类的一个对象。实际的情况可能更加复杂,比如 Java 字节代码可能是通过工具动态生成的,也可能是通过网络下载的。

  基本上所有的类加载器都是 java.lang.ClassLoader 类的一个实例。下面详细介绍这个 Java 类。

  java.lang.ClassLoader 类介绍

  java.lang.ClassLoader 类的基本职责就是根据一个指定的类的名称,找到或者生成其对应的字节代码,然后从这些字节代码中定义出一个 Java 类,即 java.lang.Class 类的一个实例。除此之外,ClassLoader 还负责加载 Java 应用所需的资源,如图像文件和配置文件等。不过本文只讨论其加载类的功能。为了完成加载类的这个职责,ClassLoader 提供了一系列的方法

作者: 王大斌    时间: 2013-4-17 23:33
高梦晓 发表于 2013-4-17 23:24
 顾名思义,类加载器(class loader)用来加载 Java 类到 Java 虚拟机中。一般来说,Java 虚拟机使用 Java  ...

这篇文章我看过,没明白
作者: 心弦上的景致    时间: 2013-4-18 00:06
计算机语言分五种
第一种就是机器语言 0和1的 这是直接能操作硬件不需要汇编或者编译就可以直接别电脑识别 但是移植性不好 不同的机器 硬件对这种语言的识别方式也不同
第二种就是汇编语言 属于借记符语言 把复杂南极的机器码用借机方式体现 但是如果在计算机上进行操作需要就行汇编而不是编译(汇编 编译 编译器 连接 这些概念要弄清楚哦)
第三种就是C,c++,java,dot net 这些高级语言 这些语言运用起来相对更直观一些 更接近自然语言 虽然移植性或者是跨平台性有了提高 高级语言的特点就是一行代码对应多条指令 效率很高但是如果想要在计算机上运行 就需要通过编译器进行编译 把一些不符合规范的语法和语句过滤掉 然后转换成直接能被电脑识别的机器码
第四种就是脚本语言 比如javascript 还有flash做交互动画用到的那个是actionscript(如果没记错的话),这都是脚本语言 虽然需要编译 但是会被直接编译 不需要太繁琐的流程  而且语法也相对宽松 更容易识别
第五种就是4GL  属于面向问题的编程语言  和面向过程和面向对象有很大的区别,只需要告诉计算机去做什么就可以了,语音识别技术就是4GL的一个很好的体现,不用管机器怎么执行 你只需要语音操作就可以 虽然现在4GL技术还不成熟 但是在安卓手机上已经有体现了 比如重力感应还有陀螺仪就属于这个范畴


我就知道这些了  你了解一下计算机的这些东西 在接触一下内存 解决这个问题就会轻松很多
作者: 黄玉昆    时间: 2013-4-20 14:47
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢




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