关于“类”对象的小问题

hldman 2011-09-02 08:51:30
目前在读《Thinking in Java edition 4》,里边关于“类”对象有这样的讲解:
先是说:“每次写并编译一个.java文件后,都会生成一个“类”对象,存在.class文件里”
然后JDK文档中说:“Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的”。

问题:“类”对象到底是什么时候构建的?它是指那个class文件吗?这样猜测对不对:类对象和其它对象一样,真正派上用场是在内存中的;“类”对象中的static成员初始化后只存在“类“对象中而不会再次在实例对象中存在,以节省内存提高性能?但“类”对象中含有所有的类的代码。或者说:“类”对象只是把字节码.clas文件翻译成为本地机器码的一个东西?
以上理解对吗?初学,有点乱!
...全文
126 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
原来缘来 2011-09-03
  • 打赏
  • 举报
回复
.class文件和Class的实例对象是两码事
程序员Shark 2011-09-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hldman 的回复:]

引用 3 楼 ajun_studio 的回复:
当你定义一个引用的时候 必须和一个对象进行关联
static是属于某个类共有的,不是针对每个对象的
http://blog.csdn.net/ajun_studio/article/details/6724494
类执行机制
http://blog.csdn.net/ajun_studio/article/details/6591456
……
[/Quote]
在你new的时候就创建了对象啊
此时会分配一块堆内存给这对象的,此时的对象如果不是大数组,会直接放在堆内存的新生代中
而static是类级别的 ,是整个,类共享的,不是某个对象的,这样理解就可以了啊
字节码不是本地的 ,你在window上的class文件,放到linux也是能跑得,只要你都安装了jdk,要不java怎么夸平台呢。
无欲则钢 2011-09-02
  • 打赏
  • 举报
回复
类是抽象概念,你定义了就决定了。
类对象和其他对象一样。必须加载了才能使用。
hldman 2011-09-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ajun_studio 的回复:]
当你定义一个引用的时候 必须和一个对象进行关联
static是属于某个类共有的,不是针对每个对象的
http://blog.csdn.net/ajun_studio/article/details/6724494
类执行机制
http://blog.csdn.net/ajun_studio/article/details/6591456
java源代码编译机制
http://blog.……
[/Quote]

谢谢回复,目前我还看不太懂你空间里的东西(第二和三个帖子),我是说我说的那些对不对呀?
程序员Shark 2011-09-02
  • 打赏
  • 举报
回复
当你定义一个引用的时候 必须和一个对象进行关联
static是属于某个类共有的,不是针对每个对象的
http://blog.csdn.net/ajun_studio/article/details/6724494
类执行机制
http://blog.csdn.net/ajun_studio/article/details/6591456
java源代码编译机制
http://blog.csdn.net/ajun_studio/article/details/6591287
Exc_9521 2011-09-02
  • 打赏
  • 举报
回复
每次编译后,当确产生一个。class 文件,真正应用是在classload,将class 类导入到内存中
turing-complete 2011-09-02
  • 打赏
  • 举报
回复
等待高人吧

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