A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马-李勇 中级黑马   /  2012-6-25 21:53  /  3125 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在栈中建立变量,将堆中数据的内存地址付给栈中的变量,那什么变量在栈中?我知道new出来的都在堆中。那怎么才能分出是引用数据类型?还有除了引入数据类型还有什么类型?

4 个回复

倒序浏览
除了引用数据类型,还有基本数据类型。基本数据类型分为4类8中
整形类:byte short int long
浮点型:float double
字符型:char
布尔型:boolean。
将堆中的地址赋给一个变量,就可以引用这个对象了,是在栈内存中的。希望你能明白。加油

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
     内存划分了不同的区域,主要是不同的数据有不一样的使用频率等等。   
   还有局部变量也是栈内存中存放的。

java的数据类型:基本数据类型: 1、数值类型(byte,short,int .long, folat,double, char)2、布尔类型:(boolean)。   引用类型:1、数值   2、类class  3、接口:interface
回复 使用道具 举报
栈内存中主要存储变量。变量生命周期到了,就自动释放。  
  java堆内存中主要存储数组和对象,生命周期到了就会变成垃圾,等待垃圾回收机制回收。

在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。  
   
  当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。  
   
  堆内存用来存放由new创建的对象和数组。  
   
  在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。  
   
  在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。  
   
  引用变量就相当于是为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。  

java数据类型图:
                                             ┏数值型━┳━整数型:byte short int long
              ┏基本数据类型━━┫              ┗━浮点型:float double
              ┃                            ┣字符型:char                                          
数据类型╋                            ┗布尔型:boolean              
              ┃                            ┏类(class)
              ┗引用数据类型━━╋接口(interface)
                                             ┗数组(array)
java的数据类型分基本数据类型(原始数据类型)和引用数据类型;
1.基本八大类,图中可以很清楚的看到;这种类型的数据变量在声明之后java就会立刻分配给他内存空间。如:short a;  java会在可使用的内存空间寻找一个占两个字节的块给a变量;
2.引用数据类型就那三种,类似C/C++的指针,它以特殊的方式指向对象实体(具体的值),这类变量声明时不会分配内存,只是存储了一个内存地址,想具体知道看看数据结构就好了。

通俗讲,一、上图记住很够用;二、说内存、谈地址基本都是说引用而非基本;三、你可以把内存地址理解是你学号,而对象实体就是你,每次找你通过学号找,这就是引用;

这个知识点的应用:
1.“==”作用在引用数据类型间,判断内存地址是否相等,想判断内容实体用equals;
2、基本传值传参传的是副本,修改后原值不变;引用传值传参穿的是地址,修改后原值改变。

答案也有抄的别人的部分,望谅解
回复 使用道具 举报
先谢谢各位了,这里面有好多知识点,我先记下来再慢慢理解
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马