JDK 5.0特性

1,静态导入

import static java.lang.Math.*;
//静态导入的是静态方法和静态类,或者是静态成员变量
class StaticImport 
{
	public static void main(String[] args) 
	{
		 int a=Math.max(10,20);
		 int b=Math.min(10,20);
		 System.out.println(a);
		 System.out.println(b);
	}
}

 2,装箱和拆箱

//装箱和拆箱
//值类型转换为引用类型---装箱
//引用类型转换为值类型---拆箱
class BoxAndUnBox 
{
	public static void main(String[] args) 
	{
		//5.0之后才可以这样写
		// Integer i=new Integer(0);
		// int j=i;   //将值类型转换为封装类型,即装箱
		 //4.0版本 需要进行封箱,和拆箱
          Integer i=new Integer(10);
		  int j=i.intValue();
           System.out.println(j);

		  Double dou=new Double(20.0);
		  double d=dou.doubleValue();
		  System.out.println(d);
		  //反之
		  int int1=1;
		  Integer int2=new Integer(int1);
           System.out.println(int2);


         System.out.println(i+"...."+j);


		 int x= 0;
		 Integer y=x;
		 System.out.println(x+"..."+y);
         
           /*
		   *0....0
           *0...0
		   

		   //在基本数据类型中,会出现int-- short--long--float--double之间的转换
		    //例如:
			*/
			int z=10;
			print(10);  //此时调用 print(int i),若将 print(int i)注释掉,则会调用 print(short i)。。。。一次类推

            

			
	}

	public static void print(int i)
	{
		 System.out.println(i);
	}
	public static void print(short i)
	{
		 System.out.println(i);
	}
	public static void print(long i)
	{
		 System.out.println(i);
	}
	public static void print(float i)
	{
		 System.out.println(i);
	}
	public static void print(double i)
	{
		 System.out.println(i);
	}
	
}

3,可变类型

class Variable 
{
	public static void main(String[] args) 
	{
		Integer[] numsInteger={1,2,3,4,5,6,7};
		print(numsInteger);
		/*
		1
		2
		3
		4
		5
		6
		7
		This is print[]
		*/

		//int[] numsInt={1,2,3,4,5,6,7};
		//print(numsInt);//这样写将报错
		/*
		    需要: Integer[]
			找到: int[]
			原因: 无法通过方法调用转换将实际参数int[]转换为Integer[]
		*/


		printVar(1,2,3,4,5,6);//调用可变类型参数方法

        printVar(numsInteger);


		

	}
	public static void print(Integer[] num)  
	{
		for (int i=0;i<num.length ; i++)
		{
         	System.out.println(num[i]);
		}
		System.out.println("This is print[]");
	}
	public static void printVar(Integer... num)  //这里使用可变类型,可变类型默认为数组,
	{
		for (int i=0;i<num.length ; i++)
		{
         	System.out.println(num[i]);
		}
		System.out.println("This is printVar[]");
	}

                   //public static void printVar(Integer[] num)
                   //此方法不能与可变参数 public static void printVar(Integer... num) 同时存在,因为可变参数最终被当做数组使用

                  //实际参数是组数,数组将被打散最终以printVar(1,2,3,4,5,6,7)进行传入

                  //可变参数只能放在方法参数列表的最后一位:一个方法只能有一个可变参数

                  // public static void printVar(Integer... num,int a)错误

       // public static void printVar(Integer... num,String... str) 错误

}

4,泛型

package cn.itcast.base;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;

public class GenericTest {
	
