我写了一个小程序,想从键盘输入字符并打印出来,String s;
用while(s!=null)时无论输入空格后回车还是不输入任何东西而直接回车程序都不会结束;
而用while(!s.equls("")时,输入空格后回车程序不会结束,但不输入而直接回车时程序就会结束.1.请帮我详细分析一下这个现象的原因。
2.请结合我的程序分析一下(1)null与"",
(2)为什么很多例子中都用!s.equals("")而不用s!=null;在这种情况下用!s=null行不行呢?
用while(s!=null)时无论输入空格后回车还是不输入任何东西而直接回车程序都不会结束;
而用while(!s.equls("")时,输入空格后回车程序不会结束,但不输入而直接回车时程序就会结束.1.请帮我详细分析一下这个现象的原因。
2.请结合我的程序分析一下(1)null与"",
(2)为什么很多例子中都用!s.equals("")而不用s!=null;在这种情况下用!s=null行不行呢?
解决方案 »
- 各位大哥大姐叔叔阿姨都来说说啊
- 代码没错,编译没错,最后还是错了,特悬赏50分
- 请各位大虾帮帮忙看问题出在哪?
- 大家帮忙呢,编个程序,打印输出“I love you”,用图形符号“*”组合拼出?
- 读Azureus的源代码的问题??谢谢
- 请高手指点:关于把绘出的组件以图片的方式再现的问题。万分感激!
- java怎样通过对话框选择一个目录(不是选择文件)?
- 发现一个特别快的,附件特别大的免费邮箱。大家快抢啊。
- 问一下jcreator运行带参数的问题
- 不是说hashset对元素的存储是无序的吗?那为什么输出是有序的?
- 如何将从数据库获得的数据以world形式放在jsp页面上,还可以对其进行编辑,和保存,并保存为world文档
- 再细一点的执行顺序问题!求解,谢谢
""是空字符,是一个对象
""是空字符,是一个对象通常是两个写一起判断的 (null != s)&&(!"".equals(s))
"".equals(s)写可以避免s为空的时候,空指针异常。
空格 和 字符串 都属于String对象,那肯定是放在堆中的。
""是空字符,是一个对象,是指向为空字符串的对象。通常是两个写一起判断的 (null != s)&&(!"".equals(s))
"".equals(s)写可以避免s为空的时候,空指针异常。
""是空字符,是一个对象通常是两个写一起判断的 (null != s)&&(!"".equals(s))
"".equals(s)写可以避免s为空的时候,空指针异常。
“”:表示的是空字符,对象是存在的
null:表示空对象,对象不存在
这两种情况s都有值,并且都是string类型。
2、而用while(!s.equls("") 时,输入空格后回车程序不会结束,但不输入而直接回车时程序就会结束.
只要终端正常返回了,s里面就有东西,所以第一个问题很显然
输入了空格后返回的是" ",而不输入时为"",这是有区别的,因此2问题也很显然
String str = null;
String str_1 = "";
String str_2 = " ";
System.out.println("str==null?:"+(str == null));
System.out.println("str==\"\"?:"+(str == ""));
System.out.println("str==\" \"?"+(str == " "));
System.out.println("\n");
System.out.println("str_1==null?:"+(str_1 == null));
System.out.println("str_1==\"\"?:"+(str_1 == ""));
System.out.println("str_1==\" \"?:"+(str_1 == " "));
System.out.println("\n");
System.out.println("str_2==null?:"+(str_2 == null));
System.out.println("str_2==\"\"?:"+(str_2 == ""));
System.out.println("str_2==\" \"?:"+(str_2 == " "));看看这个也许对你有帮助
null是没有地址
""是有地址但是里面的内容是空的
" "有地址里面的内容不是空的只是里面的内容是空串
就比如说你输入多个空格加上回车s的value:[ , , , , , ]
只是输入回车s的value:[]这个就是区别 你自己debug看一下