日期:2014-05-20  浏览次数:20802 次

String是否是基本数据类型?
今天突发奇想,不知道怎么的就想到了String是否是基本数据类型这个概念上了。。
在我的印象中,String是基本数据类型,但是百度了一下,很多说String是一个对象,而不是基本数据类型。
这样就产生了一个问题,如果一个方法传入一个String类型,外面的String类型的值是不会变的,而这属于基本数据类型的特性吧?
求高手详细解答下。

------解决方案--------------------
只知道String不是基本数据类型。。。
------解决方案--------------------
按照书上说法,不是
------解决方案--------------------
Java里不是。

至于里面外面的原因,我没看清楚你写的,不过绝大部分原因是因为字符串常量区造成的错觉。
------解决方案--------------------
String是引用类型的一个类,不是基本的数据类型,基本数据类型都是原始类型。
------解决方案--------------------
引用:
今天突发奇想,不知道怎么的就想到了String是否是基本数据类型这个概念上了。。
在我的印象中,String是基本数据类型,但是百度了一下,很多说String是一个对象,而不是基本数据类型。
这样就产生了一个问题,如果一个方法传入一个String类型,外面的String类型的值是不会变的,而这属于基本数据类型的特性吧?
求高手详细解答下。

String是类,怎么可能是基本数据类型
public final class String
extends Object
implements Serializable, Comparable<String>, CharSequence

String类被称为不可变字符串
对String对象的修改是在new 一个新的String对象的基础上进行的
原来的String对象的内容并为改变啊
String aa ==“aa”;
aa=aa+“bb”;
等号右边产生一个新的对象,此时的aa的内容并为改变
之后aa指向新对象的引用。
至于方法传入String对象,这个就不需要解释了吧

------解决方案--------------------
如果是SCJP考试的话,绝对不会出现“基本数据类型”,而只会有“原生类型”(primitive types)

然后,你后面那部分不可变的疑问,很简单的回答你,请理解下必要和充分条件的区别

最后,如果只是平时不太严谨的聊天,比如XXX框架默认支持哪些基本数据类型的话,String显然是必备支持的。
------解决方案--------------------
String也是一个类,只不过他被内置在编译器中,可以这样使用:String s="25235"罢了
------解决方案--------------------

public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "abc";   //1、声明两个对象,值为"abc"的对象赋给str对象
new StringTest().setString(str);
System.out.println(str);  //4、str对象没有变
}
public void setString(String str1){  //2、声明了str1对象,把str对象赋给str1
str1 = "123"; //3、值为"123"的对象赋给str1对象
}