この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Newer Version Available

This content describes an older version of this product. View Latest

式の演算子について

演算子を使用して式を相互に結合し、複合式を作成することもできます。Apex では、次の演算子を使用できます。

演算子 構文 説明
= x = y 代入演算子 (右結合)。y の値を L 値 x に割り当てます。x のデータ型は y のデータ型と一致する必要があり、null となることはできません。
+= x += y 加算代入演算子 (右結合)。y の値を x の元の値に追加し、x に新しい値を再代入します。詳細は、+ を参照してください。x および ynull とすることはできません。
*= x *= y 乗算代入演算子 (右結合)。y の値と x の元の値を乗算し、x に新しい値を再代入します。x および y は Integer または Double、または組み合わせである必要があります。x および ynull とすることはできません。
-= x -= y 減算代入演算子 (右結合)。y の値を x の元の値から減算し、x に新しい値を再代入します。x および y は Integer または Double、または組み合わせである必要があります。x および ynull とすることはできません。
/= x /= y 除算代入演算子 (右結合)。x 元の値を y の値で除算し、x に新しい値を再代入します。x および y は Integer または Double、または組み合わせである必要があります。x および ynull とすることはできません。
|= x |= y OR 代入演算子 (右結合)。x が Boolean、かつ y が Boolean でいずれも false である場合、x は false のままとなります。そうでない場合、x には true の値が代入されます。x および ynull とすることはできません。
&= x &= y AND 代入演算子 (右結合)。x が Boolean、かつ y が Boolean でいずれも true である場合、x は true のままとなります。そうでない場合、x には false の値が代入されます。x および ynull とすることはできません。
<<= x <<= y ビット単位の左シフト代入演算子x の各ビットを y ビット分左にシフトします。上位の順位のビットが失われ、新しい右側のビットが 0 に設定されます。この値は x に再代入されます。
>>= x >>= y ビット単位の右シフト符号付き代入演算子。x の各ビットを y ビット分右にシフトします。下位の順位のビットが失われ、新しい左のビットが、y が正の値の場合は 0 に、y が負の値の場合は 1 に設定されます。この値は x に再代入されます。
>>>= x >>>= y ビット単位の右シフト符号なし代入演算子x の各ビットを y ビット分右にシフトします。下位の順位のビットが失われ、y のすべての値で、新しい左側のビットが 0 に設定されます。この値は x に再代入されます。
? : x ? y : z 3 項演算子 (右結合)。この演算子は、if-then-else ステートメントの短縮として機能します。x が Boolean で true の場合、y が結果となります。そうでない場合、z が結果となります。xnull とすることはできません。
&& x && y AND 論理演算子 (左結合)。x が Boolean、かつ y が Boolean でいずれも true である場合、式の評価は true になります。そうでない場合、式の評価は false になります。
注意:
  • &&|| より優先されます。
  • この演算子は「短絡」的に動作します。つまり、y は、x が true の場合にのみ評価されます。
  • x および ynull とすることはできません。
|| x || y OR 論理演算子 (左結合)。x が Boolean、かつ y が Boolean でいずれも false である場合、式の評価は false になります。そうでない場合、式の評価は true になります。
注意:
  • &&|| より優先されます。
  • この演算子は「短絡」的に動作します。つまり、y は、x が false の場合にのみ評価されます。
  • x および ynull とすることはできません。
== x == y 等価演算子x の値が y の値に等しい場合、式の評価は true になります。そうでない場合、式の評価は false になります。
注意:
  • Java とは異なり、Apex の == はユーザ定義の型を除き、参照が同等であるかではなく、オブジェクト値が同等であるかを比較します。したがって、次のようになります。
    • == を使用した文字列の比較では、大文字と小文字を区別しない
    • == を使用した ID の比較では大文字と小文字を区別し、15 文字形式と 18 文字形式を区別しない
    • ユーザ定義の型は参照によって比較されます。つまり、2 つのオブジェクトはメモリ内の同じ場所を参照する場合にのみ同等とみなされます。equals メソッドと hashCode メソッドをクラスに指定してオブジェクト値が比較されるようにすることで、このデフォルトの比較動作を上書きできます。
  • sObjects および sObject 配列に対し、== は結果を返す前にすべての sObject 項目の詳細なチェックを実行します。コレクションと組み込み Apex オブジェクトに対しても同様に実行します。
  • レコードに対し、各項目には、true と評価する == の値が含まれている必要があります。
  • x または y をリテラルの null とすることができます。
  • 2 つの値の比較によって null となることはありません。
  • SOQL および SOSL では、等価演算子に == ではなく、= を使用します。Apex と SOQL および SOSL は強くリンクしていますが、多くの現代語では代入に = を、等式に == を使用するため、構文の不一致が発生します。Apex のデザイナーは、開発者に新しい代入演算子を学ばせるよりも、このパラダイムを維持することが重要であると考えます。したがって、Apex 開発者は主要な Apex コードの本文で == を等式テストに、= を SOQL クエリおよび SOSL クエリの等式に使用する必要があります。
