Java新特性(二)

这段时间太忙,更新的频率有点小了!刚解决了一个复杂的算法问题,现在就抽这点时间来讲讲剩下的一部分java新特性。

在上一节中我们学过泛型、自动装箱拆箱、for循环,这一节的内容是可变长参数、枚举类型和静态引用。

我们需要构造一个或多个方法来解决一个实际的问题,而每个方法又包括方法名、方法权限、返回参数、形参类型、形参和方法体等。其中,方法形参可以是一个,也可以是多个。在实际开发中,通常会遇到这样的情况,我们需要向同一个方法中传入类型相同而个数不定的形参,例如现有一个方法sum(int x,int y),通过sum(2,3)调用这个方法,可以返回2+3=5的值,如果现在我有很多类型与之相同的表达式需要计算,比如2+5+6,2+9+7+7...由于表达式太多,我们不可去能重载sum()方法,那么java的新特性可变参数就开始起作用了。

观察下面一段程序:

public class ChangeableVariable

{

/**

 * @param args

 */

public static void main(String[] args)

{

System.out.println(sum(1));

System.out.println(sum(1,2));

System.out.println(sum(1,2,3));

}

public static int sum(int...n)

{

int sum=0;

for(int x:n)

{

sum+=x;

}

return sum;

}

}

运行结果:

1

3

6

是不是感觉很惊奇呢?在以上代码中,我们仅仅使用了一个函数就完成了表达式11+2,1+2+3的计算,这样的做法在java 1.5之前是不可思议的。现在我们来简单地分析一下以上代码的原理,首先我们观察int sum(int...n),里面的int...n就是所谓的可变参数,我们可以向其中传入任意个参数进行运算(注意:参数的类型必须相同,运算类型可以根据实际情况有所不同)。在对可变参数进行取值时,又要用到前面所学的java新特性for循环,这两种新特性加在一起使用,大大地减轻了程序员的负担。

大家对于枚举类型一点也不陌生,不管是面向过程的C语言,还是面向对象的C++,都存在枚举类型。然而,java1.5版本前是没有枚举类型的,那么在实际运用中,如果想要达到如C/C++中枚举类型的效果,一般都是声明多个String的静态常量,这样做存在着诸多安全问题,同时,当程序编译完成后如果对其值进行修改,那么程序不得不重新进行编译。所以,java1.5版本中重新引入枚举的概念。由于枚举的内容很简单,这里只做一下简单的介绍。

枚举的声明格式为:

[权限符]+enum+枚举名{成员1,成员2...}

程序中的调用格式为:

枚举名.成员

至于静态引用的问题,跟C++的内容很相似,并且在前面的内容中已经讲了很多了,这里就不再多讲了。

下节将讲解面向对象编程基础,这节的内容就到这里。

原文地址:https://www.cnblogs.com/jeancandoit/p/2306699.html