`
dr2tr
  • 浏览: 142367 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

集合引用与String,StringBuffer

阅读更多

我的问题: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的区别.doc

    在Java编程语言中,String和StringBuffer是两个重要的类,它们在处理文本数据时有着显著的区别。String类代表不可变的字符序列,一旦创建,其值就不能改变。这意味着每次对String对象进行修改(如拼接操作)都会创建...

    详解Java的String类型程序

    在Java编程语言中,`String` 类型是非常基础且重要的数据类型之一,它代表了一系列字符的有序集合。本篇文章将基于一个具体的示例代码,深入探讨`String`对象的创建、比较以及不同字符串操作方式的性能差异。 #### ...

    史上最全Java面试题目大集合

    JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变...

    java程序员面试题集合

    - **String 与 StringBuffer 的区别** `String` 是不可变的,而 `StringBuffer` 是可变的。这意味着如果你需要频繁地修改字符串,使用 `StringBuffer` 更为高效,因为它不需要每次修改都创建一个新的对象。 #### ...

    JAVA案例集合源码

    - StringBuilder与StringBuffer:在需要频繁修改字符串时,这两个类比String更高效。 3. **数组与集合**: - 数组:Java提供了单列和多列数组,源码中可能有对数组的初始化、遍历、排序等操作。 - 集合框架:...

    JAVA中关于String的一些注意点

    - 便于使用:不可变性使得`String` 类非常适合作为键值存储在HashMap等集合中。 示例代码: ```java final String str1 = "a"; String str2 = str1 + "b"; // str2 的值为 "ab",但 str1 的值仍然是 "a" ``` #### ...

    Java面试题大全2023版.docx

    8. String str="i"与 String str=new String("i")一样吗? 不一样,因为内存的分配方式不一样。String str="i"的方式,java 虚拟机会将其分配到常量池中;而 String str=new String("i") 则会被分到堆内存中。 9. ...

    java面试题集合

    首先,我们来分析`String`、`StringBuffer`和`StringBuilder`的区别。`String`是不可变对象,一旦创建,其内容无法改变,每次对`String`进行修改都会生成新的对象。这在多线程环境下可能导致不必要的资源消耗。相反...

    java面试笔试题集合

    #### 四、String与StringBuffer的区别 **String**:表示不可变的字符序列,一旦创建后无法修改。 **StringBuffer**:表示可变的字符序列,可以动态地改变字符串的内容。 **使用场景**: - 如果字符串经常需要被...

    这是本人学习过程中记录的一些代码!从Java基础的数据类型、修饰符、String类、IO、集合、线程等等到一些常用框架

    了解它的构造函数、常用方法(如concat、substring、indexOf、replace等)以及与StringBuilder和StringBuffer的区别,对于编写高效代码至关重要。 4. **IO流**:Java的输入/输出系统基于流的概念,包括字节流和字符...

    MLDN魔乐JAVA_07作业讲解、String.rar

    4. **String与StringBuilder/StringBuffer的区别**:比较在多线程环境下,何时使用StringBuilder/StringBuffer以提高性能。 5. **字符串常量池**:介绍Java内存模型中的字符串常量池,以及它的作用和工作原理。 6....

    java教程课件5基本数据类型与引用类型

    5. **String与StringBuffer** - `String`类表示不可变的字符串,它的"+"操作符用于字符串连接,每次连接都会创建新的String对象,效率较低。 - `StringBuffer`类提供可变的字符串,其`append`方法用于连接字符串,...

    Java基础入门教程 第6章 集合框架(共28页).ppt

    与`String`不同,`StringBuffer`的实例可以被多次修改而不会创建新的对象。 `Math`类提供了许多数学运算方法,如`abs()`、`ceil()`、`floor()`、`max()`、`min()`和`random()`等。`SimpleDateFormat`类则用于格式化...

    (完整版)Java常用类习题.doc

    知识点三:String和StringBuffer的比较 * 使用==操作符比较两个String对象时,比较的是对象的引用,而不是对象的值 * 使用equals()方法比较两个String对象时,比较的是对象的值 知识点四:String类的immutable特性...

    W3School离线手册

    super 的使用、匿名内部类、JDK 中的常量与不可变性、String 类型的理解、字符串拼接、String 的可变性、String 对象的创建、StringBuffer 与 String 的区别、StringBuffer 与 StringBuilder 的区别、String 的长度...

    java初学者都应该搞懂的六个问题.doc

    频繁地对String进行这种操作会导致内存浪费,这时可以考虑使用StringBuilder或StringBuffer类来进行字符串拼接,以提高效率。 问题四:数组与集合的区别 数组是一种固定大小的数据结构,元素类型必须一致,且在创建...

    JAVA开发需注意的六个问题

    - **StringBuilder 与 StringBuffer**:在需要频繁修改字符串的情况下,使用 `StringBuilder` 或 `StringBuffer` 类来代替 `String` 更加高效。这是因为 `StringBuilder` 和 `StringBuffer` 都是可以修改的,不会像 ...

Global site tag (gtag.js) - Google Analytics