随着Java 5的发布(也称为Java 1.5或Tiger),Java语言及核心API中添加了一些重要的新特性。本章将通过示例来介绍一些新特性以及Java开发人员不了解的一些有用的类和方法。Java API 非常庞大,它的类超过3000个,要想了解所有的内容非常困难。在核心软件包中,有一些类甚至连有经验的Java开发人员都可能忽视,或许是因为他们以前从未接触过这些类或者不需要使用它们。
很多编程人员把Java仅作为另一种语言和语法来学习。但是高效的Java编程人员是从对象层次结构、行为和关系的角度来审视Java,而不是像在过程语言中那样从函数调用和过程的角度来学习Java。在介绍性讨论中,将强调Java的以下三个相关的部分。
面向对象的语言
高效地使用Java意味着要理解面向对象编程(object-oriented programming,OOP),而不仅仅是Java的语法。如果你对过程语言,如C或Pascal语言,比较熟悉,那么在编写Java代码之前亲自熟悉OOP是非常重要的。本书假定你已经在某种程度上使用过Java。如果你不熟悉OOP,可以在网站http://java.sun.com/docs/books/tutorial/java/ concepts上找到有关OOP的介绍。此外,本章还会讨论一些最新的语法变化。
Java虚拟机(Java Virtual Machine,JVM)
当Java发布时,它最引人注目的方面就是它的Java虚拟机。不同于其他语言中需要为每个目标平台重新编译或修改源代码,Java中只需要编译源代码一次。然后可以在已安装JVM的任何目标系统上运行可执行代码,或字节码(bytecode)。字节码就像一种跨平台的机器语言。除了Java外,其他语言也可以编译成JVM字节码,在后面的章节中会看到这方面的内容。
核心API
Java核心库的规模有时对开发人员来说过于庞大。它包括针对网络、图形、声音、多线程、I/O、安全、加密、数据库、XML以及很多其他方面的软件包。在后续章节中,将会探讨一些核心API的高级特性。此外,还会介绍一些开放源代码的Java项目,这些项目能提供核心API未提供的有用功能。本章中,我们会使用少量核心类和一些源自Java 5的新语法。
.1 在Java中没有for:使用增强的for循环
在一些编程语言中,通过列表或数组可以非常方便地进行遍历,通过一个循环即可逐个遍历项并将该项赋值一个局部变量从而实现自动循环。目前在Java中有了真正的for!
考虑这样一种情况,你希望对一个整型对象集合(如java.util.ArrayList)中的所有数值求和。你很可能编写过类似于下面这样的代码:
ArrayList theList = new ArrayList();
theList.add(new Integer(2));
theList.add(new Integer(3));
theList.add(new Integer(5));
theList.add(new Integer(7));
int sum = 0;
// The old way to iterate
for (Iterator iter = theList.iterator(); iter.hasNext(); ) {
Integer x = (Integer) iter.next();
sum = sum + x.intValue();
}
System.out.println("The sum is " + sum);
这段代码多麻烦啊,难道编译器不应该知道你正在进行迭代吗?毕竟这是一个for循环,不是吗?而在Java 5中,增强的for循环现已支持集合对象。因此不再需要使用迭代器。在下面的修订的代码中,一个for循环通过列表进行迭代并显示出每个值:
ArrayList<Integer> theList = new ArrayList<Integer>();
theList.add(2);
theList.add(3);
theList.add(5);
theList.add(7);
int sum = 0;
// new Java 5 iteration syntax
for (Integer item : theList) {
sum = sum + item;
}
System.out.println("The sum is " + sum);
for循环定义了一个叫做item的局部变量,在每次迭代过程中,它将得到列表中的下一个值。除了完美的for循环语法外,此代码在以下两个方面也不同于过去的Java代码。
使用了泛型
上面带有尖括号的语法是Java 5新增加的泛型特性。泛型允许为一些具体类型的对象定义类,但是直到创建该类的一个实例时才能知道具体的类型。编译器将会强迫执行类型检查。在这个示例中,ArrayList是一个特殊的类,对于add方法它只接受整数(并只从它的Iterator的next方法中返回整数)。这意味着当从列表中检索对象时不需要强制类型转换,可以立即将它们作为Integer实例来对待。不使用泛型时,仍可以使用新的for循环语法,但需要将Object强制转换成Integer。在1.4节中将我们更详细地介绍泛型。
整型对象到整型数值的自动转换
在Java 5中,可以将Integer对象作为int来对待。编译器将自动执行从int到Integer对象的转换(反之亦然),此过程称为自动装箱(autoboxing)。当循环中得到一个Integer对象时,可以将它与一个int值相加而不需要执行显式的转换。
新的for语言也适用于数组:
int[] theList = new int[] {2,3,5,7};
int sum = 0;
for (int x : theList) {
sum = sum + x;
}
System.out.println("The sum is " + sum);
这种新的语法的确使代码变得更加易读和紧凑。但还不能完全放弃迭代器,至少暂时是这样,因为还有很多开发人员没有将他们的JDK升级到版本5。
分享到:
相关推荐
Java中增强for循环的实现原理和坑详解 Java中增强for循环是一种强大且方便的迭代功能,自JDK 1.5以来,它...通过了解增强for循环的实现原理和可能存在的坑,我们可以更好地使用增强for循环,提高编程效率和避免错误。
例如,在遍历Set集合时,使用增强for循环可以简化代码,提高代码的可读性。例如: ```java Set<String> set = new HashSet(); for (String str : set) { System.out.println(str); } ``` 相比之下,使用Iterator...
例如,以下是一个使用增强 for 循环遍历 Set 集合的示例: ```java Set<String> set = new HashSet(); // ... for (String str : set) { System.out.println(str); } ``` 增强 for 循环的缺点 增强 for 循环也有...
在Java编程语言中,增强的for循环(也称为foreach循环)是Java 5引入的一个重要特性,它简化了数组和集合的迭代。然而,增强for循环本身并不直接提供索引访问,这与传统的for循环不同。传统for循环可以让我们通过...
Java中使用增强for循环的实例方法 Java语言中提供了多种循环语句,包括for循环、while循环、do-while循环等,其中增强for循环(也称为foreach循环)是一种特殊的for循环,用于遍历数组或集合中的元素。在本文中,...
2. **无索引访问**:增强for循环不提供直接的索引访问,如果你需要访问元素的索引,你可能需要使用传统的for循环。 3. **不适用于Map**:尽管可以用于遍历`Map`的键集或值集,但无法同时遍历键和值。如果需要同时...
### JDK 1.5 中增强 for 循环详解 #### 引言 随着 Java 技术的不断发展,为了提高开发效率、简化代码编写并增强可读性,JDK 1.5 引入了一系列的新特性,其中就包括了增强 for 循环(Enhanced For Loop),也被称作...
Java增强的for循环 ...Java增强的for循环可以使代码更加简洁,让程序员使用时更加方便,但是也有它的局限性。因此,在实际开发中,需要根据具体情况选择合适的循环方式,不能盲目追求所谓的"新特性"。
java代码-使用java增强for循环 string数组赋值的源代码 ——学习参考资料:仅用于个人学习使用!
在"java基础for循环练习题"中,我们通常会遇到几种类型的`for`循环,包括基本的`for`循环、增强型`for`循环(也称为foreach循环),以及在数组和集合中的应用。下面我们将深入探讨这些知识点。 1. **基本的for循环*...
深入了解for循环的用法,for循环的经典案例。
总的来说,Python的for循环嵌套是其强大的控制流工具之一,它使得程序员能够灵活地处理各种复杂的数据结构和逻辑流程,进一步增强了Python作为开发语言的适用性和效率。通过熟练掌握嵌套循环,开发者可以在解决问题...
J2SE for Loop循环 增强for循环 Enhanced for Loop 更简单的进行遍历
总结起来,本课程涵盖了Java编程中的关键知识点:集合工具类,特别是`Collections`和`Arrays`的使用,增强for循环的高效遍历,以及变长参数的灵活参数传递。通过学习这些内容,开发者可以更高效地处理数据结构,编写...
2. **不支持复杂的条件控制**:如果需要在遍历过程中根据某些条件跳过某些元素或者执行更复杂的逻辑处理,则不适合使用增强for循环。 3. **无法修改原数组或集合**:在循环体内,不能修改正在遍历的数组或集合本身,...
在 J2SE 1.5 中,Java 引入了一种新的 for 循环语法,称为“增强的 for 循环”或“foreach 循环”,它提供了一种更简单的方式来遍历数组和 Collection 对象。 传统的 for 循环 在遍历数组时,传统的 for 循环通常...
首先,我们来看一下如何使用增强for循环。在Java中,对于数组的遍历,可以这样实现: ```java int[] arr = {1,2,3}; for(int a : arr){ System.out.println(a + "\t"); } ``` 在这个例子中,`for(int a : arr)` 是...
老生常谈foreach(增强for循环)和for的区别 在 Java 编程语言中,foreach 和 for 是两种常用的循环语句,都是用于遍历数组或集合的元素。然而,foreach 和 for 之间存在一些关键的区别,了解这些区别对于编写高效的...
本篇将详细解释如何在Java中使用增强for循环处理一维数组和二维数组。 ### 一维数组 在Java中,一维数组是一系列相同类型的元素的有序集合。使用增强for循环遍历一维数组的语法如下: ```java 数据类型[] array =...
例如,如果我们有一个整数数组,我们可以使用增强型for循环来打印所有元素: ```java int[] numbers = {1, 2, 3, 4, 5}; for (int number : numbers) { System.out.println(number); } ``` 这个循环会依次将数组...