看书上写着,
        if ((flags & ALLBITS) !=0 {
              repaint();
         }
         else if (flags & (ERROR |ABORT )) != 0) {
              error = true;
              // 文件没有找到,考虑显示一个占位符
              repaint();
          }
          return (flags & (ALLBITS | ERROR| ABORT)) == 0;这里边的&,|, 和flags 参数什么意思,
比如flags是和ALLBITS "|"的结果,为什么又要和ALLBITS "&"呢,

解决方案 »

  1.   

    这里的&和|都是关系运算符
    比如100&001=000,100&101=100,100|001=101...
    "比如flags是和ALLBITS "|"的结果"这句话不明确,参数间如何运算跟前后没有关系
      

  2.   

    flags 值是 ImageObserver 的常数ABORT,ALLBITS,ERROR,FRAMEBITS,HEIGHT,PROPERTUES,SOMEBITS,WIDTH 之一。ABORT:图像加载被中断
    ALLBITS:所有的图像位都已经加载给图像
    ERROR:图像加载过程中出现错误你的程序敲的有些错误,我觉得可能是这个意思:
    如果当前图像位被完全加载,那么重新刷新一次;
    否则,如果图像加载被中断或在加载过程中出现错误,那么 error = true,再重新刷新一次;
    最后,如果 flags 不是ABORT,ALLBITS,ERROR这三种情况之一,返回 true;否则就返回 false。
      

  3.   

    &和|都是关系运算符
    flags 一般是标志位  具体社么意思要看程序了
    return ((flags & (ALLBITS | ERROR| ABORT)) == 0)
    从字面看来 如果第一个标志位为真则和后面的与 
    (ALLBITS | ERROR| ABORT)表示如果文件错误或中断
    然后返回一个BOOLEAN值