java中两个字符串的内存地址相同怎么办?

Python013

java中两个字符串的内存地址相同怎么办?,第1张

String s1 = new String("I am a student") 这里 你声明了一个引用 s1\x0d\x0a指向的是 new String("I am a student") 这个字符串\x0d\x0aString s4 = s1 这里 你又声明一个引用 指向s1的引用 也就是new String("I am a student")\x0d\x0aif(s1 == s4) {\x0d\x0aSystem.out.println("这两个字符串的内存位置相同")\x0d\x0a}\x0d\x0a上面还是相等的\x0d\x0a但是 s4 = s4.replace('a', 'A')\x0d\x0as4.replace('a', 'A') 生成了另一个 字符串 你要知道 String 是final类型的 所以\x0d\x0a这个时候 即原来已经开辟了内存空间的 new String("I am a student")是不可能改变内容了的\x0d\x0a这个时候 s4.replace('a', 'A') 就另开辟了一个内存空间\x0d\x0a 而这个时候 你的S4指向s4.replace('a', 'A')而原来的s1还是指向 new String("I am a student")\x0d\x0a他们肯定不一样的呢

代码如下,我测试过了。。。。希望满足你的要求\x0d\x0a\x0d\x0aimport java.util.ArrayList\x0d\x0aimport java.util.HashSet\x0d\x0aimport java.util.List\x0d\x0aimport java.util.Set\x0d\x0a\x0d\x0apublic class Test\x0d\x0a{\x0d\x0a public static void main(String[] args){\x0d\x0a String s1 = "AABBC"\x0d\x0a String s2 = "ABBCC"\x0d\x0a List sub1 = new ArrayList()//保存s1的子串\x0d\x0a List sub2 = new ArrayList()//保存s2的子串\x0d\x0a Set result = new HashSet()//保存相同的子串\x0d\x0a \x0d\x0a //求s1的子串\x0d\x0a for(int i = 1i 回答于 2022-12-11