gna*_*nja 2 java foreach for-loop
String[] rgb = new String[3];
rgb[0] = Integer.toHexString(color.getRed());
rgb[1] = Integer.toHexString(color.getGreen());
rgb[2] = Integer.toHexString(color.getBlue());
for(String el : rgb)
{
if(el.equals("0"))
{
el = "00";
}
}
for(int i = 0; i<3; i++)
{
if(rgb[i].equals("0"))
{
rgb[i] = "00";
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我根据天气评估每个索引,每个索引都是=零.但它总是在foreach循环中运行false,并且在for循环中适当时为true.谁能解释幕后发生的事情才能实现这一目标?
我没有按顺序运行它们,它们都用于演示目的.
在for-each
循环中,String el
实际上不是对数组的引用rgb
.它只保存数组中给定索引的值.因此,在这种情况下,您必须使用普通for
循环来修改数组的内容; 否则,el
每次迭代循环都会覆盖内容.
一个直观的解释:
String[] i = new String[]{"Hi", "Hello"}; <------- Contains two indexes.
for(String str : i){
str = str + "!";
}
Run Code Online (Sandbox Code Playgroud)
第一次迭代:
str
设置为i[0]
,其值为"Hi"
str
设置为str + "!"
,更改str
为"Hi!"
str
被丢弃了第二次迭代:
str
设置为i[1]
,其值为"Hello"
str
设置为str + "!"
,更改str
为"Hello!"
for
循环结束; str
被丢弃了在任何情况下都i
不会改变值,因为值str
是对字符串的单独引用.