我对java中return的新理解

我对java中return的新理解

	一般来说return放在for循环中会终止程序的运行,但是我在使用lambda时发现了不同之处,特来分享

1.最简单的for循环

     public void testCollectingAndThan() {
        StringBuffer buffer = new StringBuffer();
        for (int li = 0; li < 100; li++) {
            if (li == 5) {
                return;
            }
            System.out.println("li = " + li);
            buffer.append(li);
        }
        System.out.println("buffer = " + buffer);
    }

输出结果是

		li = 0
		li = 1
		li = 2
		li = 3
		li = 4

此结果可以看出程序在i=5时会终止运行,没有打印buffer

2.list的普通forEach循环

	public void testCollectingAndThan() {
        List<String> list2 = Arrays.asList("a", "b", "c");
        StringBuffer buffer = new StringBuffer();
        for (String li : list2) {
            if (li.equals("b")){
                return;
            }else {
                System.out.println("li = " + li);
                buffer.append(li);
            }
        }
        System.out.println("buffer = " + buffer);
    }

输出结果是

		li = a

程序在 li 为“b”的时候终止运行,没有打印buffer

3.list的拉姆达(lambda)表达式forEach循环

	public void testCollectingAndThan() {
        List<String> list2 = Arrays.asList("a", "b", "c");
        StringBuffer buffer = new StringBuffer();
        list2.forEach(li -> {
            if (li.equals("b")) {
                return;
            } else {
                System.out.println("li = " + li);
                buffer.append(li);
            }
        });
        System.out.println("buffer = " + buffer);
    }

输出结果是

		li = a
		li = c
		buffer = ac

结果看出:程序在 li 为“b”时跳过继续向下执行for循环,并且最终执行了for外部的buffer打印,这说明在此时return的作用等价于continue。

4.对标题3的说明进一步精细化比较
	public void testCollectingAndThan() {
        List<String> list2 = Arrays.asList("a", "b", "c");
        StringBuffer buffer = new StringBuffer();
        list2.forEach(li -> {
            if (li.equals("b")) {
                System.out.println("li = " + li);//相对标题3增加一行打印输出
                return;
            } else {
                System.out.println("li = " + li);
                buffer.append(li);
            }
        });
        System.out.println("buffer = " + buffer);
    }

输出结果是

		li = a
		li = b
		li = c
		buffer = ac

更能看出其在 li 为 “b” 时没有终止程序,而是继续运行

工作心得,欢迎指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值