こんにちは、にいるです。
今日はApexのプリミティブ型の変数の初期値や値表示について、見ていきたいと思います。
・【ヘルプ】プリミティブデータ型
・【ヘルプ】データ型および変数
1.プリミティブ型とは
Apexのデータ型には、プリミティブ型とsObject型の2つがあります。
プリミティブ型には12点あり、それぞれ下記のような値を格納します。
データ型名 | 説明 |
Blob | 単一のオブジェクトとして保存されるバイナリデータのコレクション |
Boolean | true、false、nullのみを割り当て可能 |
Date | 特定の日 |
Datetime | 特定の日と時刻 |
Decimal | 小数点を含む数値 |
Double | 小数点を含む64ビットの数値 |
Id | 有効な18文字のレコードの識別子 |
Integer | 小数点を含まない32ビットの数値 |
Long | 小数点を含まない64ビットの数値 |
Object | Apexがサポートする任意のデータ型 |
String | 単一引用符で囲まれた文字 |
Time | 特定の時刻 |
2.各データ型の初期値
それぞれのデータ型の宣言時の初期値を見ていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
Blob blo; System.debug('●blo● = ' + blo); Boolean bln; System.debug('●bln● = ' + bln); Date dat; System.debug('●dat● = ' + dat); Datetime datime; System.debug('●datime● = ' + datime); Decimal dec; System.debug('●dec● = ' + dec); Double dou; System.debug('●dou● = ' + dou); ID ids; System.debug('●ids● = ' + ids); Integer inte; System.debug('●inte● = ' + inte); Long lon; System.debug('●lon● = ' + lon); Object obj; System.debug('●obj● = ' + obj); String str; System.debug('●str● = ' + str); Time tim; System.debug('●blo● = ' + tim); |
という感じですね。
これを匿名ブロックで実行してみます。
こんな感じで全て「null」になってますね。
Stringの宣言時に「=”;」を付けてみました。
中身は空なんですがこれは注意が必要です。
1 2 3 4 5 6 7 8 |
String str = ''; System.debug('●str● = ' + str); if(String.isBlank(str)){ System.debug('●isBlank判定● = null'); } if(str == null){ System.debug('●==判定● = null'); } |
isBlankしか通らず、nullと空(”)はそれぞれ値が違うようです。
ここはちゃんとコードを書く時に気をつけないといけないですね。
3.データ型の不一致
データ型が不一致の場合、代入できないことがあります
Stringに数字を入れることはできますが、Integerに文字を入れることはできません。
いくつか特定のデータ型に意図しない値を入れてみたいと思います。
3-1.Integer型に小数点以下の数字
1 |
Integer inte = 123.1; |
「Illegal assignment from Decimal to Integer」というメッセージ付きで怒られます。
3-2.Integer型に文字
1 |
Integer inte = 'Savepoint'; |
「Illegal assignment from String to Integer」というメッセージ付きで怒られます。
3-3.Boolean型に文字
1 |
Boolean bln = 'true'; |
「Illegal assignment from String to Boolean」というメッセージ付きで怒られます。
3-4.Date型に数字
1 |
Date dat = 03-20; |
「Illegal assignment from Integer to Date」というメッセージ付きで怒られます。
3-5.ID型に文字
「System.StringException: Invalid id: 123456789012345」というメッセージ付きで怒られます。
3-6.StringとIntegerの結合
1 2 3 4 5 6 7 |
Integer a = 1; Integer b = 2; String c = '3'; System.debug('●●a+b = ' + a+b); System.debug('●●a+c = ' + a+c); System.debug('●●a+b+c = ' + a+b+c); |
怒られはしないですが、数字と文字の場合は計算されませんので、要注意ですね。
4.まとめ
いかがでしたでしょうか。
Apexを使うなら、定数、変数を当然使用します。
不一致しないデータ型に、値の代入はできないですが、「3-6.StringとIntegerの結合」などのStringに数字を入れるなど中途半端にできてしまう場合、人間が考えてる期待値が返ってこない可能性があります。
思い込みは誤りの原因にもなるので、適切にデータ型を使用できるようにしておきたいですね。
ぜひ、みなさんも書いて試してみてください。
他にも色々と標準機能やSalesforce機能について紹介しています。
そのまとめ一覧ページはこちらになりますので、よければ見てみてください。
ではでは!