java - 即使 s2=s1,为什么在第二行代码中打印“xy”?
问题描述
class Main {
public static void main(String[] args) {
String s1 = "xy";
String s2 = s1;
s1 = s1 + s2 + "z";
System.out.println(s1);
System.out.println(s2);
}
}
当我运行代码时,我期望得到这样的结果,因为 s1=s2 的值:
xyxyz
xyxyz
但实际输出是:
xyxyz
xy
我不确定为什么我没有得到相同的答案?是否因为在使 s1=s2 之后运行了将 s1 更改为值“xyxyz”的代码行?
解决方案
JavaString
是不可变的。当您重新分配时s1
,您将创建一个现在引用的新String
对象。仍在引用原始字符串。s1
s2
推荐阅读
- ejb - 如何对具有 Wildfly elytron 安全性的 ejb 远程客户端使用 keycloak 身份验证?
- sql - SQL Server 十进制除法返回 1.000
- machine-learning - 了解 Precision@K、AP@K、MAP@K
- javascript - ES6:从 CORS 获取调用中检索响应标头
- c# - 如何在 C# 中使用这个 mongoDb 聚合
- jenkins - 是否可以在 Jenkins 管道中安排一个步骤?
- node.js - 我如何在微服务之间进行通信?
- java - 在里面并且不在 xmlWorker 中工作
- git - 忽略当前目录中的文件,但排除同名目录
- nginx - Nginx 执行 60 秒后返回 404