Course – LS – All

Get started with Spring and Spring Boot, through the Learn Spring course:

>> CHECK OUT THE COURSE

1. Introduction

In Java, boolean values can have two representations: Boolean.TRUE, which is a constant defined in the Boolean class and represents the true value, and the primitive value true, which also represents true. While they both seem to serve the same purpose of representing a true boolean value, there are subtle differences between them that developers should be aware of.

In this tutorial, we’ll shed light on the dissimilarities and help clarify their appropriate usage. 

2. Understanding Boolean.TRUE

Boolean.TRUE is a constant defined in the Boolean class of the Java standard library. It is an instance of the Boolean wrapper class representing the true value.

Being an object, we can use Boolean.TRUE  in scenarios where an object reference is expected, such as collections or method parameters that accept objects.

Let’s see this example:

List<Boolean> booleanList = new ArrayList<>();
booleanList.add(Boolean.TRUE);
boolean isTrue = booleanList.get(0);
assert isTrue;

In the above example, we create an ArrayList of Boolean objects and add Boolean.TRUE to it. Later, we retrieve the boolean value using the get() method, which automatically unboxes the Boolean.TRUE object to a primitive boolean value.

3. Understanding true

On the other hand, true is a primitive boolean value that represents true. It is one of the two boolean literals in Java.

As a primitive value, true is more efficient in terms of memory usage and performance when compared to Boolean.TRUE.

boolean isTrue = true;
if (isTrue) { 
    // Perform some logic
} 

In the above example, we directly assign the true value to a boolean variable and use it in an if statement to execute certain logic when the condition is true.

4. Boolean.TRUE vs. true

The following table summarizes the key differences between Boolean.TRUE and true.

Factor Boolean.TRUE true
Type Boolean.TRUE is an object of the Boolean class true is a primitive boolean value
Memory and Performance As an object, Boolean.TRUE requires additional memory overhead due to its object representation true as a primitive value is more memory-efficient and performs better
Object-specific Operations Since Boolean.TRUE is an object, it can be used in scenarios that expect object references, such as collections or method parameters Primitive true cannot be used in these scenarios and would require boxing to Boolean.TRUE if necessary
Autoboxing and Unboxing We can utilize unboxing to convert the Boolean.TRUE object to its corresponding primitive value, true. Autoboxing allows automatic conversion of true to Boolean.TRUE and vice versa

5. Conclusion

In this article, we discussed the differences between Boolean.TRUE and true in Java to properly utilize these representations of true boolean values. While Boolean.TRUE is an object with additional memory overhead, and true is a primitive value offering better performance.

Depending on the context and requirements, developers should choose the appropriate representation. 

As always, the code examples are available over on GitHub.

Course – LS – All

Get started with Spring and Spring Boot, through the Learn Spring course:

>> CHECK OUT THE COURSE
res – REST with Spring (eBook) (everywhere)
Comments are open for 30 days after publishing a post. For any issues past this date, use the Contact form on the site.