黑马程序员技术交流社区

标题: string是什么数据类型?常量吗? [打印本页]

作者: Coup_D`etat    时间: 2014-7-5 09:47
标题: string是什么数据类型?常量吗?
string是什么数据类型?常量吗
作者: s526349668    时间: 2014-7-5 10:11
是引用数据类型吧
作者: 燿陚√揚葳    时间: 2014-7-5 10:17
一楼说的对啊!
作者: Adjin    时间: 2014-7-5 10:17
char类型表示单个字符,''
String指定该变量为字符串类型
不是常量
作者: 威猛的小熊    时间: 2014-7-5 10:22
String是类,而类是复合(引用)数据类型,所以String是复合数据类型。String类是不可变(final)的,对String类的任何改变,都是返回一个新的String类对象。这样的话把String类的引用传递给一个方法,该方法对String的任何改变,对原引用指向的对象没有任何影响,这一点和基本数据类型相似。
作者: 我为你着迷    时间: 2014-7-5 10:26
我看到一个面试题是这么解答的 String类是java.lang.String类,是final类型的。因此不可以继承这个类,不能修改这个类。所以不是什么基本数据类型。希望可以帮助你。
作者: Coup_D`etat    时间: 2014-7-5 10:39
s526349668 发表于 2014-7-5 10:11
是引用数据类型吧

引用数据类型只有类,接口,数组三个吧
作者: Coup_D`etat    时间: 2014-7-5 10:43
谢谢各位解答
作者: 南柯一梦    时间: 2014-7-5 10:50
String 类型是引用数据类型,被final修饰,是一个特殊的对象
作者: 曾倩倩    时间: 2014-7-5 10:55
应该是引用数据类型吧
作者: Mr.Hao    时间: 2014-7-5 11:25
报纸说的很详细
作者: 帮帮    时间: 2014-7-5 12:13
String是引用数据类型,在String s = "Hello";中s是一个String对象
作者: 西地那非    时间: 2014-7-5 12:32
不是基本的,是应用型变量,并且java封装好的类,不允许在继承,修改
作者: wisely    时间: 2014-7-5 19:49
String,可以是基本数据类型,也是包装类。两种是同一种写法。举个例子,int是基本数据类型,它的包装类是Integer。
作者: 多此一举    时间: 2014-7-5 20:21
引用数据吧
作者: 浮云只想听你説    时间: 2014-7-5 20:41
是引用数据类型,String是一个类...
作者: abc张强8    时间: 2014-7-5 20:44
解释的挺好
作者: EarlyHeart    时间: 2014-7-5 20:58
数据类型分为基本类型(八种)和引用类型,String属于引用类型
作者: 龙泉长空    时间: 2014-7-5 21:08
它是字符串类型吧?
作者: Blake    时间: 2014-7-5 23:35
java 代码 String str1 = new String("abc");     Stirng str2 = "abc";        虽然两个语句都是返回一个String对象的引用,但是jvm对两者的处理方式是不一样的。对于第一种,jvm会马上在heap中创建一个String对象,然后将该对象的引用返回给用户。对于第二种,jvm首先会在内部维护的strings pool中通过String的 equels 方法查找是对象池中是否存放有该String对象,如果有,则返回已有的String对象给用户,而不会在heap中重新创建一个新的String对象;如果对象池中没有该String对象,jvm则在heap中创建新的String对象,将其引用返回给用户,同时将该引用添加至strings pool中。注意:使用第一种方法创建对象时,jvm是不会主动把该对象放到strings pool里面的,除非程序调用 String的intern方法。 关于String是不可变的    这一说又要说很多,大家只要知道String的实例一旦生成就不会再改变了,比如说: String str=”kv”+”ill”+” “+”ans”;   就是有4个字符串常量,首先”kv”和”ill”生成了”kvill”存在内存中,然后”kvill”又和” “ 生成 ”kvill “存在内存中,最后又和生成了”kvill ans”;并把这个字符串的地址赋给了str,就是因为String的“不可变”产生了很多临时变量,这也就是为什么建议用StringBuffer的原因了,因为StringBuffer是可改变的。
作者: Coup_D`etat    时间: 2014-7-6 09:36
刚看大家解答,好似明白了,现在又糊涂了
作者: OCTSJimmy    时间: 2014-7-6 09:45
Blake 发表于 2014-7-5 23:35
java 代码 String str1 = new String("abc");     Stirng str2 = "abc";        虽然两个语句都是返回一个S ...

感谢,学到了好东西,原来如此,所以有些程序会越来越消耗内存,果然也算一种泄露么……
作者: 叶飞翔    时间: 2014-7-6 09:55
看了大家的说法,我不淡定了,晕了。
作者: 叶飞翔    时间: 2014-7-6 10:00
Blake 发表于 2014-7-5 23:35
java 代码 String str1 = new String("abc");     Stirng str2 = "abc";        虽然两个语句都是返回一个S ...

说的太好了,受教了,大神级的啊。大神,你是要去40期的么?
作者: ╰_〃无法释怀的    时间: 2014-7-6 10:22
是引用数据类型!
作者: .Mч┞尛__洋    时间: 2014-7-6 13:52
String不属于8种基本数据类型,String是一个对象




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2