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

解决方案 »

  1.   

    只知道String不是基本数据类型
      

  2.   

    Java里不是。至于里面外面的原因,我没看清楚你写的,不过绝大部分原因是因为字符串常量区造成的错觉。
      

  3.   

    只知道string 是immutable 类型  不可变类
      

  4.   

    String是引用类型的一个类,不是基本的数据类型,基本数据类型都是原始类型。
      

  5.   

    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对象,这个就不需要解释了吧
      

  6.   

    如果是SCJP考试的话,绝对不会出现“基本数据类型”,而只会有“原生类型”(primitive types)然后,你后面那部分不可变的疑问,很简单的回答你,请理解下必要和充分条件的区别最后,如果只是平时不太严谨的聊天,比如XXX框架默认支持哪些基本数据类型的话,String显然是必备支持的。
      

  7.   

    基本类型应该是cpu直接支持的这种类型吧
      

  8.   

    String也是一个类,只不过他被内置在编译器中,可以这样使用:String s="25235"罢了
      

  9.   


    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对象
    }
      

  10.   

    参考http://developer.51cto.com/art/201009/225071_1.htm
    例如:public static void main(String[] args) {
    String s="Hello";
    }会先在常量池中创建“Hello”,然后在堆中创建new String("Hello")对象,最后在栈中创建一个String类型的指针s来指向堆中的对象。
      

  11.   

    我自己对"基本数据类型"的定义是这样的哦:
    内存中一段连续的字节数据,根据不同的数据类型可以用数字或某个符号来解释其含义。像long,double,int,boolean这些啊,可以简单的解释成某个数字。而String这样的类型,包含了很多其他额外的信息,如方法区信息,类型修饰符,继承信息等,这些都是面向对象中的概念,也是将"基本数据类型"组合而成的一些概念,所以这里像上面所说的"原生类型","组合类型"感觉更恰当些。
    如果说c语言中的char* 字符串是基本类型那还说的过去,java中的就算了
      

  12.   

    String不是基本数据类型
    8大基础类型
    byte,short,int,long,float,double,char,boolean
    String 是个对象,是引用类型基础类型与引用类型的区别是,基础类型只表示简单的字符或数字,引用类型可以是任何复杂的数据结构
    基本类型仅表示简单的数据类型,引用类型可以表示复杂的数据类型,还可以操作这种数据类型的行为
    java虚拟机处理基础类型与引用类型的方式是不一样的,对于基本类型,java虚拟机会为其分配数据类型实际占用的内存空间,而对于引用类型变量,他仅仅是一个指向堆区中某个实例的指针。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用 StringBuffer类。
      

  13.   

    搬出Java虚拟机规范的描述:
    The primitive data types supported by the Java Virtual Machine are the numeric types, the boolean type (§2.3.4), and the returnAddress type (§2.3.3).The numeric types consist of the integral types (§2.3.1) and the floating-point types (§2.3.2).因此基本数据类型就是:
    integral types , floating-point types , boolean type 和returnAddress type至于有些脑残的面试官要是问为什么String不是基本数据类型,就搬这句话出来吧
      

  14.   

    我认为可以这样理解。String 不是基本数据类型。它是一个对象,它是有属性和方法的。平常对字符的操作比较多。像int 它是基本数据类型,但是你能说Integer是基本数据类型吗?Integer是一个封装类。它是一个类,也可以说是一个对象。就像String一样,也是一个对象,也是一个类,它是有属性和方法的。不知道我这样说对否?
      

  15.   


    这样说的话long就有可能不是基本数据类型了,在32位cpu下,在一个时间片段内不能处理64位的long。
      

  16.   

    http://docs.oracle.com/javase/specs/jls/se5.0/html/conversions.html看看java语言规范啥都明白了。
      

  17.   

    String不是基本数据类型,而是Java封装的一个类,
    你在方法中调用其他的类对象,外面的值也不会改变啊,而且String是final类一旦被初始化就无法被改变
      

  18.   

    不是,基本类型只有四类八种
    整型 :int long
    浮点 :double float
    字符 :char
    布尔 :boolean
      

  19.   

    基本数据类型只有那么8种而已: byte,short,int,long,float,double,char,boolean
    而你所说的“如果一个方法传入一个String类型,外面的String类型的值是不会变的,而这
    属于基本数据类型的特性吧?”这个问题,那是因为String类型是jdk中的一个不可变类,也
    就是无论你怎么去虐待它,它依旧是当初的那个样子,给它剪头发也不行,这就是不可变类型
    的彪悍所在
      

  20.   

    如果一个方法传入一个String类型是不变的,而Stringbuffer是会变的
      

  21.   


    这样说的话long就有可能不是基本数据类型了,在32位cpu下,在一个时间片段内不能处理64位的long。

    搞笑,你以为怎么计算long型的呢?
      

  22.   

    书上面写的String是引用数据类型...
      

  23.   

    java是面向对象的语言。所以,java希望所有东西都是对象。但是将八种基本类型只设计为对象类型是不合适的。所以,才会有八种基本数据类型独立于对象类型之外。但是做为面向对象的语言,java也给出了基本类型对应的包装类。而String显然是对象类型。因为String类是final的,所以是断子绝孙的这么个东西。你也可以写属于自己的String工具类啊。
      

  24.   

    Technically String is not a wrapper class,because there is no corresponding primitive type 是最近在hao to Think like a computer scientist 中看到了这能不能说明他不是基本类型呢?
      

  25.   

    我在想是不是把String当参数的话。穿进去的是String的副本。即内部通过clone复制一个副本传进去。
      

  26.   

    不是  java基础类型就是 整型,实型,布尔型,字符型四类