java7新特性

  1 package com.test;
  2 
  3 import java.io.BufferedReader;
  4 import java.io.FileReader;
  5 import java.io.IOException;
  6 import java.sql.Connection;
  7 import java.sql.DriverManager;
  8 import java.sql.PreparedStatement;
  9 import java.sql.ResultSet;
 10 import java.sql.ResultSetMetaData;
 11 import java.sql.SQLException;
 12 import java.util.ArrayList;
 13 import java.util.List;
 14 
 15 /**
 16  * 
 17  * @author 测试java7的新特性
 18  */
 19 public class TestJava7
 20 {
 21     // 1. 支持二进制字面值
 22     public static void binaryLiteral()
 23     {
 24         int a = 0b100;
 25         int b = 0B1100;
 26         int c = a & b;
 27         System.out.println(c);
 28     }
 29 
 30     // 2. 数字字面值中添加下划线"_"分割
 31     public static void underlineInNumber()
 32     {
 33         /*
 34          * <注意: 数字的开头结尾不能添加; 小数点前后不能添加; F或L前面不能添加>
 35          */
 36         int a = 1_2_3;
 37         long b = 92_3L;
 38         double c = 3.14_15926;
 39         double d = 3.1_415F;
 40         System.out.println(a);
 41         System.out.println(b);
 42         System.out.println(c);
 43         System.out.println(d);
 44     }
 45 
 46     // 3. switch表达式支持string常量
 47     public static void switchSupportString()
 48     {
 49         String str = "ccc";
 50         switch (str)
 51         {
 52         case "aaa":
 53             System.out.println("I'm first");
 54             break;
 55         case "bbb":
 56             System.out.println("I'm second");
 57             break;
 58         case "ccc":
 59             System.out.println("I'm third");
 60             break;
 61         default:
 62             System.out.println("not matched");
 63             break;
 64         }
 65     }
 66 
 67     //4. try-with-resources特性支持自动关闭实现了java.lang.AutoCloseable和java.io.Closeable接口的对象资源
 68     // 一个 try-with-resources 语句可以像普通的 try 语句那样有 catch 和 finally 块。
 69     // 在try-with-resources 语句中, 任意的 catch 或者 finally 块都是在声明的资源被关闭以后才运行
 70     public static void tryWithResources()
 71     {
 72         try
 73         {
 74             Class.forName("com.mysql.jdbc.Driver");
 75             // 将对象声明在try()中
 76             try (Connection connection = DriverManager.getConnection(
 77                     "jdbc:mysql://172.17.13.38:3306/g2mdev", "root", "");
 78 
 79                     PreparedStatement preparedStatement = connection
 80                             .prepareStatement("select SQL_CALC_FOUND_ROWS * from g2m_sec_account where id = ? or id = ? or id = ?");)
 81             {
 82                 preparedStatement.setString(1, "1");
 83                 preparedStatement.setString(2, "2");
 84                 preparedStatement.setString(3, "3");
 85 
 86                 try (ResultSet resultSet = preparedStatement.executeQuery())
 87                 {
 88                     ResultSetMetaData meta = resultSet.getMetaData();
 89                     for (int i = 0; i < meta.getColumnCount(); ++i)
 90                     {
 91                         System.out.printf("%20s  ", meta.getColumnName(i + 1));
 92                     }
 93                     System.out.println();
 94                     while (resultSet.next())
 95                     {
 96                         for (int i = 0; i < meta.getColumnCount(); ++i)
 97                         {
 98                             System.out.printf("%20s  ", resultSet
 99                                     .getString(meta.getColumnName(i + 1)));
100                         }
101                         System.out.println();
102                     }
103                 }
104             }
105             catch (SQLException e)
106             {
107                 // TODO Auto-generated catch block
108                 e.printStackTrace();
109             }
110         }
111         catch (ClassNotFoundException e)
112         {
113             e.printStackTrace();
114         }
115     }
116 
117     //5. 一个catch块捕获多个异常
118     public static void multiCatch()
119     {
120         BufferedReader bufferedReader;
121         try
122         {
123             bufferedReader = new BufferedReader(new FileReader(
124                     "d:/note.txt"));
125             String buffer = null;
126             while (null != (buffer = bufferedReader.readLine()))
127             {
128                 System.out.println(buffer);
129             }
130             bufferedReader.close();
131             throw new MyException("-------ERROR-------"); 
132         }
133         catch (IOException | MyException e)
134         {
135             e.printStackTrace();
136         }
137     }
138     
139     //6. 创建泛型对象时类型推断
140     public static void genericTypeInfer()
141     {
142         List<String> list = new ArrayList<>();
143         list.add("aaa");
144         list.add("bbb");
145     }
146     public static void main(String[] args)
147     {
148         binaryLiteral();
149         System.out.println("-------------");
150         underlineInNumber();
151         System.out.println("-------------");
152         switchSupportString();
153         System.out.println("-------------");
154         tryWithResources();
155         System.out.println("-------------");
156     }
157 }
158 class MyException extends Exception
159 {
160     private static final long serialVersionUID = 884387500985353045L;
161 
162     public MyException(String string)
163     {
164         super(string);
165     }
166 }

 

posted @ 2015-04-21 17:06  挨踢淫才  阅读(291)  评论(0编辑  收藏  举报