Более менее с фиксированной очередью разобрался, но теперь не могу понять проверку условия в циклической очереди.
Есть вот такой кусок кода с реализацией метода put().
public class CircularQueue {
private char[] q;
private int putLoc, getLoc;
public CircularQueue(int size) {
q = new char[size + 1];
putLoc = getLoc = 0;
}
public void put(char ch) {
if (putLoc + 1 == getLoc | ((putLoc == q.length - 1) & (getLoc == 0))) {
System.out.println("Очередь заполнена");
return;
}
if (putLoc == q.length) {
putLoc = 0;
}
q[++putLoc] = ch;
}
}
Объясните пожалуйста, как понять то что проверяется в методе put().
Вот как понять эту строку if (putLoc + 1 == getLoc | ((putLoc == q.length - 1) & (getLoc == 0)))?