黑马程序员技术交流社区

标题: 主函数中String[] args 接收的数值判断不出来? [打印本页]

作者: 郭孟涛    时间: 2013-3-12 16:26
标题: 主函数中String[] args 接收的数值判断不出来?
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. }
复制代码
输出结果始终无法运行到“密码正确”一句。


作者: 丁一    时间: 2013-3-12 16:34
先遍历一下 args[]  看看是不是真的传进来了,
作者: 黑马吕世成    时间: 2013-3-12 16:35
你的判断条件有问题,不应该是 “==”改为equals就可以了。这个就是String类的 == 与equals的区别了,不知道你视频看到哪里了,里面有的。
作者: 丁一    时间: 2013-3-12 16:36
刚开始学  主函数中String[] args   这个值是在哪里传来的,运行的时候不是应该在这个地方开始吗?
作者: 马甲大王    时间: 2013-3-12 16:37
这个很简单的,
解决办法
你把  if (args[a] == "abc")
换成
    if (args[a] .equals("abc"))
就ok了,
因为==比较的是两个对象是否相等,而equals比较的是内容。
作者: 熊冠银    时间: 2013-3-12 16:43
我去,我刚看出答案,刷新一下已经被解决了,无语中。。
原因跟楼上一样,是==和equals的问题,不过要改写成
if("abc".equals(args[a]))
否则发生空指针异常
作者: HM李帅    时间: 2013-3-12 16:46
应该把if (args[a] == "abc")
改为if ("abc".equals(args[a] ))
由于==是比较地址
而string的equals被底层重写为是比较值是否相等了
所以这里改为equals就好了
而且最好把"abc"放在前面
因为如果把args[a] 放在前面
当没有参数的时候会出现空指针
当然对这道题是没有影响的 因为没有值进不了循环
但这是好的编程习惯{:soso_e179:}
作者: 冷叙辰    时间: 2013-3-12 17:48
你那个判断条件错了,字符串的比较怎么能用==呢,应该写成if("abc".equals(args[a]))




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2