JDK1.5新特性
2015-11-07 00:12
435 查看
JDK1.5之后的新特性
主要从以下三个方法提高: 提高效率、简化书写、提高安全性(一). 增强for循环
1)格式:for(数据类型 元素名:被遍历的集合Collection或数组)2)遍历集合中元素
2.1)for循环对集合进行遍历:只能获取集合元素,不能对集合进行操作
2.2)迭代器除了遍历,还可以进行remove集合中元素的操作;如果用ListIterator,还可以在遍历过程中对集合元素进行增删改查操作。
3)传统for和高级for的区别?
3.1)高级for有一个局限性,就是必须有被遍历的目标。
3.2)建议在遍历数组的时候,还是希望用传统的for循环。
示例1:
[code]import java.util.*; class ForEach { public static void main(String args[]) { ArrayList<String> al = new ArrayList<String>(); al.add("sfdg"); al.add("fdg"); al.add("dg"); for(String s:al) { s = "kk";//此处并未改变集合中元素的值。 System.out.println(s); } System.out.println(al); Iterator<String> it = al.iterator(); while(it.hasNext()) { System.out.println(it.next()); } int[] arr = {3,5,1}; for(int x=0;x<arr.length;x++)//使用一般for循环可以对数组脚标进行操作。 { System.out.println(arr[x]); } for(int i:arr)//不能对数组脚标进行操作。 { System.out.println(i); } HashMap<Integer,String> hm = new HashMap<Integer,String>(); hm.put(1,"aaa"); hm.put(2,"bbb"); hm.put(3,"ccc"); Set<Integer> keySet = hm.keySet(); for(Integer key:keySet) { System.out.println(key+":"+hm.get(key)); } for(Map.Entry me:hm.entrySet) { System.out.println(me.getKey()+":;:"+me.getValue()); } } }
(二). 方法的可变参数
1)格式:方法名(参数类型… arr)2)注意:如果还有其他类型的参数,可变参数放在参数列表的最后。
[code]show("heheh",3,32,4,3,4); public static void show(String str,int...arr) { System.out.println(arr.length+str); }
如果是这样,则会报错。
[code]show(3,32,4,3,4,"heheh"); public static void show(int...arr,String str) { System.out.println(arr.length+str); }
(三). 静态导入
1)格式:import static java.util.Arrays.*2)注意点:
2.1)当类名重名时,需要指定具体的包名
2.2)当方法名重名时,需要指定方法具体所属的对象或者类。
[code]import java.util.*; class StaticImport { public static void main(String args[]) { int[] arr = {1,3,4}; Arrays.sort(arr); int index = Arrays.binarySearch(arr,"3"); System.out.println("indext = "+index); System.out.println(Arrays.toString(arr)); } }
以上代码利用静态导入简化代码,如下:
[code]import static java.util.Arrays.*; import static java.lang.System.*; class StaticImport { public static void main(String args[]) { int[] arr = {1,3,4}; sort(arr); int index = binarySearch(arr,"3"); out.println("indext = "+index); out.println(Arrays.toString(arr)); } }
注: 此处的out.println(Arrays.toString(arr));换成out.println(toString(arr));则出错。
原因:因为此处首先引用的是Object类的toString()方法,此方法没有参数。所以此处Arrays类和Object类存在方法名一样的冲突,因此需要写上类名Arrays。
(四). StringBuilder
1)StringBuffer是线程同步,而StringBuilder是线程不同步。2)StringBuilder是StringBuffer的升级版,所有的用法都一样。
2)以后开发,建议使用StringBuilder,提供效率。
相关文章推荐
- eclipse for android安装过程
- Spring记录 - Jackson使用上的注意点Boolean字段
- 35 个 Java 代码性能优化总结
- 递归练习---求两个数的最大公约数
- javaweb项目开发日志的原理,方式
- java类的派生
- Java中的RTTI和反射机制
- Java对象序列化
- [深入理解Java虚拟机]第十一章 程序编译与代码优化-晚期(运行期)优化
- Spring mvc之JSR303框架实现数据格式化,数据验证,资源国际化
- 下载安装JDK,并且配置java环境变量
- java---Java队列和C队列的区别
- Spring mvc之返回jackson和异常处理
- “java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the”错误
- JAVA_SE基础——51.内部类
- java数据类型
- spring mvc生成注册验证码
- java实现数据库导出ECXL表格
- 深入浅出Java三大框架SSH与MVC的设计模式
- SpringMVC使用ResponseBody报406错误