Вы не можете использовать математические обозначения, на самом деле я тоже не привык бы использовать ==, я вполне уверен, что если они не использовали какой-то серьезный обман, он потерпит неудачу.
a = new BigInteger(500);
b = a;
if( a == b )
will always be true
b=new BigInteger(500);
if( a == b )
will never be true
if( a.equals(b) )
will always work fine.
Java не является отличным языком для такого рода вещей - я действительно люблю Java, но в итоге у меня возникли большие проблемы с реализацией класса Complex, а затем с реализацией матрицы, которая может содержать сложный класс и манипулировать им.
Мое решение состояло в том, чтобы использовать Java для создания базовых классов, а затем использовать Groovy для создания классов, которые использовали базовые классы. Если вы следуете определенным шаблонам именования, вы можете использовать любые операторы в любом классе.
Или, если вы просто хотите возиться с большими числами, просто используйте groovy и даже не объявляйте тип для ваших переменных - он автоматически переведет их на все, что вам нужно.