2011-12-26 8 views
3

私は何を理解していない>>、&、?このプログラムの意味:Java構文>>、&、?と:

case MotionEvent.ACTION_POINTER_UP: { 
     // Extract the index of the pointer that left the touch sensor 
     final int pointerIndex = (action & MotionEvent.ACTION_POINTER_INDEX_MASK) 
       >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; 
     final int pointerId = ev.getPointerId(pointerIndex); 
     if (pointerId == mActivePointerId) { 
      // This was our active pointer going up. Choose a new 
      // active pointer and adjust accordingly. 
      final int newPointerIndex = pointerIndex == 0 ? 1 : 0; 
      mLastTouchX = ev.getX(newPointerIndex); 
      mLastTouchY = ev.getY(newPointerIndex); 
      mActivePointerId = ev.getPointerId(newPointerIndex); 
     } 
     break; 

私を助けてくれますか? Googleは英数字以外の文字の検索を行いません...

+1

書籍で始める –

+0

Javaチュートリアルはあなたの友人です:http: //docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html –

+0

ここから開始してください:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html –

答えて

1
  • ここ>>shift演算子です。
  • ?:は、オペレータ
  • &Bitwise andオペレータ

tutorial

3

>>のためにここを見てみましょうですTernaryあるシフト演算子であり、(右

にビットパターンをシフトあなたはGoogleのシフト演算子ができます)

&場合のために

? :が短い形式である(ビット演算子を検索)ビット単位およびオペレータである - そして [if cond] ? [then] : [else]

-elseのは、一度にこれらのいずれかを見てみましょう http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html

+0

'?:'を「if-elseの短い形式」と記述します。これはそうではないからです。 –

5

を参照してください...

final int pointerIndex = (action & MotionEvent.ACTION_POINTER_INDEX_MASK) 
      >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; 

これらはビット演算子です。 &は、actionMotionEvent.ACTION_POINTER_INDEX_MASKのビットを結合しています。

>>はその結果をシフトしています。

ビニラミンはbitwise operatorsの良いページを参照しました。

final int newPointerIndex = pointerIndex == 0 ? 1 : 0; 

これは三項演算子です。あなたがこれを表現する方法は(ブール値)?valueIfTrue:valueIfFalse