java的类在刚定义好还没有new的时候它在内存中存放在什么地方

是不是在内存中还有个类区,否则的话当我new的时候它从哪里知道我要堆区开辟多大空间,我指的是如果不在内存区保存类的结构系统如何知道我的类有哪些属性

关于new 出来的问题,楼上的都回答了.那么java的类定义完了之后在哪里呢.当然在一般的存储介质上啦.就是硬盘上.在没有被相关代码加载之前它一直就在那里待着.
现在有这么些情况,你要new一个新的对象.
这个时候JVM会把你那个类的class加载到内存当中.加载完了.JVM会看你的代码有没有错.没有错的话.JAVA的解释器就会去一行行的读你的代码.当然,这个时候读的代码是声明属性和构造函数等代码.这个时候他通过你的声明属性代码和构造函数就可以知道给你分配多少内存空间,并且也知道给他们初始值.
这个是普通情况,有静态属性的情况又不一样.
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-08-15
对象的引用是保存在栈内存的,用new是在JVM的堆内存上为类的一个对象开辟空间,具体分配大小是根据属性值默认分配的大小,如int占4字节,只会为属性分配空间,不为方法分配空间,如:声明:int age;没实例化时,不会分配任何空间,在用new实例化是为引用age在栈内存和4在堆内存分配相应的空间
第2个回答  2010-08-15
还没有new的时候,还没有分配内存给它

楼主多虑了,因为你定义类的时候,是有一些基本类型或者你定义的类对象构成,他们在内存中都是有空间大小的,如int就是4个字节的。所以new的时候,是可以计算出你的类需要的存储空间大小的
第3个回答  2010-08-15
一个类当你没有new的时候,也就是说并没有在内存中分配地址,所以你说的情况,内存中根本没有。
第4个回答  2010-08-15
没有放在内存里的,只有当你new之后才会在内存分配空间的。

java的类在刚定义好还没有new的时候它在内存中存放在什么地方
关于new 出来的问题,楼上的都回答了.那么java的类定义完了之后在哪里呢.当然在一般的存储介质上啦.就是硬盘上.在没有被相关代码加载之前它一直就在那里待着.现在有这么些情况,你要new一个新的对象.这个时候JVM会把你那个类的class加载到内存当中.加载完了.JVM会看你的代码有没有错.没有错的话.J...

java中的方法代码存在了哪里
类的实例方法在内存中是只有一份,不过肯定不会是第一个对象中,如果是第一个对象的话,那么当第一个对象被销毁的时候,那么后面的对象就永远无法调用了...类的实例方法存在一个专门的区叫方法区,事实上类刚装载的时候就被装载好了,不过它们在"睡眠",只是这些方法必须当有对象产生的时候才会"苏醒".(...

JAVA中的各种东西存储在什么地方
比如,JAVA对象引用存储于堆栈区,但对象并不存储于其中。3、堆一种通用的内存池(也位于RAM区),用于存放所有的JAVA对象。堆不同于堆栈的好处是:编译器不需要知道存储的数据在堆里存活多长时间,因此堆里分配存储有很大的灵活性。当需要一个对象时,只需要new一个即可,当执行这行代码时,会自动在...

java静态变量存储在哪个区
java程序在内存中的存储分配情况:一、堆区:1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身 ujiuye 栈区:1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和...

Java数组是存储在内存中的什么地方
静态类,静态变量,存储在,静态区块中。类本身代码需要时再加载到内存中,java的动态代理实现的根本。既然是动态加载肯定是在堆中,不过加载进来的类代码可能永不会销毁(虚拟机运行区间内,可以加快运行平台的处理速度,java属于半编译半解释的一门语言,要解释执行的是预先编译好的指令,就是class类文件...

Java里面的实例对象new了是什么意思?
new中文意思是:新的 在JAVA里表示新建实例或者是新建对象。 一个普通类在没有实例化之前,就是new之前,它的属性、方法等等,在内存中都是不存在的。只有new了以后也就是新建对象之后,这个类的一些东西在内存中才会真的存在,也就是说只有new了之后,这个类才能用。 已赞过 已踩过< 你对这个回答的评价是? 评论 ...

JAVA集合类存储的是一个对象的哪部分?
一个对象有属性有方法,new这个对象的时候内存中就存在了这个对象,这个对象在内存中有一个地址方便我们找到他。那么向一个集合中添加这对象的时候其实是添加这个对象在内存中的地址。也就是说我们在遍历集合的时候其实是挨个查看这个集合中的地址。那么,也就是说,通过这个地址我们就能找到你之前new的那个...

java字符串常量存放在内存meta space stack native heap pearmgen哪个...
metaspace:JDK 8的HotSpot JVM现在使用的是本地内存来表示类的元数据,这个区域就叫做元空间。heap:堆内存用于存放由new创建的对象和数组。stack:在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。pearmgen:移除永久代(Permanent Generation (PermGen)),从JDK 7开始Oracle...

Java里面的实例对象new了是什么意思?
new中文意思是:新的 在JAVA里表示新建实例或者是新建对象。一个普通类在没有实例化之前,就是new之前,它的属性、方法等等,在内存中都是不存在的。只有new了以后也就是新建对象之后,这个类的一些东西在内存中才会真的存在,也就是说只有new了之后,这个类才能用。

Java程序运行时,没有赋值的基本类型变量会在内存中分配空间吗?_百度...
由于常量池包含了一个类型所有的对其他类型、方法、字段的符号引用,所以常量池在Java的动态链接中起了核心作用。常量池存在于堆中。5、代码段:用来存放从硬盘上读取的源程序代码。6、数据段:用来存放static定义的静态成员。注意:1.一个Java文件,只要有main入口方法,我们就认为这是一个Java程序,可以...

相似回答