Javaの演算子の優先順位は、高い順に . ! new
!(new File("test")).exists()はまずカッコ内が評価されてFileが生成された後、. の結合力のほうが強いから.exists() が先に評価されて、最後に ! で否定の意味になる
== falseは同じ意味で、素人がまずやる冗長な書き方、可読性のために意図的に書く層もいるらしい
!new File("test").exists() は意図通りにならない
newよりも . が強いので、File("test").exists() の結果をnewしようとなり文法エラーになる