=== x === y 厳密な等価演算子x および y がメモリ内のまったく同じ場所を参照する場合、式の評価は true になります。そうでない場合、式の評価は false になります。
< x < y 小なり演算子xy より小さい場合、式の評価は true になります。そうでない場合、式の評価は false になります。
注意:
  • 他のデータベースストアドプロシージャと異なり、Apex ではトライステート Boolean 論理はサポートされず、2 つの値の比較によって null となることはありません。
  • x または ynull で Integer、Double、Date、または Datetime となる場合、式は false となります。
  • null 以外の String または ID 値は常に null 値より大きくなります。
  • x および y が ID の場合、それらは同じデータ型のオブジェクトを参照する必要があります。そうでない場合、ランタイムエラーが発生します。
  • x または y のいずれかが ID でもう一方の値が String の場合、String 値は ID として検証され、処理されます。
  • x および y を Boolean とすることはできません。
  • 2 つの文字列の比較は、コンテキストユーザのロケールにしたがって実行され、大文字と小文字を区別しません。
> x > y 大なり演算子xy より大きい場合、式の評価は true になります。そうでない場合、式の評価は false になります。
注意:
  • 2 つの値の比較によって null となることはありません。
  • x または ynull で Integer、Double、Date、または Datetime となる場合、式は false となります。
  • null 以外の String または ID 値は常に null 値より大きくなります。
  • x および y が ID の場合、それらは同じデータ型のオブジェクトを参照する必要があります。そうでない場合、ランタイムエラーが発生します。
  • x または y のいずれかが ID でもう一方の値が String の場合、String 値は ID として検証され、処理されます。
  • x および y を Boolean とすることはできません。
  • 2 つの文字列の比較は、コンテキストユーザのロケールにしたがって実行され、大文字と小文字を区別しません。
<= x <= y <= 演算子xy より小さいか等しい場合、式の評価は true になります。そうでない場合、式の評価は false になります。
注意:
  • 2 つの値の比較によって null となることはありません。
  • x または ynull で Integer、Double、Date、または Datetime となる場合、式は false となります。
  • null 以外の String または ID 値は常に null 値より大きくなります。
  • x および y が ID の場合、それらは同じデータ型のオブジェクトを参照する必要があります。そうでない場合、ランタイムエラーが発生します。
  • x または y のいずれかが ID でもう一方の値が String の場合、String 値は ID として検証され、処理されます。
  • x および y を Boolean とすることはできません。
  • 2 つの文字列の比較は、コンテキストユーザのロケールにしたがって実行され、大文字と小文字を区別しません。
>= x >= y >= 演算子xy より大きいか等しい場合、式の評価は true になります。そうでない場合、式の評価は false になります。
注意:
  • 2 つの値の比較によって null となることはありません。
  • x または ynull で Integer、Double、Date、または Datetime となる場合、式は false となります。
  • null 以外の String または ID 値は常に null 値より大きくなります。
  • x および y が ID の場合、それらは同じデータ型のオブジェクトを参照する必要があります。そうでない場合、ランタイムエラーが発生します。
  • x または y のいずれかが ID でもう一方の値が String の場合、String 値は ID として検証され、処理されます。
  • x および y を Boolean とすることはできません。
  • 2 つの文字列の比較は、コンテキストユーザのロケールにしたがって実行され、大文字と小文字を区別しません。
