`
收藏列表
标题 标签 来源
System.exit(int)会导致finally语句块不被执行
import java.security.Permission;

public class Main
{

  public static void main(String... argv)
    throws Exception
  {
    System.setSecurityManager(new SecurityManager() {

      @Override
      public void checkPermission(Permission perm)
      {
        /* Allow everything else. */
      }

      @Override
      public void checkExit(int status)
      {
        /* Don't allow exit with any status code. */
        throw new SecurityException();
      }

    });
    System.err.println("I'm dying!");
    try {
      System.exit(0);
    } finally {
      System.err.println("I'm not dead yet!");
      System.exit(1);
    }
  }

}


http://stackoverflow.com/questions/1410951/how-does-javas-system-exit-work-with-try-catch-finally-blocks/1410961#1410961
String - 对String中的 空格whitespace 做处理 stirng, 空格
/**
 * 都是基于正则表达式
 * \s : A whitespace character: [ \t\n\x0B\f\r](可以匹配空格键/(水平)制表符/换行键/垂直制表符/换页符/回车键)
 * 从输出可以看出,使用 \s 才是正确的处理String中Whitespace的方式,简单的只对空格键space打出的空格做处理严格说是错误的。
 */
public class CollectionTest {

	public static void main(String[] args) {
		/**
		 * 设  -代表空格键   =代表制表符(即tab键)
		 * 则  str的组成为 "--A---B-=-CC---"
		 */
		String  str = "  A   B 	 CC   ";
        System.out.println(str);  
        
		CollectionTest.removeAllWhitespace(str);
		CollectionTest.reserveOneSpace(str);
		
		System.out.println(str);
	}
	
	//去除String中所有空格
	static void removeAllWhitespace(String str) {
		
		//正确的做法 \s
		System.out.println(str.replaceAll("\\s*", ""));
                System.out.println(str.replaceAll("\\s+", ""));
        
		//错误做法,只处理了空格键打出的空格
        System.out.println(str.replaceAll(" ", ""));
        
        //同样也是只对空格键做处理的错误做法
        String[] sa = str.split(" ");
        String result = "";
        for (String string : sa) {  
            result += string;  
        }  
        System.out.println(result);  
	}
	
	//String中的留白部分只保留一个由空格键space打出的空格
	static void reserveOneSpace(String str) {
		
		//正确的做法:使用 \s
		System.out.println(str.replaceAll("\\s+", " "));
		System.out.println(str.replaceAll("\\s{1,}", " "));
		System.out.println(str.replaceAll("\\s{2,}", " "));
		
		//错误的做法:只处理空格键打出的空格
		System.out.println(str.replaceAll(" +", " "));
		System.out.println(str.replaceAll(" {1,}", " "));
		System.out.println(str.replaceAll(" {2,}", " "));
	}
}




  A   B 	 CC   
ABCC
ABCC
AB	CC
AB	CC
 A B CC 
 A B CC 
 A B CC 
 A B 	 CC 
 A B 	 CC 
 A B 	 CC 
  A   B 	 CC   
Global site tag (gtag.js) - Google Analytics