![](/img/trans.png)
[英]Difference between String trim() and strip() methods in Java 11
[英]What is the difference between a = a.trim() and a.trim()?
我遇到了一點混亂。
我知道 String
對象是不可變的 。 這意味着如果我從String
類調用一個方法,比如replace()
那么String
的原始內容不會改變。 相反,將根據原始String
返回新的 String
。 但是,可以為同一變量分配新值。
基於這個理論,我總是寫a = a.trim()
,其中a
是一個String
。 一切都很好,直到我的老師告訴我,也可以使用a.trim()
。 這搞砸了我的理論。
我和老師一起測試了我的理論。 我使用了以下代碼:
String a = " example ";
System.out.println(a);
a.trim(); //my teacher's code.
System.out.println(a);
a = " example ";
a = a.trim(); //my code.
System.out.println(a);
我得到以下輸出:
example
example
example
當我向老師指出時,她說,
這是因為我使用的是較新版本的Java(jdk1.7),而
a.trim()
適用於以前的Java版本。
請告訴我誰有正確的理論,因為我完全不知道 !
字符串在java中是不可變的。 而trim()
返回一個新字符串,所以你必須通過賦值來獲取它。
String a = " example ";
System.out.println(a);
a.trim(); // String trimmed.
System.out.println(a);// still old string as it is declared.
a = " example ";
a = a.trim(); //got the returned string, now a is new String returned ny trim()
System.out.println(a);// new string
編輯:
她說這是因為我使用的是較新版本的java(jdk1.7),而a.trim()在以前版本的java中有效。
請找一位新的java老師。 這完全是一個沒有證據的虛假陳述。
字符串是不可變的,對它的任何更改都將創建一個新字符串。 如果要使用trim
方法返回的字符串更新引用,則需要使用該賦值。 所以這應該用於:
a = a.trim()
簡單地使用“a.trim()”可能會在內存中修剪它(或者智能編譯器會完全拋出表達式),但結果不會存儲,除非您先將其分配給變量,如“a = a.trim” ();”
如果要對字符串進行某些操作(例如修剪),則必須將字符串值存儲在相同或不同的變量中。
String a = " example ";
System.out.println(a);
a.trim(); //output new String is not stored in any variable
System.out.println(a); //This is not trimmed
a = " example ";
a = a.trim(); //output new String is stored in a variable
System.out.println(a); //As trimmed value stored in same a variable it will print "example"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.