Java之打印String對(duì)象的地址
Java打印String對(duì)象的地址
System函數(shù)
當(dāng)使用System.out.println()方法打印String類型對(duì)象時(shí),會(huì)輸出String對(duì)象代表的字符串,并不會(huì)輸出對(duì)象的地址。
因此,我們必須借助其他API來實(shí)現(xiàn)該功能。
實(shí)現(xiàn)代碼
一般,被打印的對(duì)象的形式為:java.lang.Object@1ff9dc36,由全限定類名+@+十六進(jìn)制數(shù)組成。
為了打印的字符串對(duì)象的形式和一般形式相同,我們還需要使用另外兩個(gè)方法,
- String.class.getName() 返回全限定類名
- java.lang.String;Integer.toHexString(int) 將十進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)并返回;
public class StringAddrTest { public static void main(String[] args) { String s ="hello world"; System.out.println(s.getClass().getName()+"@"+Integer.toHexString(System.identityHashCode(s))); } }
結(jié)果:
java.lang.String@816f27d
Java直接打印對(duì)象名卻輸出地址
使用System.out.println(對(duì)象),得到卻是該對(duì)象的地址。
如果想要輸出對(duì)象的描述,就需要重寫Object toString() 方法。
System.out的println()方法只能在控制臺(tái)輸出字符串,而Object toString() 方法用于返回對(duì)象的字符串表示形式。
也就是說,下面兩行代碼效果相同。
System.out.println(Student); System.out.println(Student.toString);
返回值
Object toString() 方法默認(rèn)返回格式:對(duì)象的 class 名稱 + @ + hashCode 的十六進(jìn)制字符串。
Student.java
package Test; public class Student { private String name; private int age; public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
Test.java
package Test; public class Test { public static void main(String[] args) { Student stu = new Student("張三",18); System.out.println(stu); } }
輸出結(jié)果:
如果想要輸出對(duì)象的描述,就需要重寫Object toString() 方法。
Student.java
package Test; public class Student { private String name; private int age; public Student() { } public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
Test.java
package Test; public class Test { public static void main(String[] args) { Student stu = new Student("張三",18); System.out.println(stu); } }
輸出結(jié)果:
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java中shiro框架和security框架的區(qū)別
這篇文章主要介紹了Java中shiro框架和security框架的區(qū)別,shiro和security作為兩款流行的功能強(qiáng)大的且易于使用的java安全認(rèn)證框架,在近些年中的項(xiàng)目開發(fā)過程中使用廣泛,今天我們就來一起了解一下兩者的區(qū)別2023-08-08springboot項(xiàng)目實(shí)現(xiàn)配置跨域
這篇文章主要介紹了springboot項(xiàng)目實(shí)現(xiàn)配置跨域問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-09-09Java Fluent Mybatis實(shí)戰(zhàn)之構(gòu)建項(xiàng)目與代碼生成篇上
Java中常用的ORM框架主要是mybatis, hibernate, JPA等框架。國內(nèi)又以Mybatis用的多,基于mybatis上的增強(qiáng)框架,又有mybatis plus和TK mybatis等。今天我們介紹一個(gè)新的mybatis增強(qiáng)框架 fluent mybatis2021-10-10Java?file.delete刪除文件失敗,Windows磁盤出現(xiàn)無法訪問的文件問題
這篇文章主要介紹了Java?file.delete刪除文件失敗,Windows磁盤出現(xiàn)無法訪問的文件問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06