Stringに対する深い理解
まずコードを見てみましょう.
最終出力の結果:
次のコードを見てください.
私の説明では、changeで修正したものとmainでは同じオブジェクトではないので、「TEST」を出力するのではないでしょうか.私の解釈が間違っていることがわかります.
正しい解釈は次のとおりです.
package com.ykp.test;
public class StringTest {
public static void main(String[] args) {
String str = "TEST";
change(str);
System.out.println(str);
}
public static void change(String str) {
str = str.replace('S', 'E');
str = str.substring(1);
}
}
最終出力の結果:
TEST
面接の时、答えは书きましたが、なぜ出力したのかと闻くと、changeで修正したのとmainで修正したのは対象ではないと言いました.次に、コードが次のように変更されたら、次のコードを見てください.
package com.ykp.test;
public class StringTest {
private String name;
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) {
StringTest str = new StringTest();
str.setName("TEST");
change(str);
// sbsb
System.out.println(str.name);
}
public static void change(StringTest str) {
//str StringTest ,StringTest ,
// new StringTest(), str main
str.setName("sbsb");
}
}
私の説明では、changeで修正したものとmainでは同じオブジェクトではないので、「TEST」を出力するのではないでしょうか.私の解釈が間違っていることがわかります.
正しい解釈は次のとおりです.
public static void main(String[] args) {
//str ,
String str = "TEST";
change(str);
//
System.out.println(str);
}
public static void change(String str) {
// ,str main
//replace str, str
str = str.replace('S', 'E');
//substring string
str = str.substring(1);
}