toLowerCase() method in Java when used with Locale does not produce the exact result
<p>Look at the following code snippet in Java.</p>

<pre><code>final public class Main
{
    public static void main(String[] args) 
    {
        Locale.setDefault(new Locale("lt")); 
        String str = "\u00cc";   //setting Lithuanian as locale

        System.out.println("Before case conversion is "+str+" and length is "+str.length());// Ì
        String lowerCaseStr = str.toLowerCase();
        System.out.println("Lower case is "+lowerCaseStr+" and length is "+lowerCaseStr.length());// i?`
    }
}
</code></pre>

<hr>

<p>It displays the following output.</p>

<p>Before case conversion is Ì and length is 1</p>

<p>Lower case is i̇̀ and length is 3</p>

<hr>

<p>In the first <code>System.out.println()</code> statement, the result is exact. In the second statement, however, it displays the length <strong>3</strong> which actually should have been <strong>1</strong>. I don't understand, Why?</p>
