我的问题:http://community.csdn.net/Expert/topic/4621/4621483.xml?temp=.501095
我要将一个文件中的条目(一般形式为name = value)逐条加入一个HashMap对象hm中
现在采用的方法是设两个String临时变量key,value,每读一条就执行hm.put(key,value)
但是我记得集合类都是以引用方式加入的,这是不是说,当我读取下一条记录时,由于key和value变了,会导致之前加入HashMap的值也变化?
===================================
答:String是只读类,所以没有关系
如果换成StringBuffer,就有关系了,如代码:
import java.util.*;
public class test3 {
public static void main(String[] args)
{
StringBuffer a1 = new StringBuffer("1");
//String a2 = a1;
//a2 = "2";
ArrayList ar = new ArrayList();
ar.add(a1);
System.out.println( "a1 = " + a1 );
a1.append('a');
System.out.println( "then: a1 = " + a1 );
}}
输出:
a1 = 1
then: a1 = 1a
分享到:
相关推荐
在Java编程语言中,String和StringBuffer是两个重要的类,它们在处理文本数据时有着显著的区别。String类代表不可变的字符序列,一旦创建,其值就不能改变。这意味着每次对String对象进行修改(如拼接操作)都会创建...
在Java编程语言中,`String` 类型是非常基础且重要的数据类型之一,它代表了一系列字符的有序集合。本篇文章将基于一个具体的示例代码,深入探讨`String`对象的创建、比较以及不同字符串操作方式的性能差异。 #### ...
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变...
- **String 与 StringBuffer 的区别** `String` 是不可变的,而 `StringBuffer` 是可变的。这意味着如果你需要频繁地修改字符串,使用 `StringBuffer` 更为高效,因为它不需要每次修改都创建一个新的对象。 #### ...
- StringBuilder与StringBuffer:在需要频繁修改字符串时,这两个类比String更高效。 3. **数组与集合**: - 数组:Java提供了单列和多列数组,源码中可能有对数组的初始化、遍历、排序等操作。 - 集合框架:...
- 便于使用:不可变性使得`String` 类非常适合作为键值存储在HashMap等集合中。 示例代码: ```java final String str1 = "a"; String str2 = str1 + "b"; // str2 的值为 "ab",但 str1 的值仍然是 "a" ``` #### ...
8. String str="i"与 String str=new String("i")一样吗? 不一样,因为内存的分配方式不一样。String str="i"的方式,java 虚拟机会将其分配到常量池中;而 String str=new String("i") 则会被分到堆内存中。 9. ...
首先,我们来分析`String`、`StringBuffer`和`StringBuilder`的区别。`String`是不可变对象,一旦创建,其内容无法改变,每次对`String`进行修改都会生成新的对象。这在多线程环境下可能导致不必要的资源消耗。相反...
#### 四、String与StringBuffer的区别 **String**:表示不可变的字符序列,一旦创建后无法修改。 **StringBuffer**:表示可变的字符序列,可以动态地改变字符串的内容。 **使用场景**: - 如果字符串经常需要被...
了解它的构造函数、常用方法(如concat、substring、indexOf、replace等)以及与StringBuilder和StringBuffer的区别,对于编写高效代码至关重要。 4. **IO流**:Java的输入/输出系统基于流的概念,包括字节流和字符...
4. **String与StringBuilder/StringBuffer的区别**:比较在多线程环境下,何时使用StringBuilder/StringBuffer以提高性能。 5. **字符串常量池**:介绍Java内存模型中的字符串常量池,以及它的作用和工作原理。 6....
5. **String与StringBuffer** - `String`类表示不可变的字符串,它的"+"操作符用于字符串连接,每次连接都会创建新的String对象,效率较低。 - `StringBuffer`类提供可变的字符串,其`append`方法用于连接字符串,...
与`String`不同,`StringBuffer`的实例可以被多次修改而不会创建新的对象。 `Math`类提供了许多数学运算方法,如`abs()`、`ceil()`、`floor()`、`max()`、`min()`和`random()`等。`SimpleDateFormat`类则用于格式化...
知识点三:String和StringBuffer的比较 * 使用==操作符比较两个String对象时,比较的是对象的引用,而不是对象的值 * 使用equals()方法比较两个String对象时,比较的是对象的值 知识点四:String类的immutable特性...
super 的使用、匿名内部类、JDK 中的常量与不可变性、String 类型的理解、字符串拼接、String 的可变性、String 对象的创建、StringBuffer 与 String 的区别、StringBuffer 与 StringBuilder 的区别、String 的长度...
频繁地对String进行这种操作会导致内存浪费,这时可以考虑使用StringBuilder或StringBuffer类来进行字符串拼接,以提高效率。 问题四:数组与集合的区别 数组是一种固定大小的数据结构,元素类型必须一致,且在创建...
- **StringBuilder 与 StringBuffer**:在需要频繁修改字符串的情况下,使用 `StringBuilder` 或 `StringBuffer` 类来代替 `String` 更加高效。这是因为 `StringBuilder` 和 `StringBuffer` 都是可以修改的,不会像 ...