A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

String[] args 当传入的数值等于“abc"的时候,为什么还是不能符合条件
  1. class StringDemo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                
  6.                 for (int a =0;a<args.length;a++)
  7.                 {
  8.                        
  9.                         if (args[a] == "abc")
  10.                         {
  11.                                 System.out.println("args["+a+"]:"+"密码正确");
  12.                         }
  13.                         System.out.println("args["+a+"]="+args[a]);
  14.                        
  15.                 }
  16.                
  17.                
  18.         }
  19. }
复制代码
输出结果始终无法运行到“密码正确”一句。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

7 个回复

倒序浏览
先遍历一下 args[]  看看是不是真的传进来了,
回复 使用道具 举报
你的判断条件有问题,不应该是 “==”改为equals就可以了。这个就是String类的 == 与equals的区别了,不知道你视频看到哪里了,里面有的。
回复 使用道具 举报
刚开始学  主函数中String[] args   这个值是在哪里传来的,运行的时候不是应该在这个地方开始吗?
回复 使用道具 举报
这个很简单的,
解决办法
你把  if (args[a] == "abc")
换成
    if (args[a] .equals("abc"))
就ok了,
因为==比较的是两个对象是否相等,而equals比较的是内容。
回复 使用道具 举报
我去,我刚看出答案,刷新一下已经被解决了,无语中。。
原因跟楼上一样,是==和equals的问题,不过要改写成
if("abc".equals(args[a]))
否则发生空指针异常
回复 使用道具 举报
应该把if (args[a] == "abc")
改为if ("abc".equals(args[a] ))
由于==是比较地址
而string的equals被底层重写为是比较值是否相等了
所以这里改为equals就好了
而且最好把"abc"放在前面
因为如果把args[a] 放在前面
当没有参数的时候会出现空指针
当然对这道题是没有影响的 因为没有值进不了循环
但这是好的编程习惯{:soso_e179:}
回复 使用道具 举报
你那个判断条件错了,字符串的比较怎么能用==呢,应该写成if("abc".equals(args[a]))
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马