求一个关于boolean赋值的问题??
public class Test {
private boolean blAdd;
private boolean blModify;
private boolean blDel;
private boolean[] blAll = { blAdd, blModify, blDel };
public Test() {
blAdd = true;
for (int i = 0; i < blAll.length; i++)
blAll[i] = false;
System.out.print(blAdd);
}
public static void main(String args[]) {
new Test();
}
}
为什么输出的是true?如果想把blAll的所有元素(即blAdd,blModify,blDel)都赋值false,应该如何写代码??
这个问题不要用一个个赋值的傻瓜方式,我这只是举个例子,如果列举变量一多,明显是不现实的!!
------解决方案--------------------private boolean[] blAll = { blAdd, blModify, blDel };
只是把 blAdd, blModify, blDel 对应的值赋过去了
相当private boolean[] blAll = { false, false, false};
for (int i = 0; i < blAll.length; i++)
blAll[i] = false;
这里不影响 blAdd的值
------解决方案--------------------你声明的是三个boolean变量和一个数组,不要以为数组里放的是声明的三个变量
------解决方案--------------------前面不是有人说了吗?你那3个成员变量跟数组已经没有关系了,数组中存的仅仅是3个boolean成员变量的值罢了,private boolean[] blAll = { false, false, false};
blAll数组: 变量:blAdd 变量:blModify 变量:blDel;
------- ------ ------- -------
| false <--是值不是地址 | true | | false | | false |
| false | ------ ------- -------
| false |
-------
你说数组中的3个false跟变量:blAdd,还有什么关系吗?
所以你再怎么改数组中的值,也不会改变成员变量的值的.(他们根本就没关系了)
------解决方案--------------------> 看了一大堆,并没有把我的问题真正解决
> 这些变量初始值是false,然后在程序处理过程中变成了true,
> 现在我想通过for循环,把所有的变量再都赋值为false,具体
> 应该怎么coding?你们将了一大堆理论,却没有人给出实际有效的办法。
既然你在 class 里一个一个地定义了多个变量,就没办法简单地用 for 循环给它们赋值了。
不过,你可以考虑用反射的方法遍历每个属性,然后给它们赋值。虽然能在一定程度上解决你提出的问题,但这样并不是一个好的编程习惯。
------解决方案--------------------import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class Test {
public Test() {
}
public static void main(String args[]) {
Map <String,Boolean> Intmap = new HashMap <String,Boolean> ();
Intmap.put( "blAdd ",new Boolean(true));
Intmap.put( "blModify ",new Boolean(true));
Iterator <String> iter = Intmap.keySet().iterator();
// update before
System.out.println(Intmap.get( "blAdd "));
System.out.println(Intmap.get( "blModify "));
while(iter.hasNext()){
Intmap.put(iter.next(),new Boolean(false));
}
// update after
System.out.println(Intmap.get( "blAdd "));
System.out.println(Intmap.get( "blModify "));
}
}
看一下这个能不能满足你要的!
在实际开发中我建议你还是把他们都放在一个函数里调用.