	public static void main(String[] args) {
		
		/*
		 * 格式:类型<类型[,类型...]>
		 * * 泛型使用必须前后相同
		 * * 泛型是在编译前进行类型约束,在字节码文件中不存在泛型信息
		 */
		
		List<String> list = new ArrayList<String>();
		list.add("abc");
//		list.add(123);
		
		
		Map map = new HashMap();
		map.put(123, 123);
		
		//没有泛型的map 的遍历
		Set s = map.entrySet();
		Iterator ite = s.iterator();
		while(ite.hasNext()){
			Map.Entry entry = (Entry) ite.next();
			Integer key = (Integer) entry.getKey();
			Integer value = (Integer) entry.getValue();
			System.out.println("*** " + key + ":" + value);
		}
		
		
		
		Map<String,Integer> map2 = new HashMap<String, Integer>();
		map2.put("123", 456);
		map2.put("abc", 789);
		
		
		//遍历map  [key,value][key,value]
//		map2.keySet()  获得所有的键值 key
		Set<Map.Entry<String,Integer>> set = map2.entrySet();  //获得每一组 Entry(key,value)
		//迭代器
		Iterator<Entry<String,Integer>> it = set.iterator();
		while(it.hasNext()){
			Map.Entry<String, Integer> entry = it.next();
			String key = entry.getKey();
			Integer value = entry.getValue();
			System.out.println(key + ":" + value);
		}
		
		
	}
	
/*	
 * 不能同时存在
 * public void demo(List<String> list){
		
	}
	

	public void demo(List<Integer> list){
		
	}*/

}

5,foreach

package cn.itcast.base;

import java.util.ArrayList;
import java.util.List;

public class ForEachTest {
	
	public static void main(String[] args) {
		
		List<String> list = new ArrayList<String>();
		list.add("abc");
		//list.add(123);
		
		//遍历list
		for(int i = 0 ; i < list.size(); i ++){
			String obj = list.get(i);
			System.out.println(obj);
		}
		
		for(String s:list){
			System.out.println("##" + s);
		}
		
		
		
		//没有泛型
		List l = new ArrayList();
		l.add("abc");
		l.add(123);
		
		for(Object o :l){
			System.out.println("---" + o);
		}
		
		
		String[] str = {"abc","edc"};
		for(String s:str){
			System.out.println("string " + s);
		}
		
		/* foreach
		 * for(类型   变量名 : 集合(Iterable)|数组){}
		 * 
		 *  * 需要实现Iterable接口的所有的集合。只要能够迭代的所有的集合
		 */
		
		
	}

}

  

package cn.itcast.base;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class ForEachTestDemo {
	
	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		list.add("abc");
		list.add("abcd");
		list.add("asf");
		list.add("ceg");
		list.add("daf");
		list.add("dfs");
		
		//迭代器
		Iterator<String> it = list.iterator();
		while(it.hasNext()){
			String str = it.next();
			if(str.contains("a")){
				//list.remove(str);  //java.util.ConcurrentModificationException
				it.remove();
			}
		}
		
		System.out.println(list);
		
		
		
	}
	
	public void demo3(){
		//java.util.Arrays.ArrayList  
		List<String> list = Arrays.asList("abc","bcd", "asf", "ceg", "daf", "dfs");  
		
		for(int i = 0 ; i < list.size() ; i ++){
			String str = list.get(i);
			if(str.contains("a")){
				//java.lang.UnsupportedOperationException
				list.remove(i);
			}
		}
		
		
		System.out.println(list);
	}
	
	public void demo2(){
		//不能删除
		List<String> list = new ArrayList<String>();
		list.add("abc");
		list.add("abcd");
		list.add("asf");
		list.add("ceg");
		list.add("daf");
		list.add("dfs");
		
		//java.util.ConcurrentModificationException
		for(String s:list){   //foreach不能删除
			if(s.contains("a")){
				list.remove(s);
			}
		}
		
		System.out.println(list);
	}
	
	
	public void demo(){
		
		List<String> list = new ArrayList<String>();
		list.add("abc");
		list.add("abcd");
		list.add("asf");
		list.add("ceg");
		list.add("daf");
		list.add("dfs");
		list.add("abc");
		
		for(int i = 0 ; i < list.size(); i++){
			String str = list.get(i);
			if(str.contains("a")){  //确定是否包含字符串a
				//移除
				list.remove(i);
//				list.remove(str);
				i --;
			}
			//System.out.println(str);
		}
		
		System.out.println(list);
		
	}

}

  

原文地址:https://www.cnblogs.com/anbylau2130/p/3023253.html