关于foreach遍历数组时,无法赋值的问题 int a=2;int b=a;b=1;我们先来看看这个,大家可以想想a的值会变成1吗?不会,因为int是基本数据类型,是值的传递,所以a不会变化,那我们再来看看int【】c={1,2};for(int i:c){i=3};可以理解成int i=c【0】;i=3;所以c【0】的值不会发生变化,如果是引用数据类型,情况不一样了,因为是地址的传递。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 foreach只适合遍历输出,要想玩赋值就老实的用一般的写法 特别是你将forech写法转换成相同功能的for一般写法你就能知道具体差别了 fore底层是用Iterator,这个只能看看,不能增删改,唉,好好看看 我去,我发现我提了个同样问题,回答得也是楼上两位使用for each分配object array的问题 不过话说您也忒小气了,才给20分但是楼上说foreach底层就是Iterator的明显只说对了一半啊,array就没有支持Iterable<T>接口这一说标准答案还是看JLS吧14.14.2. The enhanced for statementfor (I #i = Expression.iterator(); #i.hasNext(); ) { {VariableModifier} TargetType Identifier = (TargetType) #i.next(); Statement}T[] #a = Expression;L1: L2: ... Lm:for (int #i = 0; #i < #a.length; #i++) { {VariableModifier} TargetType Identifier = #a[#i]; Statement}都是先赋值给一个临时变量,再在其上操作,所以你赋值不起作用 楼主想辩论这个问题 用普通for更有说服力 高级for底层是迭代器 改不了值 高手帮我看看我这段代码怎么解决空指针异常啊 求指点 java的 弹出对话框显示 如何获得鼠标在屏幕中的位置?有鼠标位置这种类吗? 类中的实例变量需要初始化吗? Java 中怎样在程序中设置代理服务器 java调用webservice,需要进行windows认证的问题 用java编写俄罗斯方块程序的思路? 2个jdk1.3编译的问题. 我的历史遗留问题。关于JAVA的SOCKET java 类锁 如何显式释放(wait释放的是对象锁) 关于继承关系中各代码块加载顺序的疑问
使用for each分配object array的问题
不过话说您也忒小气了,才给20分但是楼上说foreach底层就是Iterator的明显只说对了一半啊,array就没有支持Iterable<T>接口这一说标准答案还是看JLS吧14.14.2. The enhanced for statementfor (I #i = Expression.iterator(); #i.hasNext(); ) {
{VariableModifier} TargetType Identifier =
(TargetType) #i.next();
Statement
}T[] #a = Expression;
L1: L2: ... Lm:
for (int #i = 0; #i < #a.length; #i++) {
{VariableModifier} TargetType Identifier = #a[#i];
Statement
}都是先赋值给一个临时变量,再在其上操作,所以你赋值不起作用