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,应该如何写代码??
这个问题不要用一个个赋值的傻瓜方式,我这只是举个例子,如果列举变量一多,明显是不现实的!!

解决方案 »

  1.   

    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的值 
      

  2.   

    你构造函数的第一句blAdd = true;所以输出是true 啊
    for (int i = 0; i < blAll.length; i++)
    blAll[i] = false;这句你已经把blAll的所有元素(即blAdd,blModify,blDel)都赋值false了啊,
    你是什么问题?
      

  3.   

    你声明的是三个boolean变量和一个数组,不要以为数组里放的是声明的三个变量
      

  4.   

    private boolean[] blAll = { blAdd, blModify, blDel };
    这样声明赋值之后blAll[0]已经为false,它现在跟blAdd没有关系,换成Object也一样,没有关系了,只是在此次声明赋值后此时的值相等而已。
      

  5.   

    java中你的数组只是取值并没有把那几个变量的地址传过去,呵呵
      

  6.   

    如果只是要达到把几个都赋值成false那只要把blAdd = true;删了就可以啦  单这不能解决实质的问题
      

  7.   

    为什么输出的是true?如果想把blAll的所有元素(即blAdd,blModify,blDel)都赋值false,应该如何写代码??
    ================================
    你用数组给blAdd,blModify,blDel赋值false干吗?
    你不赋值,blAdd,blModify,blDel缺省就是false
    这个问题不要用一个个赋值的傻瓜方式,我这只是举个例子,如果列举变量一多,明显是不现实的!!
    ====================================
    要是一个个赋true值,就得傻瓜一下了,但是不觉得那么多字段都得赋true值不是傻瓜好久吗?
      

  8.   

    1.在java中,类的属性会自动赋初值,如果是基本类型,则赋相应的值,如boolean是false,int是0,等等,如果是对象类型,则自动赋null值,这是最基本的java基础知识,而且你的调用思想很有点混乱,反正我是不知道你到底要做什么....2.就算你想把blAll中的所有值设为false,但在输出时你使用的是blAdd:
    System.out.print(blAdd);
    而在前面你已经写了:blAdd = true;所以你永远都会输出true~~!!与你的blAll没有任何关系~
      

  9.   

    private boolean blAdd;private boolean blModify;private boolean blDel;private boolean[] blAll = { blAdd, blModify, blDel };声明把boolean都该成Boolean
    boolean是基本数据类型,等号相当于复制,Boolean是类,相当于传地址。这样lz的循环赋值就能实现了。
      

  10.   

    enjoy63() ( ) 说得好~
    cangying747() 说得好~ 但是怎么实现?麻烦贴代码上来.(理论我明白...但是...@#%!lz已经把我搞晕了~)
             private Boolean blAdd; //如果不new就是null啦!如果new就跟lz的奇怪的想法不一样了?晕~
    private Boolean blModify;
    private Boolean blDel; private Boolean[] blAll = { blAdd, blModify, blDel }; public ArrayTestDemo() {
    // blAdd =new Boolean(true); for (int i = 0; i < blAll.length; i++)
    blAll[i] =Boolean.valueOf(false); System.out.println(blAdd);   //null
    System.out.println(blModify);//null
    System.out.println(blDel);   //null
    System.out.println(blAll[0]);//这样才是false...麻烦 ...搞得好晕...不正常...闪~
    }
      

  11.   

    看了一大堆,并没有把我的问题真正解决
    这些变量初始值是false,然后在程序处理过程中变成了true,现在我想通过for循环,把所有的变量再都赋值为false,具体应该怎么coding?你们将了一大堆理论,却没有人给出实际有效的办法。
      

  12.   

    你那样写只是改变了数组的指向.指向了三个都是false的变量.
      

  13.   

    前面不是有人说了吗?你那3个成员变量跟数组已经没有关系了,数组中存的仅仅是3个boolean成员变量的值罢了,private boolean[] blAll = { false, false, false};blAll数组:                  变量:blAdd   变量:blModify   变量:blDel;
     -------                      ------        -------        -------
    | false<--是值不是地址       | true |      | false |      | false |
    | false |                     ------        -------        -------
    | false |
     -------
    你说数组中的3个false跟变量:blAdd,还有什么关系吗?所以你再怎么改数组中的值,也不会改变成员变量的值的.(他们根本就没关系了)
      

  14.   

    代码应改为:
    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();
    }
    }
      

  15.   

    SORRY  没看清题  呵呵
      

  16.   

    要是可以创建指针数组就好了,不知道java怎么实现,
    boolean创建的变量是对象么,有引用么??能用引用改变变量值么
    偶刚学java 基本问题都懂都
      

  17.   

    我现没有编译环境,但我想你可能把一些概念理解错了。
    private boolean[] blAll = { blAdd, blModify, blDel };
    这是对数组blAll的初始化,而且是基本类型的数组。
    不同于引用类型。就类似于:
    private int[] blAll = { 3, 5, 7};
    你可以选择其他方法。
      

  18.   

    > 看了一大堆,并没有把我的问题真正解决
    > 这些变量初始值是false,然后在程序处理过程中变成了true,
    > 现在我想通过for循环,把所有的变量再都赋值为false,具体
    > 应该怎么coding?你们将了一大堆理论,却没有人给出实际有效的办法。既然你在 class 里一个一个地定义了多个变量,就没办法简单地用 for 循环给它们赋值了。不过,你可以考虑用反射的方法遍历每个属性,然后给它们赋值。虽然能在一定程度上解决你提出的问题,但这样并不是一个好的编程习惯。
      

  19.   

    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"));

    }
    }看一下这个能不能满足你要的!
    在实际开发中我建议你还是把他们都放在一个函数里调用.