Should I choose == or eq for comparing string in E

2019-02-01 09:26发布

== and eq give the same result using EL to do my string comparison tests:

    <c:if test="${person.sokande_i == 'endast_usa'}">Endast USA</c:if>
    <c:if test="${person.sokande_i == 'alla'}">Alla länder</c:if>
    <c:if test="${person.sokande_i == 'alla_utom_usa'}">Alla utom USA</c:if>

Should I use eq instead? Is == for integers only? But it works also for strings. AFAIK == test whether hashCodes are equal and eq means "meaningfully different".

Another question says == and eq do the same thing.

Is there no difference here? IS not the difference the one I'm stating: == looks at the hashCode and eq looks at the implementation of equals(...).

3条回答
Explosion°爆炸
2楼-- · 2019-02-01 09:31

Both are same. Both == and eq will result in the following code:

jspContext.findAttribute("person.sokande_i").equals("endast_usa")

for EL

${person.sokande_i == 'endast_usa'}
查看更多
贼婆χ
3楼-- · 2019-02-01 09:36

They're both the same. I use eq in EL as it is more readable like a sentence.

查看更多
够拽才男人
4楼-- · 2019-02-01 09:52

According to documentation, it's the same thing

In addition to the . and [] operators discussed in Value and Method Expressions, the EL provides the following operators, which can be used in rvalue expressions only:
[...]
Relational: ==, eq, !=, ne, <, lt, >, gt, <=, ge, >=, le. Comparisons can be made against other values or against Boolean, string, integer, or floating-point literals.

One difference though : string operators like eq, ne, lt, gt, ge, le exist as they are XML safe, they would not need to be escaped like <= for instance.

It's explained here

A useful feature of the EL is the ability to perform comparisons, either between numbers or objects. This feature is used primarily for the values of custom tag attributes, but can equally be used to write out the result of a comparison (true or false) to the JSP page. The EL provides the following comparison operators:

• == or eq
• != or ne
• < or lt
• > or gt
• <= or le
• >= or ge

The second version of each operator exists to avoid having to use entity references in JSP XML syntax; however, the behavior of the operators is the same.

查看更多
登录 后发表回答