Если вы хотите знать, зачем использовать 1 << 2
вместо 4, что является тем же значением, то это потому, что вы явно хотите использовать битовую маску, например
public static final int FLAG0 = 1 << 0;
public static final int FLAG1 = 1 << 1;
public static final int MODIFY_METADATA = 1 << 2;
Показывает, что каждое значение находится внемного маски.