Выполняется, даже если вы вернетесь внутрь блока try. Я поместил один оператор return внутри try и один внутри finally, и возвращаемое значение было от finally, а не от try.
public class HelloWorld{
public static void main(String args[]){
System.out.println(printSomething());
}
public static String printSomething(){
try{
return "tried";
} finally{
return "finally";
}
}
}
Вывод, который я получил, был "наконец-то".