 <p>They are like two "Tom"s in your class! Because:</p> <p>In this case, <code>"odp" = "odp"</code> because they are <strong>TWO</strong> strings with <strong>SAME</strong> VALUE!!</p> <p>So they are not <code>==</code> because they are <strong>TWO</strong> different strings store in <strong>different</strong> (Memory) <strong>location</strong></p> <p>They are <code>=</code> because they have the <strong>identical string value</strong>.</p> <p>One more step deeper, "odp" is anonymous variable. And two anonymous variable leads to this <strong>Two</strong> strings.</p> <p>For your convenience:</p> <pre><code># "odp" = "odp";; - : bool = true # "odp" != "odp";; - : bool = true # "odp" &lt;&gt; "odp";; - : bool = false </code></pre>