原因写在前面:
字符串判断是否相等应该用 .equals 而不是 ==
.equals 比较的是字符串 内容 == 比较的是字符串对象的 内存地址

更新后的解释:
只怪原来学艺不精,如果认真学过 .equals == 的区别,这个问题就很很好理解,甚至就不会出现。

".equals"和"=="的区别

  • 作用于 基本数据 类型时,是比较两个 数值 是否相等;
  • 作用于 引用数据 类型时,是比较两个对象的 内存地址 是否相同,即判断它们是否为同一个对象;

.equals

  • 没有重写 时,默认以 == 来实现,即比较两个对象的内存 地址 是否相同;
  • 进行 重写 后,一般会按照对象的 内容 来进行比较。这里的重写是相对于Object类说的,java的所有类都继承了Object类。像本问题涉及到的String类,它就对equals()方法进行了重写,基本数据类型int的包装类Integer也重写了equals()方法,它们都是比较的对象的内容。

想对Object类有进一步了解,可以看 Java:Object

前面说了==比较的是内存地址,那java中关于字符串的地址有什么样的规则呢?
代码:

String s1 = "Runoob";              // String 直接创建
String s2 = "Runoob";              // String 直接创建
String s3 = s1;                    // 相同引用
String s4 = new String("Runoob");   // String 对象创建
String s5 = new String("Runoob");   // String 对象创建

String 创建的字符串存储在公共池中,而 new 创建的字符串对象在堆上。这段代码里,s1、s2、s3的地址是一样的,s4和s5的地址是不一样的,当然,与s1、s2、s3的地址也是不一样的。
在这里插入图片描述关于Java String类的详细解释可以看 Java:String

以下是原答案
错误来由:
同样的程序,数据原来是在代码里写好的,后来改成了从键盘读入,然后就奇了怪了,同样的数据,原来就排序,为什么后来就不能排序?通过调试我发现,
代码
在这一句判断完之后并没有执行花括号里的内容,但是我看这两个(字符串)变量明明相等啊
键盘输入时的调试结果
当我换回原来的代码又调试一次的时候我发现,这两个变量的id原来是相等的,键盘输入之后就不相等了
字符串的值写入代码后的调试结果
再然后就终于想起来字符串是用.equals判断的了呗。

采用 MyBatis 框架操作 MySQL 数据库时,判断传入的字符串 prmCreated 值为"N"时,执行相关操作,如下 xml 语句未生效: <if test="prmCreated == 'N'"> and prm_closed = 0 2、原因 MyBatis 是使用 OGNL 表达式来进行解析的,在 OGNL 表达式中,'N’会被解析成字符。 因为 java 是强类型的,char 和 String 不等,所以 if 标签中的 SQL 不会 特殊格式如下: if(oldStation.getProrgcode().equals(info.getProrgcode())){ System.out.println("雷猴啊!!"); 这种格式猛的一看没有什 一、SQL介绍二、SQL组成部分三、DQL1、基础查询2、条件查询3、排序查询4、常见函数5、分组查询6、连接查询7、子查询8、分页查询9、联合查询四、DML1、插入2、修改3、删除五、DDL1、库的管理2、表的管理3、数据类型4、常见约束六、TCL七、视图八、变量九、存储过程十、函数十一、流程控制结构1、分支结构2、循环结构 一、SQL介绍 结构化查询语言,用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有的主流数据库软件通用的语言 二、SQL组成部分 DDL,DML,DCL,DQL,TCL. 条件判断 在使用if()去判断一个数值的时,表达式求值后, js会自动将此值(这个值可以不是布尔值) 转换为布尔值。比如if(’’){console.log(‘1’)},因为空字符是false。所以不会执行后面,将条件中’'转换成布尔值。这可以需要注意哪些会转换成true,哪些转换成false。需要注意几点,===和= =和=的区别。全等符号在判断的时候类型和数值都相等... System.out.println("进入教师"); sql1 = "select * from jiaoshixinxi where jiaoshihao='"+username+"' and mima='"+password+"' "; userlist1=commDAO.select(sql1);