◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
直接toString获取地址值与Arrays.toString()长度不同的原因
当使用str = c.toString();时,实际上调用的是Object类的toString()方法。这是因为char[]数组继承自Object,但没有覆盖toString()方法。因此,直接使用toString()会返回对象的默认字符串表示形式,即类的名称后跟一个@符号,后面是对象的哈希码,类似于[C@15db9742。
相反,Arrays.toString(c)专门用于获取数组元素的字符串表示。它将数组中的每个元素转换为字符串,并使用逗号将其连接起来,返回形式为[9, 0, 1, 0, 0, 0]的字符串。在这个例子中,数组包含7个字符,所以字符串包含7个元素,再加上每个元素的长度,总长度为18。
综上所述,直接使用toString()会返回对象的地址值,因为char[]没有重写Object类的toString()方法。 另一方面,Arrays.toString()返回数组元素的字符串表示,包括元素值及其逗号分隔符,长度等于元素数量加上逗号数量。
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。