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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭孟涛 高级黑马   /  2013-2-9 04:00  /  3127 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张向辉 于 2013-2-10 22:40 编辑




一会儿听着说是String类,一会儿又听着说String对象。String到底是类还是对象?

9 个回复

倒序浏览
String不属于8种基本数据类型,String是一个对象。  因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。
String temp = new String("abc");这是定义了一个对象,但temp也可以作为变量使用。
String temp1 = "abc";这时声明了一个变量,它也可以作为对象使用。
严格区分他们的区别没什么实际意义,区别在于使用时,如果想把它看作对象使用那它就是对象,把它当作变量使用那它就是变量。

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

回复 使用道具 举报
String 是final型的类!
回复 使用道具 举报
本帖最后由 刘明杰 于 2013-2-9 09:33 编辑

【.net中】  查MSDN或者使用Reflector反编译工具可以看到 String本身定义就是一个类,这里说string对象,是说的定义的那个string类型的变量
比如说string name = "tom";  这里name就是一个string类型的对象, 但是String本身就是一个类。

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

回复 使用道具 举报
java面向对象编程,所有的类都是对象,方法,变量等等都是对象......
回复 使用道具 举报
所有的类都可以是对象,所有的对象都可以成类。{:soso_e120:}
回复 使用道具 举报
类是对象的模版,当你说某类,就是说这种对象的模版,类就像一个模具,比如模具形状是个猴子,把橡皮泥放进去压一下,出来个猴子,就是猴子对象。
类就是规定了这个类的对象的属性和行为。成员变量规定了这个类的对象的属性,方法规定了对象的行为。
当你定义了一个Monkey类,Monkey m = new Monkey(); 左边的 m 是对象的引用,右边是新建的对象。
回复 使用道具 举报
说得太多反而糊涂,简单的说类是描述,对象是实体。比如汽车的图纸就相当于类,汽车相当于对象,图纸是对汽车的描述,真实存在的实体是汽车。
回复 使用道具 举报
看到你这个问题,我很纠结,String本身是一个java类,你创建她了,就会在堆内存中开辟一个空间,创建一个String类的实例对象,创建方式有2种,第一种种是通过new关键字来创建(String s = new String("HelloWorld")),第二种是通过反射的方式来创建,反射是用构造器(Constructor)来实例化一个对象的(newInstance(Object... initargs)方法),一般框架是用反射来实例化对象的,如SpringIOC。
需要注意的就是java中的类最终会被编译成字节码文件(二进制文件),由jvm的类加载器加载的。
String可以和Integer,Double等理解为是原始类型的包装类,包装类的好处是可以使用更多的方法,更符合面向对象的思想。
那么String为什么特殊呢?
因为String类在java中使用频率是最高的,几乎天天都要和String打交道,为了提高效率,当我们定义String s = "abc",String s2 = "bcd"的时候,会先在栈内存的常量池中存‘a’,'b','c'三个字符,当声明String s2 = “bcd”的时候,会在字符常量池中找有没有‘b’,'c','d',有就直接引用,没有就不创建,其实这种创建对象的方式也叫享元模式,int 的包装类Integer也使用了这种模式,不过Integer只会在常量池中存 -128~127之间的整数。
最后需要声明的是,String字符串类,她的底层是字符数组,就是字符串是由一个一个字符组合而来的。
希望对你有帮助!{:soso_e128:}

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

回复 使用道具 举报
严格来说,我不赞成String是一个对象的说法,String只是一个类,或者也可以说String是引用数据类型,而对象都是被创建出来的,String特别的地方在于每个字符串都是它的一个实例对象。例如:String a = "abc";a和"abc"都是String的对象。但单独的是不能称String就是对象的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马