Jdk5以后的新特性

一:泛型:

数组直接定义了存储的类型,防止出现其他类型的元素,集合能不能也像数组一样,直接规定我们集合的存储类型,针对这种情况出现了一种技术:泛型

//泛型可以定义在建立对象上和建立类上
public class Exercise1 {
public static void main(String[] args) {
	//定义在类上,可以解除黄色警报线
	//在定义泛型后,在该类在调用一些方法添加数据时,规定了数据类型,减少错误率
	//将运行期会出现的类型异常可以在编译期报错,方便修改
	//避免了强制类型转换
	//在声明对象中必须写,在new对象是可以不写
	ArrayList<String> array=new ArrayList<>();
	array.add("hello") ;
	array.add("world") ;
	array.add("java") ;
	
	Iterator<String> it = array.iterator();
	while(it.hasNext()) {
		String s = (String) it.next() ;
		System.out.println(s);
	}
}

同时,泛型可以建立在类上,

class abc<T>{
	private T obj;
	public T getObj() {
		return obj ;
	}
	
	public void setObj(T obj) {
		this.obj = obj ;
	}
}

public class Exericise2 {
public static void main(String[] args) {
	abc<String> a=new abc<>();
	a.setObj(new String("张三"));
	String s = a.getObj() ;
	System.out.println("姓名是:"+s);
    //	a.setObj(new Integer(27)); 
	//无法在string类型下的类的对象下使用integer数据类型
	//解决方案:从新建立integer对象
	abc<Integer> a1 = new abc<Integer>() ;
	a1.setObj(new Integer(27));
	Integer i = a1.getObj() ;
	System.out.println("年龄是:"+i);
}
}

2.静态导入

静态导入:特点:
  1)前提是该方法必须是静态的
  2)导入到的一个方法的级别
 静态导入的格式:        import static 包名.类名.方法名;

 import static java.util.ArrayList.add;   方法必须是静态方法

导包可以简单分为两种包:类文件(源程序)和方法包
两种格式不同:类文件import XXXX  
           方法包  import static XXXX    定位到方法地址

import java.util.Scanner;   //类文件
import static java.lang.Math.max;   静态方法包
public class ImportStatic {
public static void main(String[] args) {
	//import java.util.Scanner;  导入类文件包,
	//public final class Scanner implements Iterator<String>, Closeable {
    //}  原码包
	Scanner sc=new Scanner(System.in);
	System.out.println("输入第一个数字:");
	int a=sc.nextInt();
	System.out.println("输入第二个数字:");
	int b=sc.nextInt();
	System.out.println(max(a,b));
}
public static int  max(int a,int b) {
	int x=(a-b)>0? a:b;
	return x;
}
}

3.可变参数

在定义一个方法时,不确定具体传入多少个数据,就可以引入可变参数来使用
书写格式:数据类型...变量名   (int...a)
可变参数优点:减少同种方法且参数个数不同的方法书写个数,书写简单
 但只局限使用于简单的计算,复杂计算因为参数个数的不确定反而增加书写复杂度


public class Exercise1 {
public static void main(String[] args) {
	int a=1;
	int b=2;
	int c=3;
	int d=4;
	int e=5;
	
	System.out.println(sum(a,b,c,d,e)); //15
	System.out.println(sum(a,a,a));     //3
	System.out.println(sum(a,b));       //3
	System.out.println(sum(a));         //1
}
public static int sum(int...a) {
	int x=0;
	for(int n:a) {
		x +=n;
	}
	return x;
}



猜你喜欢

转载自blog.csdn.net/qq_41923771/article/details/80273479