做網(wǎng)站有哪些注意事項(xiàng)百度關(guān)鍵詞在線優(yōu)化
之前一直認(rèn)為toString就是將數(shù)據(jù)轉(zhuǎn)換成字符類型,直到最近寫(xiě)出了一個(gè)bug才對(duì)toString有了新的認(rèn)識(shí)
不同數(shù)據(jù)類型,toString() 有不同的操作
- 定義一個(gè)student類,包含姓名 String類型、性別 String類型、年齡 int 類型、分?jǐn)?shù)列表 String類型的list類型
public class Student {String name;String sex;int age;List<Integer> scoreList;public List<Integer> getScoreList() {return scoreList;}public void setScoreList(List<Integer> scoreList) {this.scoreList = scoreList;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", sex='" + sex + '\'' +", age=" + age +", scoreList=" + scoreList +'}';}
}
- 測(cè)試toString方法
public static void main(String[] args) {List<Integer> scoreList = new ArrayList<>();scoreList.add(1);scoreList.add(2);scoreList.add(3);Student student = new Student();student.setName("ziyuan");student.setSex("F");student.setScoreList(scoreList);System.out.println("student:" + student);}
- 運(yùn)行結(jié)果,toString()方法的解析
toString調(diào)用
student:Student{name='ziyuan', sex='F', age=0, scoreList=[1, 2, 3]}
System.out.println輸出字符串,通過(guò)+實(shí)現(xiàn)student對(duì)象和"student:“字符串的拼接,其實(shí)是調(diào)用了student對(duì)象的toString()方法。
在toString方法中,“name='” + name : 也是調(diào)用了String類型的name變量的toString(),查看源代碼得知String的toString方法就是返回本身,所以name.toString() 返回本身name,所以輸出name=‘ziyuan’,同理得出sex=‘F’
“, age=” + age : age是int類型,int類型是Java中的基本數(shù)據(jù)類型之一,直接將age變量以字符串的格式拼接在”, age="后面,age因?yàn)闆](méi)有賦值,采用默認(rèn)值0,故最終輸出age=0
“, scoreList=” + scoreList :scoreList是Integer類型的ArrayList列表,拼接調(diào)用了ArrayList類型的toString,查看ArrayList中的toString方法如何定義,ArrayList中沒(méi)有定義toString方法,繼續(xù)往上找,查看AbstractList中如何定義
AbstractList中也沒(méi)有定義,繼續(xù)往上找,查看AbstractCollection如何定義,
AbstractCollection有定義toString,如下圖所示:
故最終輸出scoreList=[1, 2, 3]
- ArrayList 重新了toString方法,讓數(shù)據(jù)內(nèi)容比較直觀的展示,但并不是所有的類型都進(jìn)行了toString方法的重寫(xiě),比如數(shù)組
toString方法返回的字符串表示該對(duì)象的類型和哈希碼 ,如何希望返回實(shí)際的值或者其他自定義的值,可以重寫(xiě)toString方法