黑马程序员技术交流社区
标题:
今天看视频学习的时候突然有了一个疑问!!求解
[打印本页]
作者:
执念
时间:
2015-3-4 12:36
标题:
今天看视频学习的时候突然有了一个疑问!!求解
比如说像String
String abc="hello";
String abc的意思是在栈内存中建立一个abc来存放指向堆内存的引用地址,
"hello"的意思是在堆内存开辟空间并初始化其值为hello。
那么问题来了!
int asd=55;
这句话意思是不是:
int asd的意思是在栈内存中建立一个asd来存放指向堆内存的引用地址,
55的意思是在堆内存开辟空间并初始化其值为55。
:'(
作者:
milimili
时间:
2015-3-4 14:32
String是对象类型,创建String 对象是存储在堆内存。
int是基本数据类型,声明并初始化变量,是在栈内存中分配空间存储。
作者:
hyc120500
时间:
2015-3-4 14:37
好像是不一样的,String abc="hello";这句代码创建的是2个对象,“hello”本身是一个对象,int asd创建一个对象,赋值为55
作者:
yangruijing
时间:
2015-3-4 14:59
String是一个特殊的类,一旦被初始化,那么就不能被改变,String类是一个被final修饰的类。
String s1=”abc”;这个表示的是一个对象,但是不是在内存中创建的,而是在内存的缓冲区(常量池)中创建了一个“abc”对象,只有通过new关键字创建的,才在堆中申请了内存空间,并且在栈中有声明的变量名称。
当有Strings1=”abc”,String s2=”abc”;都执行的话,当执行了s1后,会在内存的缓冲区(常量池)中创建了”abc”字符串对象,然后在执行s2的时候,那么先去内存缓冲区查找,要是存在了,那么就直接指向此对象,直接使用,所以,这两句话也就纯创建了一个”abc”字符串。
String str=new String(“xyz”);这是创建了两个对象,一个是先在内存中通过new创建了一个对象,然后在内存缓冲区中又创建了一个字符串“xyz”,然后在内存中的指向了内存缓冲区(常量池)中的对象。
int a=3;只是定义了变量a指向一个int型的数据
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2