java类存储
2、堆栈(栈)位于通用RAM(随机访问存储器)中,但是通过堆栈指针可以直接从堆栈指针那里获得直接支持。堆栈指针向下移动,则分配新的内存;向上移动,则释放那些内存。其快速有效性仅次于寄存器。创建程序时,JAVA必须知道存储在堆栈区的所有项的确切生命周期,以便上下移动堆栈指针。比如,JAVA对象引用存储于堆栈区,但对象并不存储于其中。3、堆一种通用的内存池(也位于RAM区),用于存放所有的JAVA对象。堆不同于堆栈的好处是:编译器不需要知道存储的数据在堆里存活多长时间,因此堆里分配存储有很大的灵活性。当需要一个对象时,只需要new一个即可,当执行这行代码时,会自动在堆里进行存储分配。不过,用堆进行存储分配和清理可能比用堆栈进行存储分配需要更多的时间。4、常量存储常量值通常在直接放在程序代码内部,这样做是安全的,因为它永远不会被改变。5、非RAM存储如果数据完全存活于程序之外,那么它可以不受程序的任何控制,在程序没有运行时也可以存在。流对象:在流对象中,对象转成字节流,通常被发送给另外一台机器。持久化对象:对象被存放于磁盘上。
⑵ 在java类中如何实现信息的存储
package com.ctx0331;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 实现文件的读取和写入
*
* @author Administrator
*
*/
public class FileUtil {
public static void main(String[] args) throws IOException {
byte[] datafile = loadFileData("./tempdata/abc.txt");
System.out.println(new String(datafile));
String str = "写入文件";
String outpath = "./tempdata/out.txt";
saveDataToFile(outpath, str.getBytes());
}
/**
* 读取指定路径的文件内容
*
* @param fileName
* @return data
* @throws IOException
*/
public static byte[] loadFileData(String fileName) throws IOException {
byte[] data = new byte[1024];// 用于存储读取的文件内容
File file = new File(fileName);
if (file.exists()) {
FileInputStream fis = new FileInputStream(file);
fis.read(data);
fis.close();
} else {
System.out.println("文件不存在");
}
return data;
}
/**
* 向指定路径的文件写入data中的内容
*
* @param fileName
* @param data
* @throws IOException
*/
public static void saveDataToFile(String fileName, byte[] data)
throws IOException {
File file = new File(fileName);
if (!file.exists()) {// 文件不存在就创建
file.createNewFile();
}
FileOutputStream fos = new FileOutputStream(file);
fos.write(data);
fos.close();
}
}
⑶ java的类在刚定义好还没有new的时候它在内存中存放在什么地方
关于new 出来的问题,楼上的都回答了.那么java的类定义完了之后在哪里呢.当然在一般的存储介质上啦.就是硬盘上.在没有被相关代码加载之前它一直就在那里待着.
现在有这么些情况,你要new一个新的对象.
这个时候JVM会把你那个类的class加载到内存当中.加载完了.JVM会看你的代码有没有错.没有错的话.JAVA的解释器就会去一行行的读你的代码.当然,这个时候读的代码是声明属性和构造函数等代码.这个时候他通过你的声明属性代码和构造函数就可以知道给你分配多少内存空间,并且也知道给他们初始值.
这个是普通情况,有静态属性的情况又不一样.
⑷ java一个类在内存中是如何存储的
关于您提出的问题,网络也有过这样的回答了.那么java的类定义完了之后在哪里呢.当然一般一个类,当你没有new的时候,也就是说并没有在内存中分配地址,所以就像你说的无处存
⑸ java中一个类的方法是怎么存储的
java内存分析:
都是将内存分为三块
第一块内存区域是:栈
第二块内存区域是:堆
第三块内存区域是:方法区
栈空间里装的都是局部变量
堆空间里装的都是new出来的东西,特殊的对象 (非static修饰的全局变量是特殊的对象,在堆内存区域内)
方法区里装的都是基本类型常量和字符串常量、static修饰的全局变量、代码
⑹ JAVA中类中的方法存储在什么地方
类的实例方法在内存中是只有一份,不过肯定不会是第一个对象中,如果是第一个对象的话,那么当第一个对象被销毁的时候,那么后面的对象就永远无法调用了...
类的实例方法存在一个专门的区叫方法区,事实上类刚装载的时候就被装载好了,不过它们在"睡眠",只是这些方法必须当有对象产生的时候才会"苏醒".(比如,一个输出类的成员变量的方法,如果连对象都没有,何来的输出成员变量).所以,方法在装载的时候就有了,但是不可用,因为它没有指象任何一个对象。
⑺ java中的对象是怎么存储的
stack 区存放函数参数和局部变量;
heap 区存放对象;
data 区存放static 的变量或者字符串常量;
code 区存放类中的方法;
stack 栈 -->放方法的参数 和局部变量.就像这样
-----------
void test(String[] args){
int xx = 0;// args和 xx在jvm load class时存放在栈中
}
heap 堆 --> 堆要比栈要大得多. 当一个对象对new出来时,该对象放在heap中,对象引用放在栈中.
data区,也就是数据区 -->静态的变量 和 string的常量.
code 代码区 --->classloader类加载器加载该class时存放类中的方法.
⑻ JAVA集合类存储的是一个对象的哪部分
一个对象有属性有方法,new这个对象的时候内存中就存在了这个对象,这个对象在内存中有一个地址方便我们找到他。那么向一个集合中添加这对象的时候其实是添加这个对象在内存中的地址。也就是说我们在遍历集合的时候其实是挨个查看这个集合中的地址。
那么,也就是说,通过这个地址我们就能找到你之前new的那个对象,从而对这个对象进行操作。
所以说,你的问题“存储的是对象的哪一部分”这种说法是完全错误的。
当然,有一种情况是例外,就是你写了一个集合的子类,重新实现了这个集合添加元素的方法,改为了添加某一种类型的某个字段。这时候才可以说这个集合存储的是那个对象的某一个属性。不过这种说法不严谨,因为集合只能存对象类型,就算你放基本数据类型进去JDK1.6以上也会自动帮你包装成对应的对象类型然后存进去。其实存的还是对象。这个对象还是有对应的属性和方法。
所以,总结下来,你的问题那句话在大部分情况下是错误的,在特殊情况下是不严谨的。