求一个关于boolean赋值的问题??

KK103 2007-04-12 07:27:42
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,应该如何写代码??
这个问题不要用一个个赋值的傻瓜方式,我这只是举个例子,如果列举变量一多,明显是不现实的!!
...全文
865 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunshupeng 2007-04-16
  • 打赏
  • 举报
回复
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"));

}
}

看一下这个能不能满足你要的!
在实际开发中我建议你还是把他们都放在一个函数里调用.
lionest 2007-04-14
  • 打赏
  • 举报
回复
SORRY 没看清题 呵呵
lionest 2007-04-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();
}
}

thePresent 2007-04-14
  • 打赏
  • 举报
回复
前面不是有人说了吗?你那3个成员变量跟数组已经没有关系了,数组中存的仅仅是3个boolean成员变量的值罢了,private boolean[] blAll = { false, false, false};

blAll数组: 变量:blAdd 变量:blModify 变量:blDel;
------- ------ ------- -------
| false<--是值不是地址 | true | | false | | false |
| false | ------ ------- -------
| false |
-------
你说数组中的3个false跟变量:blAdd,还有什么关系吗?

所以你再怎么改数组中的值,也不会改变成员变量的值的.(他们根本就没关系了)
pei_qiang 2007-04-14
  • 打赏
  • 举报
回复
你那样写只是改变了数组的指向.指向了三个都是false的变量.
maquan 2007-04-14
  • 打赏
  • 举报
回复
> 看了一大堆,并没有把我的问题真正解决
> 这些变量初始值是false,然后在程序处理过程中变成了true,
> 现在我想通过for循环,把所有的变量再都赋值为false,具体
> 应该怎么coding?你们将了一大堆理论,却没有人给出实际有效的办法。

既然你在 class 里一个一个地定义了多个变量,就没办法简单地用 for 循环给它们赋值了。

不过,你可以考虑用反射的方法遍历每个属性,然后给它们赋值。虽然能在一定程度上解决你提出的问题,但这样并不是一个好的编程习惯。
sunshupeng 2007-04-14
  • 打赏
  • 举报
回复
我现没有编译环境,但我想你可能把一些概念理解错了。
private boolean[] blAll = { blAdd, blModify, blDel };
这是对数组blAll的初始化,而且是基本类型的数组。
不同于引用类型。就类似于:
private int[] blAll = { 3, 5, 7};
你可以选择其他方法。

Kanmy 2007-04-14
  • 打赏
  • 举报
回复
你只是给数组赋值了..
Kanmy 2007-04-14
  • 打赏
  • 举报
回复
你只是给数组赋值了..
floath 2007-04-14
  • 打赏
  • 举报
回复
要是可以创建指针数组就好了,不知道java怎么实现,
boolean创建的变量是对象么,有引用么??能用引用改变变量值么
偶刚学java 基本问题都懂都
flyIce945 2007-04-13
  • 打赏
  • 举报
回复
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...麻烦 ...搞得好晕...不正常...闪~
}
haitingr 2007-04-13
  • 打赏
  • 举报
回复
搞清楚eum和数组的区别
lanseliuying 2007-04-13
  • 打赏
  • 举报
回复
麻烦你再看看你贴出来的代码,不明白你什么意思?
家有萌宝V 2007-04-13
  • 打赏
  • 举报
回复
blAdd初始化时就已经是false.
KK103 2007-04-13
  • 打赏
  • 举报
回复
看了一大堆,并没有把我的问题真正解决
这些变量初始值是false,然后在程序处理过程中变成了true,现在我想通过for循环,把所有的变量再都赋值为false,具体应该怎么coding?你们将了一大堆理论,却没有人给出实际有效的办法。
cangying747 2007-04-12
  • 打赏
  • 举报
回复
private boolean blAdd;

private boolean blModify;

private boolean blDel;

private boolean[] blAll = { blAdd, blModify, blDel };声明把boolean都该成Boolean
boolean是基本数据类型,等号相当于复制,Boolean是类,相当于传地址。这样lz的循环赋值就能实现了。
enjoy63 2007-04-12
  • 打赏
  • 举报
回复
1.在java中,类的属性会自动赋初值,如果是基本类型,则赋相应的值,如boolean是false,int是0,等等,如果是对象类型,则自动赋null值,这是最基本的java基础知识,而且你的调用思想很有点混乱,反正我是不知道你到底要做什么....

2.就算你想把blAll中的所有值设为false,但在输出时你使用的是blAdd:
System.out.print(blAdd);
而在前面你已经写了:blAdd = true;所以你永远都会输出true~~!!与你的blAll没有任何关系~
sunny3106 2007-04-12
  • 打赏
  • 举报
回复
lanseliuying 正解!!
KRplusSRequalGOD 2007-04-12
  • 打赏
  • 举报
回复
为什么输出的是true?如果想把blAll的所有元素(即blAdd,blModify,blDel)都赋值false,应该如何写代码??
================================
你用数组给blAdd,blModify,blDel赋值false干吗?
你不赋值,blAdd,blModify,blDel缺省就是false


这个问题不要用一个个赋值的傻瓜方式,我这只是举个例子,如果列举变量一多,明显是不现实的!!
====================================
要是一个个赋true值,就得傻瓜一下了,但是不觉得那么多字段都得赋true值不是傻瓜好久吗?
luoxiaobo227 2007-04-12
  • 打赏
  • 举报
回复
如果只是要达到把几个都赋值成false那只要把blAdd = true;删了就可以啦 单这不能解决实质的问题
加载更多回复(5)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