Ситуация — следующий код (требуется создать метод, который ищет расстояние между двумя точками) Почему неправильно вычисляется степень? - 1

public class Util
{
    public static double getDistance(int x1, int y1, int x2, int y2)
    {
        return Math.sqrt((x2 - x1)^2 +(y2-y1)^2); \\ключевая строчка кода, остальное можно пропустить
    }
}
программа работает неправильно (не правильно считается, если оставить после круглых скобок возведение в квадрат (символ ^2), но стоит мне заменить (х2-х1)^2 на (х2-х1)*(х2-х1), как все сразу становится на свои места! Почему программа считает именно так? Как именно считается знак степени после скобки? И как поменять код, чтобы сохранился знак степени?