mysql varchar不使用java字符串进行计算
我的情况是: 我试图从MySQL数据库中获取一个值。此数据定义为VARCHAR。 这是用java编写的语句和结果集完成的mysql varchar不使用java字符串进行计算,java,mysql,string,Java,Mysql,String,我的情况是: 我试图从MySQL数据库中获取一个值。此数据定义为VARCHAR。 这是用java编写的语句和结果集完成的 String add1 =rs.getString("include"); 根据网站表5.1所示,“始终可以转换为这些Java类型” 因此,VARCHAR应该能够转换为java.lang.string。 当我检查java中的数据类型时,它确实给出了java.lang.string。就这么好 我的问题是,当我试图将这个获得的“字符串”值与java中定义的字符串值进行比较时,它
String add1 =rs.getString("include");
根据网站表5.1所示,“始终可以转换为这些Java类型”
因此,VARCHAR应该能够转换为java.lang.string。
当我检查java中的数据类型时,它确实给出了java.lang.string。就这么好
我的问题是,当我试图将这个获得的“字符串”值与java中定义的字符串值进行比较时,它们似乎并不相等
让我们举一个简单的例子。
我从数据库中获取(VARCHAR)值“1”,并将其存储在字符串add1中
我想检查这个值是否确实是“1”,因此我使用以下语句
if(add1=="1")
{
/* do something */
}
根据java,只有值是不同的。所以我很好奇为什么会这样
我开始寻找为什么这两个“字符串”不相等
首先,我检查了两个字符串的长度。两者的长度都达到了预期的1
之后,我检查了两者的值。为了查看两个值是否确实相同,我想检查它们的十六进制表示形式。
两者的值均为0x31。正如所料
但是为什么我的if语句不被java接受呢?如果它们都表示同一个字符串hex-bin,您可以将其命名为value
简而言之:为什么从java中的MySQL数据库获取的VARCHAR“字符串”与java中定义的字符串不同。比较值,而不是内存引用:
if(add1.equals("1"))
{
/* do something */
}
请参阅文章最佳答案。比较值,而不是内存引用:
if(add1.equals("1"))
{
/* do something */
}
请参阅文章的最佳答案。您需要将字符串与
.equals()
方法进行比较。因为==
检查对象引用
您需要将字符串与
.equals()
方法进行比较。因为==
检查对象引用
您必须始终将字符串与.equals方法进行比较,在您的情况下,它将是
add1.equals("1")
“==”或相等运算符在Java中是一种二进制运算符。它适用于比较基本体,如布尔、int、float“==”工作正常,但在比较对象时,它会与Java中的equals方法产生混淆。“==”根据内存引用比较两个对象。所以“==”操作符只有在它所比较的两个对象引用表示完全相同的对象时才会返回true,否则“==”将返回false
字符串比较是同时使用==和equals方法的常见场景。由于java.lang.String类重写equals方法,所以若两个String对象包含相同的内容,它将返回true,但若两个引用指向同一对象,则==将仅返回true
阅读更多内容:您必须始终将字符串与.equals方法进行比较,在您的情况下,它将是
add1.equals("1")
“==”或相等运算符在Java中是一种二进制运算符。它适用于比较基本体,如布尔、int、float“==”工作正常,但在比较对象时,它会与Java中的equals方法产生混淆。“==”根据内存引用比较两个对象。所以“==”操作符只有在它所比较的两个对象引用表示完全相同的对象时才会返回true,否则“==”将返回false
字符串比较是同时使用==和equals方法的常见场景。由于java.lang.String类重写equals方法,所以若两个String对象包含相同的内容,它将返回true,但若两个引用指向同一对象,则==将仅返回true
阅读更多信息:问题在于如何比较字符串。请参见使用
add1.equals(“1”)
这个问题经常被问到……问题是如何比较字符串。请参阅使用add1.equals(“1”)
这个问题经常被问到…所以投票以重复方式关闭?投票以重复方式关闭?即使您提供了链接,也不需要复制粘贴..:p感谢此解释。我的想法完全错了。即使你已经给出了链接,也不需要复制粘贴。谢谢你的解释。我的想法完全错了。