Java 賦值語句,是有返回值的,而且還並不是想像中的 bool 類型 ! 想想其實一直都有看到一些類似的用法,但因自己平時開發並沒有特別使用過,也沒有很深入去探討了解。今天在這邊就舉例一些出來,來說明 Java 賦值語句的返回值。


這邊直接拿出一些 code 舉例,也方便直接展現 Java 賦值語句有返回值的便捷性。

ArrayList 的 iterator 的 next 方法

 public E next() {
    checkForComodification();
    int i = cursor;
    if (i >= size)
        throw new NoSuchElementException();
    Object[] elementData = ArrayList.this.elementData;
    if (i >= elementData.length)
        throw new ConcurrentModificationException();
    cursor = i + 1;
    return (E) elementData[lastRet = i];
}

注意最後一行 return (E) elementData[lastRet = i] ,明顯可以知道 lastRest = i 是有返回值的。

HashMap put 方法

if ((tab = table) == null || (n = tab.length) == 0)
    n = (tab = resize()).length;

能夠看到例如 (tab = table) == null,在判斷語句中使用了賦值語句的結果來和 null 和 0 比較。

一些讀寫文件的 code

while ((line = reader.readLine()) != null) {
    out.append(line);
}

把 reader.readLine() 指定給 line 來和 null 比較。

以上範例,都可以說明賦值語句是有返回值得,且賦值語句返回的是右側的結果


可以寫個 code 測試

public void test(){
	int index = 0;
	System.out.println(index = 2); //2
	System.out.println(index); //2

}