毕业的学生在考scjp认证,问我怎么理解scjp的不变性。于是做了一个程序进了测试,对字符串的不变性理解如下:
class StringFinal
{
public static void main(String[] args)
{
String s="xxxxxxxHelloWord";
System.out.println(s+"地址"+s.hashCode());
s="how are you ";
System.out.println(s+"地址"+s.hashCode());
StringBuffer s1=new StringBuffer("xxxxhelloWord");
System.out.println(s1+"地址"+s1.hashCode());
s1.append("how are you");
System.out.println(s1+"地址"+s1.hashCode());
}
};
让学生观看结果,作如下总结:
一个字符串对象一但创建,那么这个字符串对象内容存放地址里面的内容就不能改变,
当对这个对象进行重新赋值时,系统会创建一个新的字符串对象,并把地址赋给原来的字
符串对象。因此s两次输出的址不一样,而s1两次输出的址是一样的。是否有不正确之处
还请高手指导。
分享到:
相关推荐
本文将深入探讨“字符串不变性”以及与之相关的`String`类和`StringBuilder`类的区别。字符串不变性是一个关键特性,它对Java程序的性能和安全性有着深远的影响。 首先,让我们理解什么是“字符串不变性”。在Java...
6. **字符串不变性**:由于String类的不变性,如果需要修改字符串,例如在中间插入字符,会创建新的字符串对象,这可能导致性能问题。为了解决这个问题,Java提供了`StringBuffer`类,它可以动态增长并修改字符串...
`System.String`因其不可变性适用于需要保持字符串不变性的场景,而`StringBuilder`则适用于需要频繁修改字符串的场景,以提高程序的运行效率。理解这两者的区别对于编写高效可靠的.NET应用程序至关重要。
- 如果需要保留原字符串不变,可以先复制一份字符串再进行切割。 2. **分隔符选择**: - 示例中使用空字符串作为分隔符,这将按照空白字符进行切割。在实际应用中,可以根据需求选择更合适的分隔符。 3. **异常...
以下将通过三张图来深入解析Java中字符串不变性的原理。 首先,我们来看第一张图,假设定义了一个字符串`String s = "abcd"`。在这个例子中,"abcd"这个字符串值在Java的字符串常量池中被创建,而`s`变量则存储了...
在实际应用中,你可能还需要考虑一些额外因素,如字符串的唯一性、字符的分布是否均匀等。例如,如果需要生成的随机字符串在特定范围内不能重复,可以使用集合(如HashSet)来检查新生成的字符串是否已存在。若要...
- 提升了性能,因为JVM可以缓存这些不变的字符串,避免重复创建相同的字符串对象。 - 有助于提高代码的简洁性和可读性。 2. **内部实现**:由于字符串不可变,因此Java使用了高效的内部存储结构(如字符数组)来...
程序在运行过程中可能会积累大量不再使用的字符串数据,这些数据占用内存空间,可能导致程序运行效率降低,甚至影响程序的稳定性和安全性。因此,定期清理无用字符串信息是必要的。 在易语言中,可以编写特定的程序...
- 遍历字符串,对于每个字符,如果它是数字,那么dp[i]可能是dp[i-1]+1,否则dp[i]保持不变。 - 最长数字串的长度即为dp数组中的最大值。 无论是滑动窗口还是动态规划,都需要在找到最长数字串的同时,存储它的...
在执行查找和替换后,为了保持原文件的不变性,程序会创建一个新的文件并写入修改后的文本。这样,原始文件仍可保留,避免了因操作失误而导致的数据丢失。这个功能在处理重要文档时尤为重要,它提供了一种安全的操作...
字符串转换与文件操作 本资源涉及到三个主要知识点:字符串操作、文件操作和错误处理。 字符串操作 在本程序中,我们需要将输入的字符串中的小写字母转换成大写字母。这个过程可以通过遍历字符串,每遇到一个小写...
如果其中一个字符串中有两个相同的字符,可以通过交换这两个字符使字符串不变,满足条件。 3. 如果两个字符串不同,但只在两个位置上有差异,那么它们可能是亲密字符串。这时,可以通过交换这两个不同的字符来实现...
- 在字符串操作中,`"{0}%10".PadLeft(10, '0')`可用于将数字填充到固定长度的字符串,并保持其最后一位不变。 9. **输出21个AAAAAAAAAAAAAAAAAAAAA的巧妙做法** - 可以使用字符串乘法:`"A" * 21`。 - 使用`...
1. `lower()` 函数:将字符串中的所有大写字母转换为小写,其余字符保持不变。 示例: ```python str = "Hello, World!" lower_str = str.lower() print(lower_str) # 输出 "hello, world!" ``` 2. `upper()`...
- 当字符串常量不变时,使用`String`。 - 需要在多线程环境中修改字符串时,使用`StringBuffer`。 - 在单线程环境中修改字符串时,使用`StringBuilder`。 理解这些概念有助于编写出高效且易于维护的代码。在实际...
这在需要保证字符串不变性的情况下非常有用。 7. **流操作** C++的IO流库(I/O Stream)允许将`std::string`与输入/输出流进行交互,如`std::cin`和`std::cout`。 8. **内存管理** `std::string`自动管理其内部...
- 字符串(如"John")保持不变,仍然是JavaScript的String类型。 - 布尔值(如true或false)保持不变,仍然是JavaScript的Boolean类型。 - null 保持不变,仍然是JavaScript的null类型。 - 数组(如["item1", ...
- **兼容性**:不同的Oracle版本可能支持不同的连接字符串选项,请根据实际情况调整。 - **性能优化**:合理设置连接池大小和超时时间等参数可以显著提高应用程序的性能。 - **错误处理**:在连接失败时提供适当的...
QT C++ AES字符串加密解密类库是一种在C++编程环境中使用QT框架实现的高级加密标准(AES)加密和解密工具。QT是一个流行的开源跨平台应用开发框架,广泛应用于桌面、移动和嵌入式系统。AES是目前广泛应用的对称加密...