!= x != y 不等価演算子x の値が y の値と等しくない場合、式の評価は true になります。そうでない場合、式の評価は false になります。
注意:
  • != を使用した文字列の比較では、大文字と小文字を区別しない
  • Java とは異なり、Apex の != はユーザ定義の型を除き、参照が同等であるかではなく、オブジェクト値が同等であるかを比較します。
  • sObjects および sObject 配列に対し、!= は結果を返す前にすべての sObject 項目の詳細なチェックを実行します。
  • レコードに関して、項目のさまざまな値がレコードに存在する場合、!= は true に評価します。
  • ユーザ定義の型は参照によって比較されます。つまり、2 つのオブジェクトはメモリ内の異なる場所を参照する場合にのみ異なるとみなされます。equals メソッドと hashCode メソッドをクラスに指定してオブジェクト値が比較されるようにすることで、このデフォルトの比較動作を上書きできます。
  • x または y をリテラルの null とすることができます。
  • 2 つの値の比較によって null となることはありません。
!== x !== y 厳密な不等価演算子x および y がメモリ内のまったく同じ場所を参照しない場合、式の評価は true になります。そうでない場合、式の評価は false になります。
+ x + y 加算演算子。次のルールに従って、x の値を y の値に加算します。
  • x および y が Integer または Double の場合、x の値を y の値に加算します。Double が使用される場合、結果は Double となります。
  • x が Date で y が Integer の場合、指定した日数を増分した新しい Date を返します。
  • x が Datetime で y が Integer または Double の場合、指定した日数を増分した新しい Date を返します。小数点以下の値は 1 日未満の部分に相当します。
  • x が String で y が String またはその他のデータ型の null 以外の引数である場合、yx の末尾に連結します。
- x - y 減算演算子。次のルールに従って、x の値から y の値を減算します。
  • x および y が Integer または Double の場合、y の値を x の値から減算します。Double が使用される場合、結果は Double となります。
  • x が Date で y が Integer の場合、指定した日数を減分した新しい Date を返します。
  • x が Datetime で y が Integer または Double の場合、指定した日数を減分した新しい Date を返します。小数点以下の値は 1 日未満の部分に相当します。
* x * y 乗算演算子。Integer または Double の x と、Integer または Double の y を乗算します。Double が使用されると、結果は Double になります。
/ x / y 除算演算子。Integer または Double の x を、Integer または Double の y で除算します。Double が使用されると、結果は Double になります。
! !x 論理補数演算子。Boolean の値を反転し、true は false に、false を true にします。
- -x 単項否定演算子。Integer または Double の x を -1 で乗算します。正の等価 + も構文的に有効ですが、数学的効果はありません。
++ x++

++x

インクリメント演算子。1 を数値型の変数 x の値に加算します。プレフィックスとして付けた場合 (++x)、式の評価は増分後の x の値になります。ポストフィックスとして付けた場合 (x++)、式の評価は増分前の x の値になります。
-- x--

--x

デクリメント演算子。1 を数値型の変数 x の値から減算します。プレフィックスとして付けた場合 (--x)、式の評価は減分後の x の値になります。ポストフィックスとして付けた場合 (x--)、式の評価は減分前の x の値になります。
& x & y ビット単位の AND 演算子x の各ビットと y の対応するビットを AND 演算します。両方のビットが 1 に設定されると結果ビットは 1 に設定されます。この演算子は Long または Integer には適用されません。
| x | y ビット単位の OR 演算子x の各ビットと y の対応するビットを OR 演算します。少なくとも 1 つのビットが 1 に設定されると結果ビットは 1 に設定されます。この演算子は Long または Integer には適用されません。
^ x ^ y ビット単位の排他的 OR 演算子x の各ビットと y の対応するビットを排他的 OR 演算します。1 つのみのビットが 1 に設定され、他のビットが 0 に設定されると、結果ビットは 1 に設定されます。
^= x ^= y ビット単位の排他的 OR 演算子x の各ビットと y の対応するビットを排他的 OR 演算します。1 つのみのビットが 1 に設定され、他のビットが 0 に設定されると、結果ビットは 1 に設定されます。排他的 OR 演算の結果を x に割り当てます。
<< x << y ビット単位の左シフト演算子x の各ビットを y ビット分左にシフトします。上位の順位のビットが失われ、新しい右側のビットが 0 に設定されます。
>> x >> y ビット単位の右シフト符号付き演算子x の各ビットを y ビット分右にシフトします。下位の順位のビットが失われ、新しい左のビットが、y が正の値の場合は 0 に、y が負の値の場合は 1 に設定されます。
>>> x >>> y ビット単位の右シフト符号なし演算子x の各ビットを y ビット分右にシフトします。下位の順位のビットが失われ、y のすべての値で、新しい左側のビットが 0 に設定されます。
() (x) 小括弧。式 x の優先順位を評価します。複合式で第一優先として評価します。