java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java打印String对象的地址

Java之打印String对象的地址

作者:weixin_43831204

这篇文章主要介绍了Java之打印String对象的地址,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Java打印String对象的地址

System函数

当使用System.out.println()方法打印String类型对象时,会输出String对象代表的字符串,并不会输出对象的地址。

因此,我们必须借助其他API来实现该功能。

实现代码

一般,被打印的对象的形式为:java.lang.Object@1ff9dc36,由全限定类名+@+十六进制数组成。

为了打印的字符串对象的形式和一般形式相同,我们还需要使用另外两个方法,

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);
    }
}

输出结果:

总结

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

您可能感兴趣的文章:
阅读全文