Data Type Java

public class Util{
  public static String longestStartingMatch(String source1, String source2)
  {
    /**
     * I starting with the regex lookingAt() but it wasn't working for the test
     * cases I had (comparison of BigDecimals... DaC seems to work ok.
     */
    
    int min = 0;
    int max = source1.length();
    int cur = max/2;
    while(true)
    {
      if(source2.regionMatches(0, source1, 0, cur))
      {
        min = cur;
        cur+= (max-cur)/2;
        if(cur == min)
        {
          if(source2.regionMatches(0, source1, 0, max))
            cur = max;
          break;
        }
      }else{
        max = cur;
        cur-= (cur-min)/2;
        if(cur == max)
        {
          if(source2.regionMatches(0, source1, 0, min))
            cur = min;
          break;
        }
      }
    }
    return source2.substring(0, cur);
  }
}