toString 和new String()区别

本文详细解析了Java中String对象与byte数组之间的转换方法,包括toString()方法的使用及其实现原理,同时展示了如何将String转换为byte[]及反之。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class NewStringTestDemo {
public static void main(String[] args) {
String s = "你好";
byte[] b = {'a','b','c'};
System.out.println(s.toString());   //你好

System.out.println(new String(s));  //你好

System.out.println(b.toString());  //[B@15db9742
System.out.println(new String(b));    // abc
}
}

 

toString 若未重写,在object类中,返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())

 

转载于:https://www.cnblogs.com/lihaiwei/p/6773714.html

### Java 中 `toString` 方法与 `String` 构造函数的区别 #### `toString` 方法 `toString` 是 Java 中的一个重要方法,属于 `Object` 类的一部分。任何类都可以重写此方法来提供有意义的对象表示形式。 - **作用**:返回对象的字符串表示形式。 - **默认实现**:如果未被覆盖,默认会返回类似于 `className@hashCode` 的格式[^4]。 ```java @Override public String toString() { return this.getClass().getName() + "@" + Integer.toHexString(this.hashCode()); } ``` 对于自定义类来说,通常建议重写这个方法以便于调试日志记录: ```java public class Person { private String name; @Override public String toString() { return "Person{name='" + name + "'}"; } } ``` #### `String` 构造函数 另一方面,`String` 构造函数用于创建新的不可变字符序列实例——即字符串对象。 - **常见用途**:通过不同的参数初始化一个新的 `String` 对象。 - **示例** ```java // 使用构造函数创建带有指定 char 数组的字符串 char[] helloArray = {'h', 'e', 'l', 'l', 'o'}; String strFromArray = new String(helloArray); // 基于字节数组构建字符串 byte[] bytes = {72, 101, 108, 108, 111}; String strFromBytes = new String(bytes); ``` 值得注意的是,在现代 Java 编程实践中,直接使用 `new String()` 来创建字符串并不常见;大多数情况下推荐采用更简洁的方式如 `"literal"` 或者借助其他 API 函数完成相同功能[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值