public class Test {
//main方法既是程式的入口也是程式的出口
public static void main(String[] args) {//程式的入口
User user = new User();
System.out.println(user);
System.out.println(user.toString());//對象中沒有重寫toString方法,重寫了則是調用自己的toString方法
// 沒有重寫則預設調用Object類中的toString方法
String string = "abc";
System.out.println(string);//預設調用了String類的toString方法,傳回自己本身的值
ArrayList<String> al = new ArrayList<>();
al.add("a");
System.out.println(al.toString());//預設調用AbstractCollection類的toString方法
char[] c = {'s', 'g'};
System.out.println(c);//字元數組,預設不是toString,就是本身字元
int[] arr = new int[4];
System.out.println(arr);//除了字元類型數組,其他類型數組列印數組名列印一定是位址值,
// 預設調用Object類中的toString方法
}//程式的出口
}
class User {
@Override
public String toString() {
return "我是自己定義的toString方法";
}
}
如上圖總結:調用了Object類的中toString方法則是位址值,注意char類型數組則是自己本身!
自定義對象如果重寫了toString方法則調用自己.否則調用Object類中的toString方法!