Java 中少为人知的小点子

本文探讨了Java中被保留但禁用的goto语句,介绍了如何使用标签语句实现类似的功能,例如在嵌套循环中使用break和continue进行跳转,并展示了如何利用代码块简化对象管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    1. 废话

或许你已经听过goto语句之争,也知道在Javagoto仍然是一个保留的keyword,但不允许使用。先来看看goto的经典使用方法:

   1:statement1;
   2:statement_label_for_section2:
   3:statement2;
   4:goto statement_label_for_section2;



可以看出 2:statement_label_for_section2: 为一代码片段(Section)的开始标记。


Java语言中不允许使用goto,但可以使用像 2:statement_label_for_section2: 一样的代码片段标记作为 break/continue的跳转目标。


相关标准文件请参见:<<Java Language Spec. >>14.7 Labeled Statements


    1. 应用

嵌套循环中,我有时会需要从内循环中直接跳到外循环。用Labeled Statements就可以方便实现。

   1:                for(int I1 = 0; I1 < 10; I1++) {
   2:                        loop1:
   3: for(int I2 = 0; I2 < 20; I1++) {
   4: break loop1;
   5: }
   6: } 

continue的用法与break的用法是一样的。



Java语言中还有很多没有广泛应用的小点子。请参见:<<Java Language Spec. >>


    1. Blocks

<<Java Language Spec. >>14.2 Blocks

或许你跟我一样都是个懒鬼。特别在Test Case 代码当中,我经常需要在同一Method中定义一大堆的对象,这些对象的操作大者是大同小异的,你应该知道我在想什么了:Copy&Past。而为每个对象都起一个不同的名字是件痛苦的事。同时这些对象往往只是短命鬼。


   1:import java.util.ArrayList;
   2:import java.util.Collection;
   3:
   4:public class T2 {
   5:
   6: public static void main(String[] args) {
   7: {
   8: Collection c = new ArrayList();
   9: c.add( "1" );
  10: c.clear();
 11: }
 12: {
 13: Collection c = new ArrayList();
  14: c.add( "2" );
 15: c.clear();  16: }  17: }  18:  19:}



 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值