byte[] buf = {}; // この記法は変数宣言時しか使えない.通常の文として書くと{}がブロックと認識されて構文エラーになる.
byte[] buf = new byte[0]; // これはもちろんOK
buf = {}; // NG
buf = new byte[0]; // 変数宣言時以外ではこう書く必要がある
buf = new byte[]{}; // あるいはこう
if (buf.length == 0) { // 空かどうかの判定はコレ.Array型なので.
// ...
}