黑马程序员——java编程那些事儿____jdk1.5新特性 静态导入、可变参数、高级for循环

                                                                                                                                     -------android培训java培训、期待与您交流! ----------


一  静态导入


**import语句可以导入一个类或某个包中的所有类

**import static语句导入一个类中的某个静态方法或所有静态方法,静态导入后,静态方法前面就不用写类名.方法的方式类调用

** 语法举例: 

import static java.lang.Math.sin;// 导入一个静态方法

import static java.lang.Math.*; //导入一个类中的所有静态方法

**静态导入使用注意:

当类名重复时,需要制定具体的包名;

当方法重名时,需要制定具体所属的对象或者类

import java.util.*;//没有静态,导入的都是类
import static  java.util.Arrays.*;//导入的是Array这个类中的所有静态成员。
import static java.lang.System.*;//导入了System类中所有静态成员
class StaticImport 
{
	public static void main(String[] args) 
	{
		out.println("hah");//System.out.println("hah");
		int[] arr = {3,1,5};
		/*
		Arrays.sort(arr);
		int index = Arrays.binarySearch(arr,1);
		System.out.println(Arrays.toString(arr));
		System.out.println("Index="+index);
		*/
		sort(arr);
		int index = binarySearch(arr,1);
		out.println(Arrays.toString(arr));//方法重名,要指定具体的包名
										  //类重名,指定具备所属的对象或者类
		out.println("Index="+index);
	}
}



二   可变参数


**可变参数的特点:

*可变参数只能出现在参数列表的最后;

*位于变量类型和变量名之间,前后有无空格都可以;

*调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。

**可变参数举例:

*变量类型... 变量名 如 int... arr 表示可变参数数组

*public static void show(String str , int... arr){}

**可变参数的好处

不用每一次都手动的建立数组对象。只要将要操作的元素作为参数传递即可。隐式将这些参数封装成了数组。

/*
JDK1.5版本出现的新特性。

方法的可变参数。
在使用时注意:可变参数一定要定义在参数列表最后面。

*/

class  ParamMethodDemo
{
	public static void main(String[] args) 
	{
		//show3(3,4);
		//show4(3,4,5);
		/*
		虽然少定义了多个方法。
		但是每次都要定义一个数组。作为实际参数。

		int[] arr = {3,4};
		show4(arr);

		int[] arr1 = {2,3,4,5};
		show4(arr1);
		*/

		/*
		可变参数。
		其实就是上一种数组参数的简写形式。
		不用每一次都手动的建立数组对象。只要将要操作的元素作为参数传递即可。隐式将这些参数封装成了数组。
		*/

		show1(2,3,4);
		show2("haha",2,3,4,5,6);

	}
	public static void show1(int... arr)
	{
		System.out.println(arr.length);
	}
	public static void show2(String str,int... arr)
	{
		System.out.println(arr.length);
	}
	/*
	public static void show4(int[] arr)
	{
		
	}
	public static  void show3(int a,int b)
	{
		System.out.println(a+","+b);
	}
	public static  void show4(int a,int b,int c)
	{}
	*/
}


三  高级for循环


**语法:

for ( 数据类型  变量名:集合变量 )  { } 


**注意事项:

迭代变量必须在( )中定义!

集合变量可以是数组或实现了Iterable接口的集合类


**高级for与迭代器的区别   以前不知道这么问题,还在论坛发了很多贴,现在终于明白了

高级for

对集合进行遍历。

只能获取集合元素。但是不能对集合进行操作。

迭代器

对集合进行遍历

对集合进行remove操作

若是ListIterator还可以增删改查


**传统for与高级for的区别

高级for有一个局限性。必须有被遍历的目标。

建议在遍历数组的时候,还是希望是用传统for。因为传统for可以定义脚标。


import java.util.*;
class ForEachDemo 
{
	public static void main(String[] args) 
	{
		//list集合
		ArrayList<String> al = new ArrayList<String>();//若不定义泛型,则for里应该写Object
		al.add("abc1");
		al.add("abc2");
		al.add("abc3");
		for(String s : al)
		{
			System.out.println(s);
		}

		//map集合
		HashMap<Integer,String> hm = new HashMap<Integer,String>();
		hm.put(1,"a");
		hm.put(2,"b");
		hm.put(3,"c");
			//keySet
		Set<Integer> keySet = hm.keySet();
		for(Integer i : keySet)
		{
			System.out.println(i+"::"+hm.get(i));
		}
			//entrySet
		Set<Map.Entry<Integer,String>> entrySet = hm.entrySet();
		for(Map.Entry<Integer,String> me : entrySet)
		{
			System.out.println(me.getKey()+">>>>"+me.getValue());
		}
		/*上面的简写
		for(Map.Entry<Integer,String> me : hm.entrySet())
		{
			System.out.println(me.getKey()+">>>>"+me.getValue());
		}
		*/



		//数组
		int[] arr = {3,4,5,};
		for(int i : arr)
		{
			System.out.println("i:"+i);
		}
		/*传统for
		for(int x=0; x<arr.length; x++)
		{
			Syetem.out.println(arr[x]);
		}
		*/


		/*
		迭代不爽其实
		Iterator<String> it = al.iterator();
		while(it.hasNext())
		{
			System.out.println(it.next());
		}
		*/

	}
}




 -------android培训java培训、期待与您交流! ----------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值