Java之打印String对象的地址

 更新时间:2023年09月28日 09:35:14   作者:weixin_43831204  
这篇文章主要介绍了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);
    }
}

输出结果:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java基于Swing和netty实现仿QQ界面聊天小项目

    Java基于Swing和netty实现仿QQ界面聊天小项目

    这篇文章主要为大家详细介绍了Java如何利用Swing和netty实现仿QQ界面聊天小项目,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-09-09
  • SpringBoot+actuator和admin-UI实现监控中心方式

    SpringBoot+actuator和admin-UI实现监控中心方式

    这篇文章主要介绍了SpringBoot+actuator和admin-UI实现监控中心方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java springboot 整合 Nacos的实例代码

    Java springboot 整合 Nacos的实例代码

    这篇文章主要介绍了Java springboot 整合 Nacos的实例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • Spring MVC结合Spring Data JPA实现按条件查询和分页

    Spring MVC结合Spring Data JPA实现按条件查询和分页

    这篇文章主要为大家详细介绍了Spring MVC结合Spring Data JPA实现按条件查询,以及分页效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • springBoot整合jwt实现token令牌认证的示例代码

    springBoot整合jwt实现token令牌认证的示例代码

    实施Token验证的方法挺多的,还有一些标准方法,比如JWT,本文主要介绍了springBoot整合jwt实现token令牌认证的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • SpringBoot @PropertySource与@ImportResource有什么区别

    SpringBoot @PropertySource与@ImportResource有什么区别

    这篇文章主要介绍了SpringBoot @PropertySource与@ImportResource有什么区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-01-01
  • J2SE基础之命令行中编写第一个 Hello World

    J2SE基础之命令行中编写第一个 Hello World

    “Hello World”程序指的是只在计算机屏幕上输出“Hello, World!”(意为“世界,你好!”)这行字符串的计算机程序。hello world作为所有编程语言的起始阶段,占据着无法改变的地位,所有的编程第一步就在于此了!经典之中的经典!hello world!
    2016-05-05
  • Spring基于常用AspectJ切点表达式使用介绍

    Spring基于常用AspectJ切点表达式使用介绍

    AspectJ是一个基于Java语言的AOP框架,使用AspectJ需要导入Spring AOP和AspectJ相关jar包,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • Spring的异常处理@ExceptionHandler注解解析

    Spring的异常处理@ExceptionHandler注解解析

    这篇文章主要介绍了Spring的异常处理@ExceptionHandler注解解析,当一个Controller中有方法加了@ExceptionHandler之后,这个Controller其他方法中没有捕获的异常就会以参数的形式传入加了@ExceptionHandler注解的那个方法中,需要的朋友可以参考下
    2023-12-12
  • 使用Feign动态设置header和原理分析

    使用Feign动态设置header和原理分析

    这篇文章主要介绍了使用Feign动态设置header和原理分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03

最新评论