String类型的变量为什么可以直接调用方法

不知道你说的是java里的String 还是C#中的,不过这很相似。它们都是面对对象的语言,对于java String 不是一个基本数据类型,它是一个引用类型,简单说,它就是一个类,比较特别的类,特别之处就是它的直接赋值就可以创建它的对象。你的s1其实就是String 的一个对象,所以它能使用String类的方法。对于C#,string 也是一个基本数据类型,不过所有的数据类型都是它包装类的对象。 我是这么理解的,可能有不准确或者理解有误的地方,不过还是希望能帮助你