黑马程序员技术交流社区
标题:
请教,int x=1;和Car c=new Car();区别
[打印本页]
作者:
roybill
时间:
2015-5-8 22:13
标题:
请教,int x=1;和Car c=new Car();区别
请教,int x=1;和Car c=new Car();区别,在学到面向对象的时候感觉对这个概念有点模糊
作者:
北京南瓜
时间:
2015-5-8 22:20
这两个貌似没联系,前者是把数值1赋值给x,后者是Car类创建对象c。。。
作者:
空--格
时间:
2015-5-8 22:56
一个是赋值,一个是创建对象.没啥联系吧
作者:
wkz_crystal
时间:
2015-5-8 23:02
本帖最后由 wkz_crystal 于 2015-5-8 23:03 编辑
两句话搞定哈:把1赋给了int类型的变量x,存在于栈内存中;c是实际对象Car()的引用,c存在于栈内存中,而new Car()是存在于堆内存中哈!c指向了对内存中的new Car()
作者:
cui0wei0
时间:
2015-5-8 23:13
C#跟JAVA感觉都是一个娘胎生出来的
作者:
KK要有光
时间:
2015-5-8 23:15
前者是定义一个常量并赋值,后者是声明一个对象。
作者:
紫夜灵魂
时间:
2015-5-8 23:16
本帖最后由 紫夜灵魂 于 2015-5-8 23:17 编辑
int x = 1; 这类定义是基本数据类型变量定义,这些数据类型是java本身提供的,定义后存放在栈内存。Car显然是自己定义的类,可以理解成一种自己定义的数据类型,要想“定义”它,就要实例化(new Car()),Car c 的c是栈内存中存放了一个地址的一块空间, 这个地址就是指向堆内存中new Car()实例化对象的一个地址信息。
作者:
我干阿衰
时间:
2015-5-9 11:56
前面是赋值,后者是创建一个Car类的对象,两者没什么联系
作者:
王先荣
时间:
2015-5-9 14:25
同意楼上的楼上的 ,在内存中的位置不同 ,前者是在栈内存中的 后者是在堆内存中的,前者的生命周期一般是比后者少,后者对象创建后是靠垃圾回收机制自动回收的
作者:
赵旗
时间:
2015-5-9 16:05
一个是赋值语句 另外一个是创建一个对象
作者:
yky1678
时间:
2015-5-9 16:31
前者:在栈中创建一个数值型变量x,初始化为1.
后者:在栈中创建一个引用型变量c,默认初始化null,接着在堆中开辟一块空间,这个空间有一个地址,将Car这个类的非静态属性放在这个堆空间里,将静态属性放在静态方法区,将方法也放在这个方法区,再把这个堆内存中开辟的空间地址值赋值给c,这样栈中的引用变量就指向了堆空间中的对象
作者:
韩侠
时间:
2015-5-9 17:41
前者是初始化一个整形变量x,后者是创建一个对象c,初始化对象,给对象赋值
作者:
Cat
时间:
2015-5-9 21:57
学习一下~
作者:
陈明佳
时间:
2015-5-10 10:04
x赋值为1,Car创建对象为c,没有关系
作者:
csu050416
时间:
2015-5-10 14:04
int x=1:建立一个变量,然后赋值为1,存于栈内存;和Car c=new Car():先创建了变量c,再在堆内存开辟空间创建对象car,将car的地址值赋给c,这个相当于创建了两个对象。
作者:
彭越
时间:
2015-5-10 14:36
一个是赋值,一个是创建对象,没啥联系
作者:
Oh.Ba
时间:
2015-5-10 19:36
两者没什么联系吧,一个是变量赋值,一个是创建对象
作者:
yearn
时间:
2015-5-10 20:00
一个是基本数据类型,一个是引用数据类型!
作者:
短暂的火光
时间:
2015-5-10 21:49
简单滴说 就是前者是变量的定义初始化 后者是对象的初始化
作者:
我爱吃橙子
时间:
2015-5-10 21:51
一个是给变量赋值 一个是实例化一个对象
作者:
xiaodaodan
时间:
2015-5-10 22:12
一个是赋值,一个是创建对象啊,这两个能联系到一起去?
作者:
qian0217wei
时间:
2015-5-11 00:38
就是感觉不明白楼主表达什么?栈内存和堆内存区别吗?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2