请教一个for()的问题
public class Test
{
public static void main(String[] args)
{
int[] index = {3,4,5};
for(int t : index)
{
//问题:这里为什么没有能对数组的值进行操作
t = 10;
}
for(int t : index)
{
//还是原来的值
System.out.println(t);
}
}
}
------解决方案--------------------第一个for t是取数组里面的值 没有办法改变数组里面的值
------解决方案-------------------- for(int t : index)
{
//问题:这里为什么没有能对数组的值进行操作
t = 10;
}
等于
for(int i = 0; i < index.length; i++)
{
int t = index[i];
t = 10;//这里怎么改变都没有用
}
------解决方案--------------------你修改了取出以后的值...
for(int i=0;i <index.length;i++){
index[i] = 10;
}
这么改才有用...
------解决方案--------------------值拷贝 和 引用拷贝 这两个概念你明白吗?
简单类型 int byte long double float ...这些, 以及String, 虽然String 是一个对象类型,但是他是特殊的,他的运算符是重载过的
对象类型,继承自java.lang.Object的所有对象除了java.lang.String
值拷贝的意思 :
a变量分配内存x1 变量b分配内存x2 当操作 b = a 时, 将x1的存储内容复制给x2
引用拷贝的意思 :
A变量分配内存x1 变量B分配内存x2 当操作 B = A 时, 将B的内存指针指向A的内存地址x1
明白了吧?
public class Test
{
public static void main(String[] args)
{
int[] index = {3,4,5};
for(int t : index)
{
//问题:这里为什么没有能对数组的值进行操作
t = 10;
}
for(int t : index)
{
//还是原来的值
System.out.println(t);
}
}
}
由于是简单类型,你每次改变的都是t本身的值,没有改变index每个元素的值,因此值不会变。