`
xinglongbing
  • 浏览: 147782 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

论坛上一个讨论String的问题

 
阅读更多

public class Test {

public static void changeStr(String str) 

  str="name"; 


public static void main(String []args) 

  String str=null;
  changeStr(str); 
  System.out.println(str); 

}

问题是打印结果为什么为null。

很多人讨论的结果是由于String属于一个Immutable类,因此当改变其内容时返回的实际上是一个新对象的引用。

这个问题应该跟String是什么类型没有关系的,完全是怎末理解传值或传引用的问题。

这里虽然传递到changeStr方法的参数是引用,但实际也是一个引用值的拷贝,在方法里面是该引用指向了其他对象

也就是改变了该引用值,对方法外的引用值是没有影响的,因此这还是一个传值问题而不是其他String为不可变类型

的问题。

分享到:
评论

相关推荐

    Java中String判断值为null或空及地址是否相等的问题

    本文主要讨论了如何正确判断Java中的String对象是否为null、空值("")以及它们的地址是否相等。在处理字符串时,了解这些概念对于避免程序出错至关重要。 首先,我们需要区分`null`和空字符串`""`。`null`表示变量...

    介绍java中String类的方法

    下面我们将详细讨论String类的一些主要特性、实例化方式以及常用方法。 1. **String类的实例创建**: - 直接赋值:`String userName = "Eric";` 这种方式创建的String对象是在常量池中,如果已有相同内容的字符串...

    JAVA String.format方法使用介绍

    在JDK1.5中,String类增加了一个非常有用的静态函数format(String format, Objece... argues),可以将各类数据格式化为字符串并输出。其中format参数指定了输出的格式,是最复杂也是最难掌握的一点,而argues则是一...

    C++里如何将int类型的16进制数转换成string类型[归类].pdf

    这个问题的核心是如何将数字转换成字符串。 在 C++ 中,有多种方法可以将 int 类型的 16 进制数转换成 string 类型。下面我们将讨论两种常见的方法。 方法一:使用 ostringstream 在问题中,我们看到的代码使用 ...

    sizeof和sizeof(string)的问题 - wanghetao - 博客园1

    下面将详细讨论`sizeof`以及与`sizeof(string)`相关的问题。 首先,`sizeof`可以应用于任何类型的变量,包括基本类型(如int、char、float等)、自定义类型(如结构体、类)以及数组。对于基本类型,`sizeof`返回的...

    String.intern – 字符串池

    这篇文章将要讨论 Java 6 中是如何实现 String.intern 方法的,以及这个方法在 Java 7 以及 Java 8 中做了哪些调整。

    头文件 string.h cstring string 区别.pdf

    `<string>`是C++标准库的一部分,它定义了`std::string`类模板,这是C++中的字符串对象。`std::string`提供了丰富的字符串操作方法,如赋值、拼接、查找、比较等,并且支持迭代器和STL容器的操作。使用`<string>`...

    JAVA小论文(浅谈String类)

    String类对象有这样一个重要特性:只读性,就是其内容一旦确定了就不可以更改。 在Java中,字符串可以由英文双引号(” ”)引起,字符串就是一个字符序列。例如:“This is a string.”。而由英文单引号(’’)...

    MyBatis 参数类型为String时常见问题及解决方法

    首先,我们来看第一个问题:**参数为String时的插值问题**。在MyBatis中,当接口方法的参数类型为String时,Mapper XML文件中的动态SQL部分可能会出现异常。例如,我们有一个`findByAccountType`方法,其参数类型为...

    java String源码和String常量池的全面解析

    在上面的代码中,我们使用 new 关键字创建了一个 String 对象 a,並使用字面量创建了另一个 String 对象 b。由于 a 和 b 引用的是不同的对象,所以输出结果为 false。 通过这两个示例代码,我们可以看到 String ...

    Java中String类的方法及说明.pdf

    1. `String(byte[] bytes)`:这个构造函数接收一个字节数组,并根据该数组创建一个新的字符串。字节序列按照平台的默认字符集解码为字符序列。 2. `String(char[] value)`:通过字符数组构建字符串,将数组中的每个...

    详细解说STLstring.pdf

    本文档对 STL string 进行了深入解析,讨论了 C++ 语言在文本处理方面的缺陷,以及如何使用 STL string 来简化文本处理。通过对比 Shell 编程和 C++ 编程的差异,作者强调了 STL string 的重要性。 首先,作者指出 ...

    C#中string.Empty和null的区别详解

    这是一个及其常见的问题,网上已经有关于这个问题的很多讨论。但是我觉得都是不求甚解,有一些还是在误导别人。下面我来说下我对这三者的理解,如有错误的地方请大家及时指正。  一:””与string.Empty我认为是...

    Java String初始化String域例题解析

    从上面的代码中,我们可以看到,String s1 和 String s2 使用了同一个字符串常量 "abc",因此它们的地址是一样的,也就是说,s1 和 s2 指向了同一个对象。然而,String s3 和 String s4 使用了 new 关键字创建了新的...

    20120930_用string存取二进制数据1

    然而,当我们尝试用 `std::string` 来存储二进制数据时,需要注意的一个关键问题是,`std::string` 是基于 C 风格的字符串(以 '\0' 作为结束符)构建的。这意味着当二进制数据包含 '\0' 字节时,`std::string` 的...

    深入理解Swift中的Substring和String

    可以看到,Substring 只有一个存储属性 _slice,它是一个 RangeReplaceableBidirectionalSlice<String> 类型的实例。_slice 属性保存着所有关于父字符串的信息。 三、Substring 的使用方法 Substring 可以使用 ...

    WB-StringTable-AppNote

    【描述】:此文档主要讨论了如何在基于PEG(Parsing Expression Grammar)的Window Builder应用程序中处理和编辑字符串,特别是使用StringTable工具。 【标签】:“PEG”,“PEGGUI” 【知识点详解】: 1. **PEG...

    有关Java String常用方法的总结.docx

    在这个文档中,我们主要讨论了关于Java String类的一些常用方法以及与String相关的常量池问题。 首先,我们要理解Java中的final关键字。当final修饰一个引用变量时,它确保这个引用变量一旦被初始化,就不能再指向...

    C++中string的成员函数.docx

    在C++编程中,`std::string`是一个非常重要的数据类型,它用于处理文本字符串。本文将详细讨论`std::string`的成员函数及其在安全编程中的应用。 首先,`std::string`提供了多种构造函数,允许我们以不同的方式创建...

    毕向东Java笔记(四)String类,包装类1

    本节将详细讨论String类的一些关键方法和概念。 首先,String类的实例在内存中是不可变的,这意味着一旦创建了一个String对象,就不能更改其内容。例如: ```java String A = "koter"; // 创建一个字符串对象A ...

Global site tag (gtag.js) - Google Analytics