s в окончании будет изменено, но это не повлияет на то, что try вернет.Когда вы изменяете s в finally , s просто укажет на другую область в памяти с новым текстом.Но return в попытке уже указывает на текст из try , и это не изменится.
Может быть, это легче понять таким образом.Строки в Java неизменны.Если вы измените строковую переменную, предыдущий текст в памяти не изменится.Вместо этого создается новый текст, переменная просто «указывает» на новый текст.В вашем блоке finally вы просто меняете, куда указывает s , вы не можете изменить текст блока try .
Если у вас был другойвведите List и добавьте или удалите элементы finally , это повлияет на то, что try возвращает.
Я думаю, вы просто упростили код для удобства чтения.Правильно?Поскольку в блоке try исключение невозможно, и этот код не будет компилироваться из-за блока catch .