java中基本数据类型和引用数据类型在内存分配上有什么不同

如题所述

Java的内存分配上,主要分4个块!
一块是用来装代码的,就是编译的东西。
一块是用来装静态变量的,例如用static关键字的变量,例如字符串常量。
一块是stack,也就是栈,是用来装变量和引用类型的!但区别在于,装了变量以后,变量上是有值的,而引用类型本身在stack上是没有值的。
一块是heap,也就是堆!堆可以一句话概括,装new出来的东西!

所以综上所述,基本数据类型都在stack中,而引用类型,变量是放在stack中,真正有内容的东西放在heap中,也就是当new了一个新的引用类型,他就会放在堆中,同时栈中的引用类型变量会指向堆中你new出来的东西!
这样说希望能帮你了解到java的内存分配问题。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-06-26
Java的内存分配上,主要分4个块,
一块是用来装代码的,就是编译的东西。
一块是用来装静态变量的,例如用static关键字的变量,例如字符串常量。
一块是stack,也就是栈,是用来装变量和引用类型的,但区别在于,装了变量以后,变量上是有值的,而引用类型本身在stack上是没有值的。
一块是heap,也就是堆,堆可以一句话概括,装new出来的东西,

所以综上所述,基本数据类型都在stack中,而引用类型,变量是放在stack中,真正有内容的东西放在heap中,也就是当new了一个新的引用类型,他就会放在堆中,同时栈中的引用类型变量会指向堆中你new出来的东西,
这样说希望能帮你了解到java的内存分配问题。
第2个回答  2012-12-11
内存从大的方面可分为栈和堆。

java中的定义数据类型是告诉内存需要分配多少空间给某个变量使用。

java中的8种基本类型是在栈内存中开空间,其声明的基本类型变量的生命周期同变量规定的生命周期[离此定义的变量最近的大括号所对应的另一大括号之间的生命周期范围,过了范围则无效]。

java中的引用类型则分为两部分:
如Student nihility = new Student();
nihility-->为指向Student类型的句柄[这是我们特有的叫法],此句柄是定义在栈内存中,同基本类型
句柄存储的内容实质为内存地址[new 开空间返回的地址]

new -->真正的在内存中开空间[存此对象的属性值],是在堆内存中,返回内存地址,即句柄

若感觉难理解的话,给你说个生活例子吧:
栈内存的句柄就像是电视机的遥控器,而存到堆内存中的对象则是电视机,遥控器来操控电视机,就像通过句柄来操作对象的内容。所以在Java中随处可见,通过句柄来操作某对象的语法。
其实其中还有蛮多的内容需要我们慢慢体会的。。。
希望能帮到你。。。
第3个回答  2012-12-11
这个问题复杂了,
基本数据类型都是存放在栈中。

引用数据类型基本上就是数据存放在堆中,在栈中存放一个一个引用,或者一个首地址。

你得找本关于java虚拟机的书才能看个大概。我感觉自己没有讲明白的。
第4个回答  2012-12-11
基本数据类型都是存放在栈中。
引用数据类型一般存放在堆中,在栈中存放对其的引用,但有些优化也有可能一些对象放在栈上。

java中基本数据类型和引用数据类型在内存分配上有什么不同
Java的内存分配上,主要分4个块!一块是用来装代码的,就是编译的东西。一块是用来装静态变量的,例如用static关键字的变量,例如字符串常量。一块是stack,也就是栈,是用来装变量和引用类型的!但区别在于,装了变量以后,变量上是有值的,而引用类型本身在stack上是没有值的。一块是heap,也就是...

java基本数据类型和引用数据类型的区别
一、从概念方面来说 基本数据类型:变量名指向具体的数值 引用数据类型:变量名指向存数据对象的内存地址,即变量名指向hash值 二、从内存构建方面来说 基本数据类型:变量在声明之后java就会立刻分配给他内存空间 引用数据类型:它以特殊的方式(类似C指针)指向对象实体(具体的值),这类变量声明时不会分配...

Java中基本数据类型和引用数据类型的区别有哪些?
基本数据类型指的是CPU可以直接进行运算的简单类型,在Java中有以下几种:byte、short、int、long、float、double、char、boolean。它们在内存中分配固定的空间,存储在栈中,有默认值0或false,传递时按值传递,即复制。引用数据类型则属于非基本类型,在Java中主要是类(class)、接口(interface)、数组(arr...

JAVA的基本数据类型和引用数据类型的区别
1、基本数据类型有:byte:Java中最小的数据类型;short:短整型;int:整型;long:长整型;float:浮点型;double:双精度浮点型;char:字符型;boolean:布尔类型。引用数据类型有:类、接口类型、数组类型、枚举类型、注解类型。2、基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在...

原始数据类型和引用数据类型(原始类型和引用类型有什么区别)
基本数据类型和引用类型的区别是什么? 一、含义不同: 基本数据类型存放的是一个值,而引用类型存放的是一个(对象)地址。 二、影响不同: 基本数据类型由于在内存中的一个地址存放的是这些变量的值,所以调用函数,函数里的形参,就是复制这些变量的值,以后对形参值的变化,不会影响到原来变量的值; 引用数据类型由于...

java值传递和引用传递的区别java核心卷
1.基本类型和引用类型在内存中的保存 Java中数据类型分为两大类,基本类型和对象类型。相应的,变量也有两种类型:基本类型和引用类型。基本类型的变量保存原始值,即它代表的值就是数值本身;而引用类型的变量保存引用值,"引用值"指向内存空间的地址,代表了某个对象的引用,而不是对象本身,对象本身...

JAVA 基本类型与 引用类型区别
http:\/\/liufei-fir.javaeye.com\/blog\/699509 栈与堆都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。Java的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和 multianewarray等指令建立,它们不需要程序代码来...

Java基本数据类型?
引用数据类型:Java语言本身不支持C++中的结构(struct)或联合(union)数据类型,它的复合数据类型一般都是通过类或接口进行构造,类提供了捆绑数据和方法的方式,同时可以针对程序外部进行信息隐藏。三、Java中的数据类型与内存的关系 在Java中,每个存放数据的变量都是有类型的,如:charch;floatx;inta,b,...

java数据类型占用字节数
基本数据类型包括byte、short、int、long、float、double、char和boolean。引用数据类型包括对象、数组和枚举。Java数据类型占用字节数就是指在计算机内存上占用的字节数量。程序员需要了解数据类型占用字节数,以便在编写程序时合理地分配内存空间,提高程序效率。二、Java基本数据类型占用字节数1. byte:占用1...

java 数据类型和基本类型的区别是什么,数据类型是什么意思,基本类型...
引用数据类型:类、接口类型、数组类型、枚举类型、注解类型;基本数据类型和引用数据类型的区别主要在存储方式上:基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上;引用数据类型在被床架时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由...

相似回答