簡體   English   中英

a = a.trim()和a.trim()之間有什么區別?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM