java string object

本文深入解析Java中String对象的特性,包括newString()与stringpool的区别,string常量的生命周期,以及intern方法的使用场景。探讨了String的不可变性和各种操作如何影响内存分配。
部署运行你感兴趣的模型镜像

1. new String() 对象不放在 string pool里, 相同值的new String对象是不同的对象。 string 常量和 intern 方法生成的对象会在 string pool,不同引用指向同一个对象。

2. string常量在classload时生成,一般不会被GC。

3. 临时变量可以用new string(), 反复使用的场景可以用intern生成的对象。

4. String是final,immutable,String的substring,concat,replace,toLowercase等方法都会生成新string,java用StringBuilder做了优化。

 

 

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

Java 中,将字符串(String)转换为对象(Object)有多种方法,以下是一些常见的方式: ### 直接赋值 由于 `String` 类是 `Object` 类的子类,所以可以直接将 `String` 类型的变量赋值给 `Object` 类型的变量。 ```java public class StringToObjectDirect { public static void main(String[] args) { String str = "Hello, World!"; Object obj = str; System.out.println(obj); } } ``` ### 使用 `MessageBuilder` 构建 `Message` 对象 可以通过 `MessageBuilder` 构建 `Message` 对象,将字符串内容转换为 `Message` 对象的一部分。 ```java import org.springframework.messaging.Message; import org.springframework.messaging.support.MessageBuilder; public class StringToObjectMessage { public static void main(String[] args) { String content = "Hello, World!"; Message message = MessageBuilder.withBody(content.getBytes()) .setContentType(org.springframework.messaging.MessageProperties.CONTENT_TYPE_JSON) .setContentEncoding("utf-8") .build(); Object obj = message; System.out.println(obj); } } ``` ### 通过反序列化 如果字符串是序列化后的对象数据,可以通过反序列化将其转换为对象。以下是一个简单的示例: ```java import java.io.*; class MyClass implements Serializable { private String data; public MyClass(String data) { this.data = data; } @Override public String toString() { return "MyClass{" + "data='" + data + '\'' + '}'; } } public class StringToObjectDeserialization { public static void main(String[] args) throws IOException, ClassNotFoundException { MyClass myObject = new MyClass("Hello, World!"); ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bos); oos.writeObject(myObject); oos.flush(); byte[] bytes = bos.toByteArray(); String serializedString = new String(bytes); ByteArrayInputStream bis = new ByteArrayInputStream(serializedString.getBytes()); ObjectInputStream ois = new ObjectInputStream(bis); Object obj = ois.readObject(); System.out.println(obj); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值