请问大家, 为什么一个String的变量,就可以调用String类的方法呢,这个问题,是很弱,但是能有几个人答出来呢。

解决方案 »

  1.   

    String类的方法属于每一个String类实例(变量),它自己的东西为什么不能调用啊?
      

  2.   

    String str="s"    字符串池
      

  3.   

    String 是一个类,是一个final的类
      创建了一个String 对象,就能调用其对应的方法
      

  4.   


    其实这个问题很难,简单地回答这是规则,面向对象的规则,java的规则
    其实也就是语法,掌握了就好
      

  5.   

    ;pho'0'[h']-
    jnp
    ]p-j
    -
      

  6.   

    String str = "abc";与String str = new String("abc");有什么区别??
    前者作为字符串变量,具有不可变的性质,无法改变。后者呢??是不是一样?
      

  7.   

    String s = "abc";
    创建了一个对象
    String s = new String("abc");
    创建了两个对象
      

  8.   

    public demo(String text){
    text.getBytes();//getBytes是string类的方法,
    }
    那这个过程text是new的String 类呢
      

  9.   

    那这个过程text是如何newString类的呢?
      

  10.   

    String是引用数据类型的,所以String类型的就是一个对象,是对象如果没赋值它就为null,与其他的基本数据类型不同,比如int要借助封装类Integer,申明int类型如果没赋值这默认为0。
    String既然是对象,那么就应该可以调用它本身的方法
      

  11.   

    String 被封装成为一个对象了,而这时这个变量便去调用它自身了
      

  12.   

    要理解这些需要先弄明白 JVM 中的一些概念:栈、堆、方法区、方法表、对象、引用、指针、偏移量,
    以及类似 Person stu = new Student() 等号左边 Person 和 stu,以及等号右边 new 和 Student()
    的含义,以及 stu.getName() 中 stu、点和 getName() 的含义。Java 所创建的对象,会通过方法区去寻找类数据,最终会在堆中分配空间。某个类的方法在方法表中都存放着一个内存地址偏移量,只有在实例对象产生后,确定对象的首地址,
    再通过方法表中的偏移量就能找到正确需要调用的方法了。通过方法表查找的方法是根本对象引用类型数据确定的,比如:Object obj = new Student(); 由于
    对象引用是属于 Object 类型的,因此这个引用也只能查找到 Object 的方法的偏移量。因为 Object
    属于任何类、数组的超类,因此会被存放在方法表索引的开头位置处。
      

  13.   

    http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.12.1
    lz认为做企业应用的我们需要知道这些吗?
      

  14.   


    呵呵,曾经在 CSDN 中看到不同三个人的回复时间的时、分、秒都是一样的。
      

  15.   

    String 是不可改变对象类型
    是对象,就有方法,他不是基本类型,如int,是没有方法的,所有java有int的包装类IntegerString str = "abc";  abc是存储再字符池中,str是引用,指向了字符串池中的"abc",str是字符串类型的对象,可以调用该String类的方法
      

  16.   

    如果字符串池中有了该字符串,那么直接获取池中的字符串,不会再次生成一个字符串
    例如:String s1 = “abc”; String s2 = “abc” s1=s2 为 true
    但是 String s1 = new String(“abc”); String s2 = new String(“abc”);s1=s2为false,是两个对象,因为使用了new
      

  17.   

    如果string是一个变量就有点难回答,但我一直认为string是一个对象
      

  18.   

    因为 String变量 is String 所以 String变量具有String类中定义的方法(说的不是很完整)(不是调用String类的方法)
    这个是 面向对象规定的
      

  19.   

    这好像没有什么啊!
    String类型的变量就是一个String类的实例,
    当然可以调用String类的方法了!
      

  20.   

    这个问题其实很简单,String类型的变量不是基本数据类型,它是引用数据类型,更确切的说,它是包装类。
    String str="abc";
    通常这样的表达式表示在常量池中创建了匿名对象,然后将str指向这个对象的地址。
    str更确切的说是一个String类型对象,所以它是有方法的。
      

  21.   

    我的理解是String是以变量形式存储的对象。String str="abc";str虽然看起来是个变量,但实际上它仍是一个对象。并且,方法的调用是根据引用来确定的,而不是根据实际对象确定的所以,String 对象(形式上的变量)能调用一切属于String 对象的方法
      

  22.   

    难道是 “原型” ( prototype ) 这方面的内容?
      

  23.   

    dddddddddddd dddddddddddddd ddddddddddddddd dddddddddddddddddd dddddddddddddd dddddddddddddd ddddddddddddddd dddddddddddddd dddddddd
      

  24.   

    String的变量就是指向一个String对象的应用
    String对象就是一个String类的实例
    所以可以就像鲤鱼会在水里游一样---因为他是鱼类
      

  25.   

    好问题!要完全搞清楚还是要读一读Java language spec,和虚拟机实现的源码。从反射入手是一个捷径。-------------------------
    TechQ: Java, C/C++源码库
      http://www.techq.com
      

  26.   

    string不是基本类型,是一个对象型的;定义一个String类型,当然可以调用自己的方法了。