Вот это все к чему: Если в логическом выражении использовать оператор | или оператор &, то ленивого вычисления не происходит — в любом случае будут вычислены все выражения. То есть, всё что правее от присвоения к boolean выражения будет выполнено, и соответственно поменяет значение переменной number.