What is instanceof keyword in Java?
The "instanceof" keyword in Java serves as a binary operator that allows for the examination of an object's relationship with a given type. It functions by determining whether an object (instance) is a subtype of the specified type, providing a boolean result of either true or false. Specifically, when the left side of the expression is an instance of the class mentioned on the right side, the "instanceof" operator yields a value of true. However, if the object does not belong to the specified class or its super class, a compilation error occurs.
Notably, when the "instanceof" operator is applied to a variable with a null value, it will invariably return false. This operator proves advantageous as it facilitates the acquisition of run-time type information about an object within a program. It is commonly referred to as a type comparison operator due to its ability to compare instances with their respective types.
SyntaxHowever, with Object car = new Car();,
In the above case, it returns fale because Car is a supertype of Ford and possibly less "refined".
Also, if try ford instanceof Suzuki even does not even compile! This is because Ford is neither a subtype nor a supertype of Suzuki, and it also does not implement it.
It is crucial to highlight that the variable used in the aforementioned example, "ford," is declared as type Object. This deliberate choice is made to emphasize that the "instanceof" operator is evaluated at runtime. This leads us to the primary use case of "instanceof," which is to enable conditional actions based on the specific type of an object during program execution. By employing "instanceof," developers can dynamically respond and execute different code paths depending on the runtime type of an object. This runtime flexibility allows for adaptable and specialized behavior based on the varying types encountered during program execution.
In addition to the aforementioned use case, the "instanceof" keyword proves to be a valuable tool in scenarios where there is a collection of objects with uncertain types. For instance, consider a situation where there is a collection of controls on a form. If the objective is to retrieve the checked state of checkboxes within the collection, a straightforward approach would not suffice since regular objects do not possess a "checked" state.
In this scenario, the "instanceof" operator becomes instrumental. By iterating through each object in the collection, one can employ "instanceof" to determine if the object is a checkbox. If it is, the object can be safely cast to a checkbox type, granting access to its specific properties such as the "checked" state. This enables the retrieval of the desired information from the checkboxes while avoiding potential errors or inconsistencies that may arise from treating non-checkbox objects as checkboxes.
instanceof keyword and null value
If we apply instanceof operator with a variable that have null value, it returns false. Let's see the example given below where we apply instanceof operator with the variable that have null value.
Conclusion
It is important to consider this behavior when applying the "instanceof" operator to variables that may potentially have null values, to avoid unexpected results or errors in the program logic.
- Java Interview Questions-Core Faq - 1
- Java Interview Questions-Core Faq - 2
- Java Interview Questions-Core Faq - 3
- Features of Java Programming Language (2024)
- Difference between Java and JavaScript?
- What is the difference between JDK and JRE?
- What gives Java its 'write once and run anywhere' nature?
- What is JVM and is it platform independent?
- What is Just-In-Time (JIT) compiler?
- What is the garbage collector in Java?
- What is NullPointerException in Java
- Difference between Stack and Heap memory in Java
- How to set the maximum memory usage for JVM?
- What is numeric promotion?
- Generics in Java
- Static keyword in Java
- What are final variables in Java?
- How Do Annotations Work in Java?
- How do I use the ternary operator in Java?
- How ClassLoader Works in Java?
- What are fail-safe and fail-fast Iterators in Java
- What are method references in Java?
- "Cannot Find Symbol" compile error
- Difference between system.gc() and runtime.gc()
- How to convert TimeStamp to Date in Java?
- Does garbage collection guarantee that a program will not run out of memory?
- How setting an Object to null help Garbage Collection?
- How do objects become eligible for garbage collection?
- How to calculate date difference in Java
- Difference between Path and Classpath in Java
- Is Java "pass-by-reference" or "pass-by-value"?
- Difference between static and nonstatic methods java
- Why Java does not support pointers?
- What is a package in Java?
- What are wrapper classes in Java?
- What is singleton class in Java?
- Difference between Java Local Variable, Instance Variable and a Class Variable?
- Can a top level class be private or protected in Java
- Are Polymorphism , Overloading and Overriding similar concepts?
- Locking Mechanism in Java
- Why Multiple Inheritance is Not Supported in Java
- Why Java is not a pure Object Oriented language?
- Static class in Java
- Difference between Abstract class and Interface in Java
- Why do I need to override the equals and hashCode methods in Java?
- Why does Java not support operator overloading?
- Anonymous Classes in Java
- Static Vs Dynamic class loading in Java
- Why am I getting a NoClassDefFoundError in Java?
- How to Generate Random Number in Java
- What's the meaning of System.out.println in Java?
- What is the purpose of Runtime and System class in Java?
- The finally Block in Java
- Difference between final, finally and finalize
- What is try-with-resources in java?
- What is a stacktrace?
- Why String is immutable in Java ?
- What are different ways to create a string object in Java?
- Difference between String and StringBuffer/StringBuilder in Java
- Difference between creating String as new() and literal | Java
- How do I convert String to Date object in Java?
- How do I create a Java string from the contents of a file?
- What actually causes a StackOverflow error in Java?
- Why is char[] preferred over String for storage of password in Java
- What is I/O Filter and how do I use it in Java?
- Serialization and Deserialization in Java
- Understanding transient variables in Java
- What is Externalizable in Java?
- What is the purpose of serialization/deserialization in Java?
- What is the Difference between byte stream and Character streams
- How to append text to an existing file in Java
- How to convert InputStream object to a String in Java
- What is the difference between Reader and InputStream in Java
- Introduction to Java threads
- Synchronization in Java
- Static synchronization Vs non static synchronization in Java
- Deadlock in Java with Examples
- What is Daemon thread in Java
- Implement Runnable vs Extend Thread in Java
- What is the volatile keyword in Java
- What are the basic interfaces of Java Collections Framework
- Difference between ArrayList and Vector | Java
- What is the difference between ArrayList and LinkedList?
- What is the difference between List and Set in Java
- Difference between HashSet and HashMap in Java
- Difference between HashMap and Hashtable in Java?
- How does the hashCode() method of java works?
- Difference between capacity() and size() of Vector in Java
- What is a Java ClassNotFoundException?
- How to fix java.lang.UnsupportedClassVersionError