Null safety is available in Kotlin through the safety call operator, whereas it isn't available in Java.
Head-to-Head Comparison: Secondary Constructor
In Kotlin, secondary constructors can be used to initialize variables and provide logic to the class, whereas in Java, there are no secondary constructors, but multiple constructors can exist.
Head-to-Head Comparison: Lazy Loading
Kotlin provides lazy loading that is useful when the initialization of a property is consuming a lot of computational resources like memory, CPU, etc., whereas Java does not support lazy loading.
Head-to-Head Comparison: Expression
Variables, operators, method calls and other expressions are supported by the Kotlin string template, whereas Java strings don't.
Click On The Link Below to Learn More About Kotlin and Java.