第21章•JavaSE6新功能简介–JavaSE6基本新功能–ApacheDerby、JDBC4.0java.lang套件•在JavaSE6中,String类别上新增了isEmpty()方法Stringstr=;if(str.isEmpty()){…}java.util套件•在JavaSE6中,Arrays类别新增了copyOf()方法int[]arr1={1,2,3,4,5};int[]arr2=Arrays.copyOf(arr1,arr1.length);for(inti=0;iarr2.length;i++)System.out.print(arr2[i]+);System.out.println();int[]arr1={1,2,3,4,5};int[]arr2=Arrays.copyOf(arr1,10);for(inti=0;iarr2.length;i++)System.out.print(arr2[i]+);System.out.println();java.util套件•copyOfRange()方法•binarySearch()方法int[]arr1={1,2,3,4,5};int[]arr2=Arrays.copyOf(arr1,1,4);int[]arr1={10,20,30,40,50,60,70,80,90};intresult=Arrays.binarySearch(arr1,6,9,85);if(result-1){System.out.printf(索引%d处找到数据%n,result);}else{System.out.printf(插入点%d%n,(result+1)*-1);}java.util套件•在JavaSE6中,您可以直接使用getDisplayNames()或getDisplayName()方法取得区域化的日期格式显示CalendarrightNow=Calendar.getInstance();Localelocale=Locale.getDefault();System.out.println(现在时间是:);System.out.printf(%s:%d%n,rightNow.getDisplayName(ERA,LONG,locale),rightNow.get(YEAR));System.out.println(rightNow.getDisplayName(MONTH,LONG,locale));System.out.printf(%d日%n,rightNow.get(DAY_OF_MONTH));System.out.println(rightNow.getDisplayName(DAY_OF_WEEK,LONG,locale));java.io套件•使用System类别上新增的console()方法•使用Console物件的readLine()方法System.out.print(输入名称:);Stringname=System.console().readLine();System.out.print(输入密码:);char[]passwd=System.console().readPassword();Stringpassword=newString(passwd);if(caterpillar.equals(name)&&123456.equals(password)){System.out.println(欢迎caterpillar);break;}else{System.out.printf(%s,名称或密码错误,请重新输入!%n,name);}java.io套件Stringname=console.readLine([%s],输入名称…);char[]passwd=console.readPassword([%s],输入密码…);Stringpassword=newString(passwd);if(caterpillar.equals(name)&&123456.equals(password)){System.out.println(欢迎caterpillar);break;}else{System.out.printf(%s,名称或密码错误,请重新输入!%n,name);}java.io套件•在JavaSE6中,对于File类别新增了几个方法File[]roots=File.listRoots();for(Fileroot:roots){System.out.printf(%s总容量%d,可用容量%d%n,root.getPath(),root.getTotalSpace(),root.getUsableSpace());}java.awt套件•指定启动屏幕的图片•manifest档案的写法java-splash:caterpillar.jpg-jarJNotePad.jarManifest-Version:1.0Main-Class:onlyfun.caterpillar.JNotePadSplashScreen-Image:caterpillar.jpgjava.awt套件•系统工具栏图标的支持if(SystemTray.isSupported()){SystemTraytray=SystemTray.getSystemTray();Imageimage=Toolkit.getDefaultToolkit().getImage(musical_note_smile.gif);TrayIcontrayIcon=newTrayIcon(image,JNotePad1.0);try{tray.add(trayIcon);}catch(AWTExceptione){System.err.println(无法加入系统工具栏图标);e.printStackTrace();}}else{System.err.println(无法取得系统工具栏);}java.awt套件•系统工具栏图标的支持if(SystemTray.isSupported()){SystemTraytray=SystemTray.getSystemTray();Imageimage=Toolkit.getDefaultToolkit().getImage(musical_note_smile.gif);PopupMenupopup=newPopupMenu();MenuItemitem=newMenuItem(开启JNotePad1.0);popup.add(item);TrayIcontrayIcon=newTrayIcon(image,JNotePad1.0,popup);try{tray.add(trayIcon);}catch(AWTExceptione){System.err.println(无法加入系统工具栏图标);e.printStackTrace();}}else{System.err.println(无法取得系统工具栏);}java.awt套件•系统工具栏图标上主动显示讯息•移除系统工具栏中的图标trayIcon.displayMessage(哈囉,该休息了吗?,TrayIcon.MessageType.WARNING);tray.remove(trayIcon);Classpath简化设定•在JavaSE6中,您可以使用'*'来指定某个目录下的所有.jar档案java–cp.;c:\jars\*onlyfun.caterpillar.JNotePad使用ApacheDerby•在JDK6中捆绑了ApacheDerby数据库()•纯Java撰写的数据库,支援JDBC4.0•可以在JDK6包装目录的db目录下找到ApacheDerby的相关档案加载驱动程序•JDBC4.0之中,不需要再呼叫Class.forName()并指定驱动程序•JVM会自动在Classpath中寻找适当的驱动程序•在包装有JDBC驱动程序的JAR档案中,必须有一个META-INF/services/java.sql.Driver档案,当中撰写驱动程序类别名称Connectionconn=DriverManager.getConnection(url,username,password);改进的例外处理•在JDBC4.0之中,SQLException新增了几个建构函式,可以接受Throwable实例进行SQLException的建构•SQLException并实作了IterableT界面改进的例外处理try{…}catch(SQLExceptionex){for(Throwablet:ex){System.err.println(t);Throwablecause=t.getCause();while(cause!=null){System.err.println(Cause:+cause);cause=cause.getCause();}}}BLOB、CLOB的改进•在JDBC4.0中,PreparedStatement新增了接受InputStream实例的setBlob()等方法•会将资料以BLOB的方式送至数据库•对于CLOB,PreparedStatement也增加有接受Reader实例的setClob()等方法•Connection上,也增加有createBlob()与createClob()等方法