Diferença entre & e && / | e ||

class ifi {

 

        public static boolean rotina1() {

                System.out.println("Passou na rotina 1");

                return true;

        }

 

        public static boolean rotina2() {

                System.out.println("Passou na rotina 2");

                return true;

        }

 

        public static boolean rotina3() {

                System.out.println("Passou na rotina 3");

                return true;

        }

 

        public static boolean rotina4() {

                System.out.println("Passou na rotina 4");

                return true;

        }

 

        public static void main(String args[]) {

                if (true  |  rotina1()) {}

                if (true  || rotina2()) {}

                if (false &  rotina3()) {}

                if (false && rotina4()) {}

        } 

}