黑马程序员技术交流社区

标题: 谁能解释下这个方法的运行结果 [打印本页]

作者: 返璞归真    时间: 2014-12-3 09:45
标题: 谁能解释下这个方法的运行结果
public class Test2 {

        public static void main(String[] args) {

                StringBuilder sBuilder = new StringBuilder("AB");

                String resulet = getString(sBuilder);
                System.out.println(sBuilder);
                System.out.println(resulet);
        }

        private static String getString(StringBuilder sb) {

                try {
                        sb.append("CD");
                        return sb.toString();

                } finally {
                        sb.append("EF");
                }
        }
}

运行结果:
ABCDEF
ABCD

为什么下面那行不是ABCDEF???
作者: 金福林    时间: 2014-12-3 10:06
看注释,这样解释能看懂吧
public static void main(String[] args) {

        StringBuilder sBuilder = new StringBuilder("AB");//1,添加了AB

        String resulet = getString(sBuilder);
        System.out.println(sBuilder);
        System.out.println(resulet);
}

private static String getString(StringBuilder sb) {

        try {
                sb.append("CD");//2,添加了CD
                return sb.toString();//3,返回sb,注意此时trycatch中先执行try中的return语句,此时已经返回了sb的值ABCD

        } finally {
                sb.append("EF");//再添加添加到sb上而不会改返回值
               
        }
}
作者: 返璞归真    时间: 2014-12-3 10:08
金福林 发表于 2014-12-3 10:06
看注释,这样解释能看懂吧
public static void main(String[] args) {

{:2_36:}{:2_36:}:handshake




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2