【问题标题】:String equality comparison failure in JavaJava中的字符串相等比较失败
【发布时间】:2013-01-27 05:42:12
【问题描述】:

我从对象列表中的对象中获取一个字符串值。

transitionName = transitionList.get(m).getTransitionName().toString();

以及来自 EJB 查询检索到的对象的另一个字符串值。

changeItem = changeItemFacade.getChangeItem(changeGroupList.get(1));
char tempNewString[] = changeItem.getNewstring();
newString=new String(tempNewString);

现在这个 Char[] 与 String 的比较是因为包含 changeItem 的 Oracle 表已将列 NewString 定义为 CLOB。 并且 ejb 实体将变量“NewString”的类型定义为 Char[] 数组。 所以我必须在进行比较之前将其转换为字符串。

问题是这个 if 语句总是返回 false 并且没有被执行。

if(transitionName.equalsIgnoreCase(newString)){}

当我尝试记录值 (Logger.Debug) 时,它完美地显示了服务器实例日志中的两个(相等的)字符串值。

我转换 char[] 数组的方式有问题吗?

我尝试将实体类变量的类型更改为 String(当然还有 getter 和 setter 方法),但也不起作用。

【问题讨论】:

  • 根据stackoverflow.com/questions/7655127/…,您正在以正确的方式进行转换。
  • 在比较之前对字符串尝试trim()。另外,寻找字符编码差异。
  • 谢谢 Singularity (Y) trim() 方法有效! :)

标签: java string jpa oracle11g ejb


【解决方案1】:

在比较之前尝试对字符串进行 trim()。另外,寻找字符编码差异。 – 奇点

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2019-03-02
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多