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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

请教,int x=1;和Car c=new Car();区别,在学到面向对象的时候感觉对这个概念有点模糊

21 个回复

正序浏览
就是感觉不明白楼主表达什么?栈内存和堆内存区别吗?
回复 使用道具 举报
一个是赋值,一个是创建对象啊,这两个能联系到一起去?
回复 使用道具 举报
一个是给变量赋值 一个是实例化一个对象
回复 使用道具 举报
简单滴说 就是前者是变量的定义初始化   后者是对象的初始化
回复 使用道具 举报
yearn 中级黑马 2015-5-10 20:00:17
18#
一个是基本数据类型,一个是引用数据类型!
回复 使用道具 举报
Oh.Ba 中级黑马 2015-5-10 19:36:02
17#
两者没什么联系吧,一个是变量赋值,一个是创建对象
回复 使用道具 举报
一个是赋值,一个是创建对象,没啥联系
回复 使用道具 举报
int x=1:建立一个变量,然后赋值为1,存于栈内存;和Car c=new Car():先创建了变量c,再在堆内存开辟空间创建对象car,将car的地址值赋给c,这个相当于创建了两个对象。
回复 使用道具 举报
x赋值为1,Car创建对象为c,没有关系
回复 使用道具 举报
Cat 中级黑马 2015-5-9 21:57:30
13#
学习一下~
回复 使用道具 举报
前者是初始化一个整形变量x,后者是创建一个对象c,初始化对象,给对象赋值
回复 使用道具 举报
前者:在栈中创建一个数值型变量x,初始化为1.
后者:在栈中创建一个引用型变量c,默认初始化null,接着在堆中开辟一块空间,这个空间有一个地址,将Car这个类的非静态属性放在这个堆空间里,将静态属性放在静态方法区,将方法也放在这个方法区,再把这个堆内存中开辟的空间地址值赋值给c,这样栈中的引用变量就指向了堆空间中的对象
回复 使用道具 举报
一个是赋值语句  另外一个是创建一个对象
回复 使用道具 举报
同意楼上的楼上的 ,在内存中的位置不同 ,前者是在栈内存中的 后者是在堆内存中的,前者的生命周期一般是比后者少,后者对象创建后是靠垃圾回收机制自动回收的
回复 使用道具 举报
前面是赋值,后者是创建一个Car类的对象,两者没什么联系
回复 使用道具 举报
本帖最后由 紫夜灵魂 于 2015-5-8 23:17 编辑

int x = 1; 这类定义是基本数据类型变量定义,这些数据类型是java本身提供的,定义后存放在栈内存。Car显然是自己定义的类,可以理解成一种自己定义的数据类型,要想“定义”它,就要实例化(new Car()),Car c 的c是栈内存中存放了一个地址的一块空间, 这个地址就是指向堆内存中new Car()实例化对象的一个地址信息。
回复 使用道具 举报
前者是定义一个常量并赋值,后者是声明一个对象。
回复 使用道具 举报
C#跟JAVA感觉都是一个娘胎生出来的
回复 使用道具 举报
本帖最后由 wkz_crystal 于 2015-5-8 23:03 编辑

两句话搞定哈:把1赋给了int类型的变量x,存在于栈内存中;c是实际对象Car()的引用,c存在于栈内存中,而new Car()是存在于堆内存中哈!c指向了对内存中的new Car()
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马