A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 返璞归真 中级黑马   /  2014-12-3 09:45  /  1244 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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???

2 个回复

倒序浏览
看注释,这样解释能看懂吧
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:06
看注释,这样解释能看懂吧
public static void main(String[] args) {

{:2_36:}{:2_36:}:handshake
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马