上一节里留下的问题很简单,这里就不多讲了,在这节中,我们开始学习java中的新特性。新特性内容包括泛型、自动装箱拆箱、for循环、可变长参数等。本节学习泛型、自动装箱拆箱和for循环。
我们知道,在C++和java里都有构造方法,如果我们手工地定义了构造方法,那么程序将会调用我们自定义的构造方法,而不再去调用默认的构造方法。我们通过设置不同的参数值来重载多个不同的构造方法,每次调用构造方法的时候,程序会自动检测参数值的类型,然后通过对应的值去调用相应的方法,然而,方法的重载显得特别繁琐,如果我们需要十种参数的构造方法(此处假设参数个数相同),那么我们就需要重载十个相同的方法名的构造方法,这肯定给我们带来了不少的麻烦。
让我们感到欣喜的是,在java1.5里出现了泛型的概念,它可以帮助我们解决这个问题。比如我们需要定义一类New1_6的构造方法New1_6(),我们想向其中传入多种数据类型的值,那么我们就可以将这个方法这样定义:
public class New1_6
{
public T t;
public New1_6(T t)
{
this.t=t;
System.out.println(t);
}
/**
* @param args
*/
public static void main(String[] args)
{
boolean b=true;
new New1_6<>("Hello");
new New1_6<>(12*56);
new New1_6<>(b);
}
}
运行结果为:
Hello
672
True
以上例子中,T是一个不确定的类型,我们可以向T传递不同的类型,然后就可以得到不同的结果(注意:向构造方法传递的参数个数必须相等)。这里我们就领会到了泛型给我们带来的巨大方便,对于拥有相同参数个数的构造方法,我们不用再去重复地定义多个构造方法了。
接下来,我们来了解一下自动装箱与拆箱。我们在C++里经常会遇到数据类型强制转换的问题,然而java的新特性里面提供了一个自动进行这样的转换的功能,那就是自动装箱拆箱。为了更好地了解自动装箱与拆箱的功能,请看下面的例子。
public class New1_7
{
public static void main(String[] args)
{
Integer x=new Integer(5);
int y=6;
x=x+y;//自动装箱
System.out.println(x);
y=x;//自动拆箱
System.out.println(y);
}
}
自动装箱与拆箱概念很简单,使用也很方便,给程序员减轻了不少的负担。
本节最后一部分内容就是for循环了,这个内容非常重要,在实际项目当中经常用到。
以前我们使用C++时,要实现循环功能,一般都是使用类似for(int i=0;i
public class New1_8
{
/**
* @param args
*/
public static void main(String[] args)
{
String[] str={"Tom","Jack","Lily","Sue"};
for(String x:str)
{
System.out.println(x);
}
}
}
程序的执行结果为:
Tom
Jack
Lily
Sue
看看,是不是比以前的循环使用起来方便多了呢?我们这节的内容就到这里,大家下去自己去编程实现以下这节的内容。