Java之打印String對(duì)象的地址
Java打印String對(duì)象的地址
System函數(shù)
當(dāng)使用System.out.println()方法打印String類(lèi)型對(duì)象時(shí),會(huì)輸出String對(duì)象代表的字符串,并不會(huì)輸出對(duì)象的地址。
因此,我們必須借助其他API來(lái)實(shí)現(xiàn)該功能。
實(shí)現(xiàn)代碼
一般,被打印的對(duì)象的形式為:java.lang.Object@1ff9dc36,由全限定類(lèi)名+@+十六進(jìn)制數(shù)組成。
為了打印的字符串對(duì)象的形式和一般形式相同,我們還需要使用另外兩個(gè)方法,
- String.class.getName() 返回全限定類(lèi)名
- 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ì)象的描述,就需要重寫(xiě)Object toString() 方法。
System.out的println()方法只能在控制臺(tái)輸出字符串,而Object toString() 方法用于返回對(duì)象的字符串表示形式。
也就是說(shuō),下面兩行代碼效果相同。
System.out.println(Student); System.out.println(Student.toString);
返回值
Object toString() 方法默認(rèn)返回格式:對(duì)象的 class 名稱(chēng) + @ + 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ì)象的描述,就需要重寫(xiě)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)目開(kāi)發(fā)過(guò)程中使用廣泛,今天我們就來(lái)一起了解一下兩者的區(qū)別2023-08-08
springboot項(xiàng)目實(shí)現(xiàn)配置跨域
這篇文章主要介紹了springboot項(xiàng)目實(shí)現(xiàn)配置跨域問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-09-09
Java Fluent Mybatis實(shí)戰(zhàn)之構(gòu)建項(xiàng)目與代碼生成篇上
Java中常用的ORM框架主要是mybatis, hibernate, JPA等框架。國(guó)內(nèi)又以Mybatis用的多,基于mybatis上的增強(qiáng)框架,又有mybatis plus和TK mybatis等。今天我們介紹一個(gè)新的mybatis增強(qiáng)框架 fluent mybatis2021-10-10
Java?file.delete刪除文件失敗,Windows磁盤(pán)出現(xiàn)無(wú)法訪(fǎng)問(wèn)的文件問(wèn)題
這篇文章主要介紹了Java?file.delete刪除文件失敗,Windows磁盤(pán)出現(xiàn)無(wú)法訪(fǎng)問(wèn)的文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06

