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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵嘉男 中级黑马   /  2012-4-24 20:28  /  2073 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

方法中定义string S= "abc";那么S 是一个对象吗?

6 个回复

倒序浏览
String s="abc";s是一个对象,只不过先给它赋一个初值abc
回复 使用道具 举报
是一个对象。S 可以说成对象 没问题。严格点的话 是对象的引用!
这里如果只定义String S;的话就不是一个对象了,
只能说是定义了一个名为S的String类型的变量。
而你所写的这个是先创建了一个"abc"对象,而S又指向该对象,
因此S也是一个对象。这种创建对象的方式是String特有的,
这种创建方式与new有很大的区别,好像与JAVA中JVM中的字符串池有关,
要真想详细了解这方面的知识,你可以多查一下其它的资料。
回复 使用道具 举报
S不是对象,abc才是对象,s存放栈内存中,abc存放在堆内存中,s只是abc对象的一个引用,存放着对象在堆内存中的地址。
回复 使用道具 举报
s 不是一个对象,确切的说是对象的引用。
先给楼主说一下关于String类型的问题,楼主的的String s = "abc",这是在字符串池中创建一个字符串对象,而String s = new String("abc");当以这种方式生成String类型的对象时,相当于创建了两个对象,这种方法创建的时候会先看一下字符串池中有没有 abc 这个字符串,有的话就不在字符串池中创建abc了,然后再在对内存中创建 对象 abc,这是会把此时的地址传递给 引用变量 s .
如果两个引用同时指向了字符串池中存在的对象,则他们的地址值是一样的,也就是说:
String str1 = “abc”;
String str2 = "abc";
则 str1 == str2;
回复 使用道具 举报
万物皆对象(总感觉想宗教的说法,哈哈)

既然都是对象,那这个s也肯定是,只不过他是什么对象。

上边的同学说的都好啊。
补充两句吧
这种赋值,可以看做String s = new String("abc");
这里new个对象,把abc放里,把地址首地址给了s。
所以调用s就相当于找到常量池里的abc。
s虽然是一个引用,但是确确实实的体现了对象的思想。
你看到的是s(看不出什么端倪),但是s却代表的一个string类型的里面带有“abc”的对象。
s内部封装的地址。
回复 使用道具 举报
S 不是对象 . 严格上来说 他是对象的引用
abc 也就是 变量S的值 才是对象.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马