java try语句块 finally和return 的执行顺序

本文探讨了Java中String与StringBuffer的区别,包括不可变性和修改行为的不同,并通过实例展示了try-finally-return语句的执行顺序。

public class Test {

    public static String stringReplace(String text) {
        // String 的replace(..)方法不改变原有的对象,只会生成一个新的String 对象.
        // 也就是说String 这个字符串对象一经创建是不会被改变的
        text = text.replace('j', 'i');
        // 这里的text指向了对象"iava",但是main()方法中的textString是没有变的
        System.out.println("the test is :" + text);
        return text;
    }

    // StringBuffer
    public static void bufferReplace(StringBuffer text) {
        // StringBuffer与String 不同的是,它的方法是针对原有的对象的基础上的
        text = text.append("C");
    }

    // 这个方法用来测试try{}finally{} 和return 的顺序,i=1, j=2
    private static int add(int i, int j) {
        try {
            System.out.println("haha1");
            // return i = i + 5;
            // 在try语句块中先调用return 然后调用finally,返回值为6
            // finally的输出为"in finally i = 7"
        } finally {
            i++;
            System.out.println("in finally i = " + i);
            // 如果在finally语句中也有return,则try语句中的return值会被替换,返回值为7,不过这种写法应该是要避免的
             return i ;

        }
        return i + 10;
        // 在try语句块外先调用finally,后调用return; 返回12
        // finally输出为"in finally i = 2"
    }

    public static void main(String args[]) {
        // 测试try{}finally{} return
        int m = add(1, 2);
        System.out.println("m = " + m);// m = 6

        // 比较String 与StringBuffer
        String textString = new String("java");
        StringBuffer textBuffer = new StringBuffer("java");

        String afterString = stringReplace(textString);
        bufferReplace(textBuffer);

        System.out.println("after String replace:" + afterString);
        // "after String replace:iava"
        System.out.println("the original String :" + textString);
        // "the original String :java"
        System.out.println("the StringBuffer affter append :" + textBuffer);
        // "the StringBuffer affter append :javaC"

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值