Java之打印String对象的地址
Java打印String对象的地址
System函数
当使用System.out.println()方法打印String类型对象时,会输出String对象代表的字符串,并不会输出对象的地址。
因此,我们必须借助其他API来实现该功能。
实现代码
一般,被打印的对象的形式为:java.lang.Object@1ff9dc36,由全限定类名+@+十六进制数组成。
为了打印的字符串对象的形式和一般形式相同,我们还需要使用另外两个方法,
- String.class.getName() 返回全限定类名
- java.lang.String;Integer.toHexString(int) 将十进制数转换为十六进制数并返回;
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); } }
输出结果:
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
SpringBoot+actuator和admin-UI实现监控中心方式
这篇文章主要介绍了SpringBoot+actuator和admin-UI实现监控中心方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-05-05Spring MVC结合Spring Data JPA实现按条件查询和分页
这篇文章主要为大家详细介绍了Spring MVC结合Spring Data JPA实现按条件查询,以及分页效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-10-10springBoot整合jwt实现token令牌认证的示例代码
实施Token验证的方法挺多的,还有一些标准方法,比如JWT,本文主要介绍了springBoot整合jwt实现token令牌认证的示例代码,具有一定的参考价值,感兴趣的可以了解一下2024-08-08SpringBoot @PropertySource与@ImportResource有什么区别
这篇文章主要介绍了SpringBoot @PropertySource与@ImportResource有什么区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧2023-01-01Spring的异常处理@ExceptionHandler注解解析
这篇文章主要介绍了Spring的异常处理@ExceptionHandler注解解析,当一个Controller中有方法加了@ExceptionHandler之后,这个Controller其他方法中没有捕获的异常就会以参数的形式传入加了@ExceptionHandler注解的那个方法中,需要的朋友可以参考下2023-12-12
最新评论