2015-11-19 26 views
1

我发现这个程序中的每个循环应用字符数组和迭代上使用字符所做的一切......请给我解释一下怎么样它正在发生?......我认为迭代,只能用一个字符来完成..每个回路应用字符数组上迭代使用字符

class Print{ 

    public static void main(String args[]) { 
     printCharacters("Java"); 

    } 
    public static void printCharacters(String word) { 
     char[] characters = word.toCharArray(); 
     for (Character ch : characters) { 
     System.out.println(ch); 
     } 

    } 

} 

输出:

J 

A 

V 

A 
+9

这被称为[自动装箱](https://docs.oracle.com/javase/tutorial/java/data/autoboxing.html)。 – Turing85

+0

Thanks @ Turing85 .. –

回答

4

我不知道为什么所有的downvotes,这是一个合法的问题!

实际上,你有一个很好的抓在这里,因为阵列使用在for循环原始char迭代应该做的定义是相同的:

for (char ch : characters) { 
    System.out.println(ch); 
} 

除非我们有一个很好的理由这样做autoboxing和创建一个Character对象 - 这个开销是不需要的(它实际上是性能上的一击,也是堆内存的浪费)。

这样的“正当理由”的一个例子是,当我们要使用generics不与原始类型的工作。但是,这不是这种情况。

0

char是一个简单的Java数据类型,它不象String的对象。每个简单数据类型具有一个包装类来使用它像一个对象(这是需要在某些情况下使用ArrayList其中仅可以存储对象和没有primetives等char时等)。对于char包装类是CharacterintIntegerlong包裹由Longfloat通过FloatdoubleDouble类。

在这种特殊情况下,不需要用Character实例包装char

相关问题