Question: I got introduced to OWL [here](http://www.w3schools.com/rdf/rdf_owl.asp) and [here](http://www.w3.org/TR/owl-guide/). And also seen few examples like...
<http://www.co-ode.org/ontologies/pizza/pizza.owl>

How should I run this example? Are there any tools to run these OWL files?

Is there any blog/site to see a working example of Ontology? An example to say..."This is the difference that Ontology makes..." kind of.

Answer: 
Integer objects in some range (I think maybe -128 through 127) get cached and re-used. Integers outside that range get a new object each time.
Integer Cache is a feature that was introduced in Java Version 5 basically for :

1. Saving of Memory space
2. Improvement in performance.

```
Integer number1 = 127;
Integer number2 = 127;

System.out.println("number1 == number2" + (number1 == number2); 

```

**OUTPUT:** `True`

---

```
Integer number1 = 128;
Integer number2 = 128;

System.out.println("number1 == number2" + (number1 == number2);

```

**OUTPUT:** `False`

HOW?

Actually when we assign value to an Integer object, it does **auto promotion** behind the hood.

```
Integer object = 100;

```

is actually calling *Integer.valueOf()* function

```
Integer object = Integer.valueOf(100);

```

Nitty-gritty details of `valueOf(int)`

```
    public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }

```

Description:

> 
> This method will always cache values in the range -128 to 127,
> inclusive, and may cache other values outside of this range.
> 
> 
> 

When a value within range of -128 to 127 is required it returns a constant memory location every time.
However, when we need a value thats greater than 127

`return new Integer(i);`

returns a new reference every time we initiate an object.

---

**Furthermore, `==` operators in Java is used to compares two memory references and not values.**

`Object1` located at say 1000 and contains value 6.  

`Object2` located at say 1020 and contains value 6.

`Object1 == Object2` is `False` as they have different memory locations though contains same values.