Computing integer square roots in Java
I think binary search will be super fast too (without divisions):

public static long intSqrtBinarySearch(long number) {
    long l = 0L, r = Integer.MAX_VALUE;
    while (l &lt; r) {
        long mid = (l + r + 1L) / 2L; // div 2 - bitwise operation
        if (mid * mid &lt;= number) {
            l = mid;
        } else {
            r = mid - 1L;
        }
    }
    return l;
}


Also, your implementation of intSqrt2() may produce overflow error.
Test:

Failed number : 383100999
Bad answer    : 383100999
Correct       : 19572