为什么打印String对象,不是地址值?
来源:互联网 发布:程序员打太极 编辑:程序博客网 时间:2024/05/24 04:18
我们知道当打印对象的引用时,会默认调用Object类的toString()方法,返回的是一个字符串表示,该字符串的形式为类名+@+十六进制的哈希值;为什么String打印的不是这样一个地址值呢?因为String类继承自Object类,重写了从Object类拿到的toString()方法,返回的是该该对象本身,即字符串。详见下面API中Object的toString()方法和String类的toString()方法:
API中Object类的toString()方法:
public String toString()
- 返回该对象的字符串表示。通常,
toString
方法会返回一个“以文本方式表示”此对象的字符串。结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。 Object
类的toString
方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@
”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:getClass().getName() + '@' + Integer.toHexString(hashCode())
- 返回:
- 该对象的字符串表示形式。
API中String类的toString()方法:
toString
public String toString()
- 返回此对象本身(它已经是一个字符串!)。
- 指定者:
- 接口
CharSequence
中的toString
- 覆盖:
- 类
Object
中的toString
- 返回:
字符串本身。
- 返回:
Object类的equals()方法,默认是比较对象的地址值,一般使用时会重写该方法,用来比较对象的属性值。
String类继承Object类的equals()方法,并重写了该方法,比较的是字符串的内容。详见API:
public boolean equals(Object anObject)
- 将此字符串与指定的对象比较。当且仅当该参数不为
null
,并且是与此对象表示相同字符序列的String
对象时,结果才为true
。 - 覆盖:
- 类
Object
中的equals
- 参数:
anObject
- 与此String
进行比较的对象。- 返回:
- 如果给定对象表示的
String
与此String
相等,则返回true
;否则返回false
。 - 另请参见:
compareTo(String)
,equalsIgnoreCase(String)
阅读全文
1 0
- 为什么打印String对象,不是地址值?
- 为什么这段代码打印出来的不是数字,而是地址,链表插入的?
- 为什么Java的string类要设成对象,其他的基本类型为什么不是对象
- Java 深入学习(6) —— 打印 String 对象引用时显示的不是 hashCode 而是 String 对象本身的原因
- String对象为什么不可变
- JAVA编程自学不解:为什么打印输出不是孙悟空?
- Java基本数据类型取值范围,为什么String 不是基本数据类型,char的取值范围为什么没有负数
- Java String 对象内存地址
- java中为什么打印char数组输出是值,而其他是地址值
- java打印对象地址防止递归
- java打印对象地址防止递归
- Java打印对象的内存地址
- Swift怎么打印对象指针(地址)
- 为什么说C++不是完全面向对象的语言
- 为什么说C++不是完全面向对象的语言
- 为什么说C++不是完全面向对象的语言
- 为什么Java的String对象不能改变
- 为什么Java的String对象不能改变
- 使用两个栈实现一个队列+使用两个队列实现一个栈
- [置顶] 虚幻4引擎快速入门视频教程
- 【步兵 经验篇】游戏常用的三个处理
- 图结构绘板-教程
- Linux 用户配置文件
- 为什么打印String对象,不是地址值?
- JAVA面向对象
- 判断在存储数据使用的大小端
- 后台线程
- Android活动
- 常用的一些DOS命令
- VS2013+Ceres编译教程 Win7系统
- 数据库四种隔离级别
- tomcat 虚拟目录自定义404页面