Jaka jest różnica między tymi dwoma połączeniami? (Czy jest jakiś?)
// 1.
new BigDecimal("3.53456").round(new MathContext(4, RoundingMode.HALF_UP));
// 2.
new BigDecimal("3.53456").setScale(4, RoundingMode.HALF_UP);
round
metoda zwraca również nowe wystąpienie BigDecimal, ponieważ, jak powiedziałeś, wystąpienia są niezmienne.