2 xszst2014 xszst2014 于 2016.09.08 13:05 提问

最近有个问题,突然想不通了,来问问哈

String中有个方法,把字符串变成char数组,例如:str.toCharArray(),在调用的时候,该方法如何获取str的值进行操作,因为该方法并没有参数,没有把str这个字符串当作参数传递呀。。。。

12个回答

cs1075341779
cs1075341779   2016.09.08 15:11

这个是面向对象的思想,str.toCharArray()这个语句执行的时候表示的toCharArray()方法是有str调用的,那么就会以当前对象执行当前方法,参数就是当前对象,或者this

zshcomeon
zshcomeon   2016.09.08 14:56

类似一段伪代码,不知你能理解
class String{
private char[] c = null;

 public String(char[] c ){
   this.c = c;
 }

 pulbic toCharArray(){
       return c;
 }

}

class Test{

pulbic staitc main(String[] args){
String str = new String({'a','b'});
str.toCharArray();
}
}

qq_25673113
qq_25673113   2016.09.08 16:28

toCharArray是String的一个非静态方法,要先创建实例才能运行,而这里的实例就是str这个字符串,他的参数其实已经在str里面传递了

bdmh
bdmh   Ds   Rxr 2016.09.08 13:51

你就把它当成一个实例化的String对象,它自己拆分自己

xszst2014
xszst2014   2016.09.08 14:46

自己拆自己?这要怎么理解

zhuzige521888
zhuzige521888   2016.09.08 17:23

String自己的属性方法当然能自己调用了,str就是String对象啊,要你那么说对象自己的set get 方法 还得穿自己的本身,岂不是一秒回到解放前?

qq_29594393
qq_29594393   Ds   Rxr 2016.09.08 17:24

String 是一个字符串对象,toCharArray,是字符串对象的一个方法,
这个对象调用这个方法的返回值是一个字符型数组
对象的方法调用的是他自己,
面向对象编程中,你写方法,例如 public void check() 他在一个class a中,就是属于这个对象的方法,在方法调用之前,你需要先声明一个对象
a test=new a() ; 然后才有,test.check

daxia_DN
daxia_DN   2016.09.08 17:44
 public static void test03() {
        String str = "123456asdfg";
        char[] sz = str.toCharArray();
        for (int i=0; i<sz.length; i++) {
            System.out.println(sz[i]);
        }
    }
Ro_bot
Ro_bot   2016.09.08 19:24

String里有定义,str本身就是一不可变char[]

oSanYeCao1234567
oSanYeCao1234567   Ds   Rxr 2016.09.10 22:57

你别想得那么复杂,就把String当成一个普通的类,然后调用这个类的方法就行啦

共12条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片