Java之打印String對象的地址
Java打印String對象的地址
System函數(shù)
當使用System.out.println()方法打印String類型對象時,會輸出String對象代表的字符串,并不會輸出對象的地址。
因此,我們必須借助其他API來實現(xiàn)該功能。
實現(xiàn)代碼
一般,被打印的對象的形式為:java.lang.Object@1ff9dc36,由全限定類名+@+十六進制數(shù)組成。
為了打印的字符串對象的形式和一般形式相同,我們還需要使用另外兩個方法,
- String.class.getName() 返回全限定類名
- java.lang.String;Integer.toHexString(int) 將十進制數(shù)轉換為十六進制數(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)));
}
}結果:
java.lang.String@816f27d
Java直接打印對象名卻輸出地址
使用System.out.println(對象),得到卻是該對象的地址。
如果想要輸出對象的描述,就需要重寫Object toString() 方法。
System.out的println()方法只能在控制臺輸出字符串,而Object toString() 方法用于返回對象的字符串表示形式。
也就是說,下面兩行代碼效果相同。
System.out.println(Student); System.out.println(Student.toString);
返回值
Object toString() 方法默認返回格式:對象的 class 名稱 + @ + hashCode 的十六進制字符串。
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);
}
}輸出結果:

如果想要輸出對象的描述,就需要重寫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);
}
}輸出結果:

總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java中shiro框架和security框架的區(qū)別
這篇文章主要介紹了Java中shiro框架和security框架的區(qū)別,shiro和security作為兩款流行的功能強大的且易于使用的java安全認證框架,在近些年中的項目開發(fā)過程中使用廣泛,今天我們就來一起了解一下兩者的區(qū)別2023-08-08
Java Fluent Mybatis實戰(zhàn)之構建項目與代碼生成篇上
Java中常用的ORM框架主要是mybatis, hibernate, JPA等框架。國內又以Mybatis用的多,基于mybatis上的增強框架,又有mybatis plus和TK mybatis等。今天我們介紹一個新的mybatis增強框架 fluent mybatis2021-10-10
Java?file.delete刪除文件失敗,Windows磁盤出現(xiàn)無法訪問的文件問題
這篇文章主要介紹了Java?file.delete刪除文件失敗,Windows磁盤出現(xiàn)無法訪問的文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06

