ある状況において、以下の演算子を使用するELコードを書く:算術演算子、比較演算子、論理演算子
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JSPIntro7.html#wp71019
算術演算子
加算演算子(+)
式 | 値 | 備考 |
---|---|---|
${1 + 2} | 3 | |
${1.0 + 2} | 3.0 | |
${"1.0" + 2} | 3.0 | 文字列 + 数値 → 演算される |
${"1.0" + "2"} | 3.0 | 文字列 + 文字列 → 演算される |
${"1 + 2"} | 1 + 2 | 演算子が文字列に含まれると単なる文字列 |
${a + b} | 0 | |
${"a" + "b"} | javax.servlet.jsp.el.ELException が発生 | String "a" を "java.lang.Long" 型に変換しようとした際に例外が発生しました |
減算演算子(-)
式 | 値 | 備考 |
---|---|---|
${2 - 1} | 1 | |
${2.0 - 1} | 1.0 |
乗算演算子(*)
式 | 値 | 備考 |
---|---|---|
${3 * 5} | 15 | |
${0.12 * 0.34} | 0.0408 | |
${1e6 * 1} | 1000000.0 |
除算演算子(/ or div)
式 | 値 | 備考 |
---|---|---|
${1 / 3} | 0.3333333333333333 | 整数÷整数でも実数になる(int型どうしの演算なら 0 となる) |
${15 div 3} | 5.0 | 整数÷整数でも実数になる |
${1 div 0} | Infinity | Exceptionは発生しない |
モジュロ演算子(% or mod)
式 | 値 | 備考 |
---|---|---|
${10 % 3} | 1 | |
${10 mod 7} | 7 |
比較演算子
等号(== or eq)
式 | 値 | 備考 |
---|---|---|
${2.0 == 2} | true | |
${"2.0" == "2"} | false | 文字列の比較になる? |
${"2.0" == 2.0} | true | |
<%= "abc" == (String)pageContext.getAttribute("abc") %> | false | new String("abc") をpageContextにセットし比較 → インスタンスが異なるため、falseとなる |
${"abc" == pageScope.abc} | true | 文字列の内容比較となる |
不等号(!= or ne)
式 | 値 | 備考 |
---|---|---|
${pageScope.abc != "def"} | true | |
${pageScope.abc ne "abc"} | false | |
${1.00 ne 1e2} | false |
小なり(< or lt)
式 | 値 | 備考 |
---|---|---|
${"abc" < "def"} | true | |
${999 < 123} | false |
大なり(> or gt)
式 | 値 | 備考 |
---|---|---|
${"abc" > "def"} | false | |
${999 > 123} | true |
小なりイコール(<= or le)
式 | 値 | 備考 |
---|---|---|
${1 / 3 <= 0.3} | false | |
${1 / 2 <= 0.5} | true |
小なりイコール(<= or le)
式 | 値 | 備考 |
---|---|---|
${1 / 3 >= 0.3} | true | |
${1 / 2 >= 0.5} | true |
論理演算子
論理積(&& or and)
式 | 値 | 備考 |
---|---|---|
${true && true} | true | |
${"true" and "false"} | false | 引用符で囲まれていてもOK |
${pageScope.isXXX and true} | true | コンテナに格納されたjava.lang.Boolean 型 |
${a and b} | false | 宣言していない変数を使用 |
${1 and 0} | 例外 | java.lang.Long 型の値を Boolean 型に変換しようとしています |
${true & false} | 例外 | ${true & false} は無効な式を含んでいます |
論理和(|| or or)
式 | 値 | 備考 |
---|---|---|
${true || false} | true | |
${pageScope.isXXX or "false"} | true |
否定(! or not)
式 | 値 | 備考 |
---|---|---|
${!true} | false | |
${!"true"} | false | 引用符に囲まれていてもOK |
${"!true"} | !true | 演算子が引用符に囲まれていれば文字列 |
${not pageScope.isXXX} | false |
- 三項演算子
三項演算子
式 | 値 | 備考 |
---|---|---|
${true && true} | 1 | |
${(10 > 100)?"Yes.":"No."} | No. |
SCWCD Exam Study Kit: Java Web Component Developer Certification (ペーパーバック)
指定されたパートは存在しません。
YAGI Hiroto (piroto@a-net.email.ne.jp)
twitter http://twitter.com/pppiroto
Copyright© 矢木 浩人 All Rights Reserved.