<p>What are Null Pointer Exceptions (<code>java.lang.NullPointerException</code>) and what causes them?</p>

<p>What methods/tools can be used to determine the cause so that you stop the exception from causing the program to terminate prematurely?</p>

```
NullPointerException
```
s are exceptions that occur when you try to use a reference that points to no location in memory (null) as though it were referencing an object.  Calling a method on a null reference or trying to access a field of a null reference will trigger a
```
NullPointerException
```
.  These are the most common, but other ways are listed on the
```
NullPointerException
```
javadoc page.
Probably the quickest example code I could come up with to illustrate a
```
NullPointerException
```
would be:
```
```
public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}
```
```
On the first line inside
```
main
```
, I'm explicitly setting the
```
Object
```
reference
```
obj
```
equal to
```
null
```
.  This means I have a reference, but it isn't pointing to any object.  After that, I try to treat the reference as though it points to an object by calling a method on it.  This results in a
```
NullPointerException
```
because there is no code to execute in the location that the reference is pointing.
(This is a technicality, but I think it bears mentioning: A reference that points to null isn't the same as a C pointer that points to an invalid memory location.  A null pointer is literally not pointing
anywhere
, which is subtly different than pointing to a location that happens to be invalid.)