Frage : Logischer Operator des Java-Schwingens

Ich habe einige Codes, die von DefaultButtonModel.java extrahiert werden. Ich wundere mich, was folgendes Betriebsmittel tut:

            stateMask |= ERMÖGLICHT;
            stateMask &= ~PRESSED;

stateMask ist int, ERMÖGLICHT ist abschließender int (1 << 3), BETÄTIGT ist int (1<<2).

allgemeiner abschließender Static int BETÄTIGTE = 1 << 2;
allgemeiner abschließender Static int ERMÖGLICHTE = 1 << 3;

Does stateMask |= ERMÖGLICHTES Mittel: 1) weisen stateMask ODER ERMÖGLICHT, es dann zurück zu stateMask zu?
Does stateMask &= ~PRESSED Mittel: 1) wird neg PRESSE zuerst (0x0 zu 0x1, zu 0x1 zu 0x0), dann UND mit stateMask, Resultat stateMask zugewiesen?
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
40:
41:
public Lücke setEnabled (Boolesches B) {
        wenn (isEnabled () == B) {
            Rückkehr;
        }
            
        wenn (b) {
            stateMask |= ERMÖGLICHT;
        } sonst {
            stateMask &= ~ENABLED;
	    // unarm und unpress, gerade im Fall
            stateMask &= ~ARMED;
            stateMask &= ~PRESSED;
        }

            
        fireStateChanged ();
    }
        
    /**
     * {@inheritDoc}
     *
    Öffentlichkeitslücke setSelected (Boolesches B) {
        wenn (this.isSelected () == B) {
            Rückkehr;
        }

        wenn (b) {
            stateMask |= VORGEWÄHLT;
        } sonst {
            stateMask &= ~SELECTED;
        }

        fireItemStateChanged (
                neues ItemEvent (dieses,
                              ItemEvent.ITEM_STATE_CHANGED,
                              dieses,
                              b?  ItemEvent.SELECTED: ItemEvent.DESELECTED));
        
        fireStateChanged ();
        
    }

Antwort : Logischer Operator des Java-Schwingens

Hallo learningunix,

die Linie überprüft, ob das am weitesten links liegende Byte von „numerischem 1““ ist „.

„&num“ ist ein Zeiger zur Speicheradresse, in der das erste Byte von „numerischem“ liegt. „(Char*)“ wirft diesen Zeiger „&num“ (der ein Zeiger zu int ist), zu einem Zeiger, um zu verkohlen. Da Putzfrau eine ein-zurückgreifende Byte-Datenart dass „Zeiger, um mit „*“ Zugängen das erste Byte des int zu verkohlen“ ist. In endian wenig muss dieses Byte „1“ für und „int“, der „1“ ist - in grossem endian sein das erste Byte sein „0“, da das wenige bedeutende Byte ist nach rechts das…

Hoffen, dass Hilfen,

ZOPPO

Weitere Lösungen  
 
programming4us programming4us