String中有个方法,把字符串变成char数组,例如:str.toCharArray(),在调用的时候,该方法如何获取str的值进行操作,因为该方法并没有参数,没有把str这个字符串当作参数传递呀。。。。
你就把它当成一个实例化的String对象,它自己拆分自己
自己拆自己?这要怎么理解
类似一段伪代码,不知你能理解
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();
}
}
这个是面向对象的思想,str.toCharArray()这个语句执行的时候表示的toCharArray()方法是有str调用的,那么就会以当前对象执行当前方法,参数就是当前对象,或者this
toCharArray是String的一个非静态方法,要先创建实例才能运行,而这里的实例就是str这个字符串,他的参数其实已经在str里面传递了
String自己的属性方法当然能自己调用了,str就是String对象啊,要你那么说对象自己的set get 方法 还得穿自己的本身,岂不是一秒回到解放前?
String 是一个字符串对象,toCharArray,是字符串对象的一个方法,
这个对象调用这个方法的返回值是一个字符型数组
对象的方法调用的是他自己,
面向对象编程中,你写方法,例如 public void check() 他在一个class a中,就是属于这个对象的方法,在方法调用之前,你需要先声明一个对象
a test=new a() ; 然后才有,test.check
public static void test03() {
String str = "123456asdfg";
char[] sz = str.toCharArray();
for (int i=0; i<sz.length; i++) {
System.out.println(sz[i]);
}
}
String里有定义,str本身就是一不可变char[]
你别想得那么复杂,就把String当成一个普通的类,然后调用这个类的方法就行啦
str就是string类的一个实例化对象,string类的这个方法定义的时候就是无参方法,自然不需要传入参数啊,具体实现是JDK内部代码定义,应该不需要怎么纠结这个吧。。。
public char[] toCharArray() {
char result[] = new char[value.length];
System.arraycopy(value, 0, result, 0, value.length);
return result;
}
toCharArray()是String对象的内部方法。