为什么两个String不能比较?

来源:百度知道 编辑:UC知道 时间:2024/06/29 22:56:10
源代码:
public void actionPerformed(ActionEvent e)
{
if(yes==e.getSource())
{
String RL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=text";
String user ="texter";
String password = "pass";
String sqlStr1= "select admin from text_login";
String sqlStr2= "select password from text_login";
String inname="";
inname=t_username.getText();
char[] inp=t_password.getPassword();
String inpass=new String(inp);
String[] uname=new String[3];
String[] pawd=new String[3];
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection con = DriverManager.getConnection(RL,user,password);

Statement st = con.createStatement();

ResultSet rs1=

从库表中提取的字串长度是固定的,所以末尾会有一些空格,只要去掉从库中提取的字串末尾的空格就可以了,具体就不用我说了吧!

String比较用equals
uname.equals(inname)&&pawd[1].equals(inpass)

在Java中,“==”运算符是比较两个引用的地址是否相同,例如:
String s1 = "a";
String s2 = s1;
此时,s1和s2指向同一个内存地址,因此s1==s2返回true。

而对于:
String s1 = "a";
String s2 = "a";
此时s1和s2指向不同的内存地址,尽管这两个地址中存储的值都是“a”,但是s1==s2返回false。

如果要比较s1和s2各自指向地址中的值是否相同,String类重写了Object类的equals()方法,它可以进行这种比较,例如:
String s1 = "a";
String s2 = "a";
s1.equals(s2)返回true。

但是如果是从数据库中取出,应当首先判断是否为null,以避免空指针错误。