Predicate's default methods and, or and negate build a new predicate that short-circuits like the boolean operators do, only calling the second predicate when its result can actually change the outcome.
Predicate<Integer> isPositive = x -> x > 0;
Predicate<Integer> isEven = x -> x % 2 == 0;
Predicate<Integer> positiveAndEven = isPositive.and(isEven);
Predicate<Integer> positiveOrEven = isPositive.or(isEven);
System.out.println("4 positive and even: " + positiveAndEven.test(4));
System.out.println("-4 positive and even: " + positiveAndEven.test(-4));
System.out.println("-4 positive or even: " + positiveOrEven.test(-4));
System.out.println("-3 not positive: " + isPositive.negate().test(-3));
4 positive and even: true
-4 positive and even: false
-4 positive or even: true
-3 not positive: true
Run this yourself in the Online Java Compiler, spin up a live REST API in the API Sandbox, or practise with Java interview questions.
Published 2026-09-27