2012-07-12 69 views
0

我想知道是否有人可以向我解釋下面的代碼行是什麼?Java:While循環中嵌入的Equals語句

while((sample = samples.read()) != null)

是否先設置sample等於samples下一行,然後進行檢查,以確保它不是空的?

這是一個更普遍的問題,但如果任何人有一個很好的OpenNLP教程,我也會很感激。

這裏是將其全部方法:

public static Dictionary buildNGramDictionary(ObjectStream samples, int cutoff) throws IOException {

NGramModel ngramModel = new NGramModel(); 
    POSSample sample; 

    while((sample = samples.read()) != null) { 
     String[] words = sample.getSentence(); 
     if (words.length > 0) 
      ngramModel.add(new StringList(words), 1, 1); 
    } 

    ngramModel.cutoff(cutoff, Integer.MAX_VALUE); 
    return ngramModel.toDictionary(true); 
} 

+1

更高的優先級是的,這正是它的作用。除了設置LHS之外,'='操作還是評估RHS的值。 – biziclop 2012-07-12 20:14:34

回答

2

表達式的評估是口述operator precedence
括號內(sample = samples.read())表達首先計算,因爲()支架具有比!=

3
  1. 它的samples.read()返回值分配給sample可變
  2. 它驗證sample是否不爲空,然後才執行該體的while循環
+0

明白了。謝謝! – 2012-07-12 20:15:22