相关疑难解决方法(0)

Java中字符串的不变性

请考虑以下示例.

String str = new String();

str  = "Hello";
System.out.println(str);  //Prints Hello

str = "Help!";
System.out.println(str);  //Prints Help!
Run Code Online (Sandbox Code Playgroud)

现在,在Java中,String对象是不可变的.那么为什么对象str可以赋值"帮助!".这与Java中字符串的不变性相矛盾吗?任何人都可以向我解释一下不变性的确切概念吗?

编辑:

好.我现在得到它,但只是一个后续问题.以下代码如何:

String str = "Mississippi"; 
System.out.println(str); // prints Mississippi 

str = str.replace("i", "!"); 
System.out.println(str); // prints M!ss!ss!pp! 
Run Code Online (Sandbox Code Playgroud)

这是否意味着再次创建了两个对象("Mississippi"和"M!ss!ss!pp!"),并且引用str指向replace()方法之后的另一个对象?

java string immutability

211
推荐指数
7
解决办法
9万
查看次数

String.replace结果被忽略吗?

所以我使用的是IntelliJ,替换流行语突出显示。大多数技巧都困扰着我,所以我忽略了它们,但是我得到的却是string.replace的结果被忽略了。为什么?

我需要类似(string = string.replace(string.charAt(i));)的东西吗?

import java.util.Scanner;

public class PhoneNumberDecipher {
    public static String phoneNumber;
    public static String Decipher(String string) {
        string = phoneNumber;
        for(int i =0; i<=phoneNumber.length(); i++) {
            if(string.equalsIgnoreCase("A")
               ||string.equalsIgnoreCase("B")
               ||string.equalsIgnoreCase("C")) {
                string.replace(string.charAt(i),'2')
            }
            else if(string.equalsIgnoreCase("D")
                    ||string.equalsIgnoreCase("E")
                    ||string.equalsIgnoreCase("F")) {
                string.replace(string.charAt(i),'3');
            }
            else if(string.equalsIgnoreCase("G")
                    ||string.equalsIgnoreCase("H")
                    ||string.equalsIgnoreCase("I")) {
                string.replace(string.charAt(i),'4');
            }
            else if(string.equalsIgnoreCase("J")
                    ||string.equalsIgnoreCase("K")
                    ||string.equalsIgnoreCase("L")) {
                string.replace(string.charAt(i),'5');
            }
            else if(string.equalsIgnoreCase("M")
                    ||string.equalsIgnoreCase("N")
                    ||string.equalsIgnoreCase("O")) {
                string.replace(string.charAt(i),'6');
            }
            else if(string.equalsIgnoreCase("P")
                    ||string.equalsIgnoreCase("Q")
                    ||string.equalsIgnoreCase("R")
                    || string.equalsIgnoreCase("S")) {
                string.replace(string.charAt(i),'7');
            }
            else if(string.equalsIgnoreCase("T")
                    ||string.equalsIgnoreCase("U")
                    ||string.equalsIgnoreCase("V")) {
                string.replace(string.charAt(i),'8'); …
Run Code Online (Sandbox Code Playgroud)

java string replace

2
推荐指数
1
解决办法
8313
查看次数

标签 统计

java ×2

string ×2

immutability ×1

replace ×1