從源碼分析java.lang.String.isEmpty()

        今天在寫代碼的時候用到了java.lang.String.isEmpty()的這個方法,以前也用過,今天突發奇想,就看了看源碼,瞭解瞭解它的實現方法,總結出來,你們能夠交流交流。html

一般狀況下,咱們使用這個方法的時候是這樣的:java

"hello wudb".isEmpty();

        上面的代碼返回的是false,而後咱們打開源碼分析,isEmpty()這個方法在不少類裏面都有,咱們今天分析的是String裏面的,因此找到java.lang.String這個類,而後去找idEmpty()這個方法數組

 /**
     * Returns {@code true} if, and only if, {@link #length()} is {@code 0}.
     *
     * @return {@code true} if {@link #length()} is {@code 0}, otherwise
     * {@code false}
     *
     * @since 1.6
     */
    public boolean isEmpty() {
        return value.length == 0;
    }

         源碼裏面已經所得很清楚了,當且僅當字符串的長度爲0的時候返回的是true,不然返回的是false這兩個布爾類型的值,方法中出現的value是什麼呢,繼續找源碼分析

 /** The value is used for character storage. */
    private final char value[];

         在String這個類的上方定義了一個char類型的一維數組,由此能夠看到String的實現是基於char類型實現的(其實是Unicode字符序列)。這一點在Stirng的另外一個方法length()上面也有體現:this

/**
     * Returns the length of this string.
     * The length is equal to the number of <a href="Character.html#unicode">Unicode
     * code units</a> in the string.
     *
     * @return  the length of the sequence of characters represented by this
     *          object.
     */
    public int length() {
        return value.length;
    }

        這裏的字符串長度也是使用的char數組的長度屬性。spa

        因此當字符串爲""的時候"".isEmpty返回的是true,當字符串爲null時null.isEmpty是會報錯的。因此在使用isEmpty這個方法的時候,要先確保字符串時不能爲null的code

       工做之餘看一看源碼仍是頗有幫助的,我看網上就有討論null、""和isEmpty之間的區別,其實像這樣的問題,咱們徹底能夠經過閱讀源碼來解決。htm

相關文章
相關標籤/搜索