首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • Boolean对象问题 [已结贴,结贴人:fuqiang229]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fuqiang229
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-20 17:53:32 楼主
    Boolean a = new Boolean(true);
    现在还是这个对象,不想再new一个新对象了,比如 a = new Boolean(false)
    如何把这个对象表示的ture变为false呢?

    (因为这个对象要在好多的类中用,所以不能再new新的了,这个Boolean对象在类间共享)
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fuqiang229
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 18:41:341楼 得分:0
    为什么没有人回答我呢?不能转化吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • allenney
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 18:48:382楼 得分:0
    a = false;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • allenney
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 18:59:043楼 得分:0
    是,的确是个对象。可它就是个变量啊。赋个值就中了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangkai08111
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 19:16:374楼 得分:0
    定义也不用那麻烦,
    boolean a = true;就得,
    下面要改变
    直接 a = false;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liujiaqwer
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 21:26:245楼 得分:0
    简单的问题不用搞那么复杂
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • SARA520
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 21:33:166楼 得分:0
    直接 a = false; 就可以

    还有貌似没必要用Boolean吧???
    直接用boolean不可以么???
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • magicxin031
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 01:09:597楼 得分:0
    这位仁兄为什么要new呢,一般boolean都直接当基本类型来用就可以了啊。
    boolean a=true;
    a=false;相当好用啊,为什么要用Boolean呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fuqiang229
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 08:48:288楼 得分:0
    因为我说过了,这个Boolean是类之间共享的,
    比如:
    class A{
      Boolean flag = true;
      A(Boolean flag){
        this.flag = flag;
      }
    }
    class B{
      Boolean flag = true;
      B(Boolean flag){
        this.flag = flag;
      }
    }
    class Main{
      public static void main(){
        Boolean flag = true;
        A a = new A(flag);
        B b = new B(flag);
        //我想一次性的把三个类中的flag全变成假
        //flag = false;这样一定不行,这样只是new 了一个新的 Boolean(false)
      }
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fuqiang229
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 08:51:109楼 得分:0
    这样问一下吧,对象之间共享(甚至是线程之间共享的)的flag,如何实现共同翻转呢?一起变成false!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Transient1984
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 08:53:0010楼 得分:0
    boolean b = true;
    ....
    ...
    ..
    b=false;

    共享的对象最好是注意下是否使用多线程,如果不使用可以使用单态。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fuqiang229
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 08:56:5511楼 得分:0
    引用 10 楼 Transient1984 的回复:
    boolean b = true;
    ....
    ...
    ..
    b=false;

    共享的对象最好是注意下是否使用多线程,如果不使用可以使用单态。

    什么呀~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fuqiang229
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 09:01:2112楼 得分:0
    不用了,我另想办法吧,或者在一个线程去interrupt另一个线程可以试试
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bluepingguo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 09:14:1713楼 得分:0
    把flag做成属性试试
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • dsfsdafwe
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 09:17:2614楼 得分:0
    这个问题我以前也接触过,开始的时候我也找不到问题的原因,后来我进了一个技术交流群,这个群里的人挺多的,在里面可以沟通技术,你可以进去看一下.群号是:四-三-四-八-零-零-七-一。另外,这个群里可以接项目。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fuqiang229
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 17:25:0015楼 得分:0
    引用 14 楼 dsfsdafwe 的回复:
    这个问题我以前也接触过,开始的时候我也找不到问题的原因,后来我进了一个技术交流群,这个群里的人挺多的,在里面可以沟通技术,你可以进去看一下.群号是:四-三-四-八-零-零-七-一。另外,这个群里可以接项目。

    晕,广告.................
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • anhulife
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 23:25:5816楼 得分:20
    你可以把boolean值封装到一个单独的类里,然后实例化再分发给需要的对象。这样就能实现同时修改了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • anhulife
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 23:37:0917楼 得分:0
    下面是我实验的代码:
    Java code
    public class BooleanTest { public static void main(String[] args) { BooleanInfo bi = new BooleanInfo(true); Class_1 c1 = new Class_1(bi); Class_2 c2 = new Class_2(bi); System.out.println(c1.toString() + " " + c2.toString()); bi.setB(false); System.out.println(c1.toString() + " " + c2.toString()); } } class Class_1 { private BooleanInfo bi; public Class_1() { bi = new BooleanInfo(); } public Class_1(BooleanInfo bi) { this.bi = bi; } public BooleanInfo getBi() { return bi; } public void setBi(BooleanInfo bi) { this.bi = bi; } public String toString() { return "Class_1's BooleanInfo: " + this.bi.toString(); } } class Class_2 { private BooleanInfo bi; public Class_2() { bi = new BooleanInfo(); } public Class_2(BooleanInfo bi) { this.bi = bi; } public BooleanInfo getBi() { return bi; } public void setBi(BooleanInfo bi) { this.bi = bi; } public String toString() { return "Class_2's BooleanInfo: " + this.bi.toString(); } } class BooleanInfo { private boolean b; public BooleanInfo() { } public BooleanInfo(boolean b) { this.b = b; } public boolean getB() { return b; } public void setB(boolean b) { this.b = b; } public String toString() { return new String().valueOf(b); } }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kreadk
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 23:39:1318楼 得分:0
    要是你在JDK1.4环境中可能会有问题,但是JDK5可以帮你自动装箱(autoboxing),就是说基本数据类型 和对象类型之间自动转换,搂住要在不创建新的对象情况下改变其值,直接赋值就搞定啦。


    Java code
    //JDK5 Boolean b=new Boolean(true); b=false;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • deng110ab
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 23:43:5419楼 得分:0
    还是我来说吧,记得给我分啊!!!
    首先,你可以:
    Boolean a = new Boolean(true);
    那个时候,a是true;
    当你想要 a为false的时候;

    a = Boolean.valueOf(false);

    在想要a = true 时

    a = Boolean.valueOf(ture);

    静态方法Boolean.valueOf(boolean b);
    返回的是一个指定的布尔值b 的Boolean 的对象实例
    哇哈哈哈哈哈哈哈

    记得给我分啊!!!!
    不给我分举报你!!!!
    哇哈哈
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • java_xinjun
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 23:54:1620楼 得分:0
    引用 19 楼 deng110ab 的回复:
    还是我来说吧,记得给我分啊!!!
    首先,你可以:
    Boolean a = new Boolean(true);
    那个时候,a是true;
    当你想要 a为false的时候;

    a = Boolean.valueOf(false);

    在想要a = true 时

    a = Boolean.valueOf(ture);

    静态方法Boolean.valueOf(boolean b);
    返回的是一个指定的布尔值b 的Boolean 的对象实例
    哇哈哈哈哈哈哈哈

    记得给我分啊!!!!
    不给我分举报你!!!!
    哇哈哈
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • funcreal
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 08:12:2321楼 得分:0
    用Boolean的话永远不要new,请直接使用Boolean.TRUE和Boolean.FALSE这两个类常量。
    这样是不是就解决问题了?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • maodie007
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 08:25:4522楼 得分:0
    为撒子要搞这么复杂 本来很简单的东西
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zishizhilong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 08:31:4123楼 得分:0
    设计上就错误了。

    还搞什么?

    基本类型非要用对象实现。

    无语--
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jdifjoifj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 08:47:1624楼 得分:0
    该回复于2008-08-22 09:09:49被版主删除
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • liaoyi_ipanel
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 08:47:4125楼 得分:0
    一般情况下,一个变量要在多个类中共享的话,可以把它在一个Defines类中定义成static,这样,当你改变它的时候就全局改变了.
    Java code
    public class Defines{ public static Boolean a = new Boolean(true); } class A{ public static void main(String []args){ B.changeA(); //这时Defines.a就为false了; } } //改变a的值 class B{ public static void changeA(){ Defines.a = flase; } }


    你试试看--!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • greathawker
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 09:36:2326楼 得分:0

    对象间共享不要直接用boolean, 可以写一个类来包装。

    class SharedData{
        boolean b;
    }

    对象间共享这个类的对象就可以了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ooo19841080xinxin
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 09:53:3527楼 得分:0
    20楼不可以的,这样还是构造了一个新对象
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ooo19841080xinxin
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 09:57:2228楼 得分:0
    换个思路吧
    修改 删除 举报 引用 回复