1 java自带的有toString方法。不过一些时候会隐士的调用类对象的toString方法。当通过System.out.println()时,参数为类对象。这时就会调用类对象的toString方法。你可以重载toString方法。可以在toString方法中返回自己想要的结果。
!!!!可以说:如果方法的参数需要为字符串时,而参数是类对象时会自动调用类对象的toString方法转化为字符串。
为什么说是隐士的调用呢。是因为在jar都调用好了。
如:
package test1;
public class TestA {
private String name;
private String value;
public TestA() {
super();
// TODO Auto-generated constructor stub
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "{name:"+name+","+"value:"+value+"}";
}
}
//测试函数:
TestA test=new TestA();
test.setName("xcl");
test.setValue("8000");
System.out.println(test);//隐士的会调用该类的toString方法。因为该方法的参数类型为字符串,所以当为类对象时会隐士调用类对象的toString方法
2 还有可以直接调用toString方法。把需要返回的结果放在toString方法中进行组合。把类对象想要返回的为字符串的内容放在toString方法中进行组合拼接。
如:public class Commond {
private List<TestA> testList=new ArrayList();
public Commond() {
super();
// TODO Auto-generated constructor stub
}
public void add(TestA test){
testList.add(test);
}
public String toString(){
return testList.toString();
}
}
//测试函数:
TestA test=new TestA();
test.setName("xcl");
test.setValue("8000");
System.out.println(test);//隐士的会调用该类的toString方法。因为该方法的参数类型为字符串,所以当为类对象时会隐士调用类对象的toString方法
Commond commond=new Commond();
commond.add(test);
TestA test1=new TestA();
test1.setName("ddd");
test1.setValue("ddd1111");
commond.add(test1);
System.out.println(commond);
JSONObject json=new JSONObject();
json.element("data",commond.toString());//直接调用toString方法。
String neirong=json.toString();
System.out.println(neirong);
3 发现String.valueOf()方法的参数为Object时。看了下源代码。会调用Object对象的toString方法。就是说当通过String.valueOf(Object x)参数为类对象时。想要转化为字符串,会调用该类对象的toString方法。
如:
TestA test=new TestA();
test.setName("xcl");
test.setValue("8000");
new TestMain().aa(test);
public void aa(Object aaa){
String aa=String.valueOf(aaa);
System.out.println("aaaa:"+aa);
}
String.valueOf的源代码:
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();//能清楚的看到如果obj为null则返回null。否则会调用obj的toString方法。
}
!!!!!记住:如果类对象想要转化为字符串。会调用类对象的toString方法。这时我们就可以重载toString方法,拼接和组装我们想要的结果。
java和js的toStrong方法会被隐士的调用。在需要的方法的参数时字符串时,会隐士调用对象的toString方法,如果当前对象找不到toString方法就向上查找,查找该对象的父类。。。
---------------------
作者:xclsky1120
来源:CSDN
原文:https://blog.csdn.net/yumolan4325/article/details/79168658