O problema não são as casa, é aquela vírgula. Vc tem um ponto e uma vírgula, isso não é um número válido. O ponto é o separador de decimal correto se quiser fazer a conversão.
Sim, está correto. Afinal, 1.100,00 é a maneira como você vai apresentar o número, mas o mesmo tem valor 1100, não é isso?
O compilador não entende este valor
E não vai dar furo, substring não funciona dessa maneira, funciona com replace e o replace só vai . trocar o que coincidir com o primeiro argumento. Como ,80 é diferente de ,00, então não terá substituição.
Só abrindo um parenteses para o caso de fazer replace.
Teria se usar o método replace ao invés do replaceAll.
O replace tbm substitui todas ocorrências, mas o replaceAll recebe uma regex(expressão regular) onde o ponto na verdade é um coringa para qualquer caractere, logo vai substituir tudo por nada.