Topic: 问:关于初始值的问题 !?!

  Print this page

1.问:关于初始值的问题 !?! Copy to clipboard
Posted by: terry39
Posted on: 2003-04-22 16:59

是 public String s=null; 好
还是 public String s=""; 好呢?

若是 public String s=null 好的话:
因为 在程序运行的时候 可能会使得 s="";
那么在判断的时候 用 if(s.equals("") || s.equals("")) {...} 会出错!?~
怎么办?

(我看的比较多 的 都是 null 的)

此不明白之处 请多多指教~ Smile

2.Re:问:关于初始值的问题 !?! [Re: terry39] Copy to clipboard
Posted by: jiangns3000
Posted on: 2003-04-22 19:21

当s!=null时,s.equals()才有意义。许多方法都返回null而不是“”。

3.Re:问:关于初始值的问题 !?! [Re: terry39] Copy to clipboard
Posted by: floater
Posted on: 2003-04-22 23:26

use this:

if ((s == null) && (s.equals(""))

4.Re:问:关于初始值的问题 !?! [Re: terry39] Copy to clipboard
Posted by: jiangns3000
Posted on: 2003-04-23 08:28

不对。当s==null时,s.equals("")有异常。

5.Re:问:关于初始值的问题 !?! [Re: terry39] Copy to clipboard
Posted by: jiangns3000
Posted on: 2003-04-23 08:32

应为||而不是&&。

6.Re:问:关于初始值的问题 !?! [Re: terry39] Copy to clipboard
Posted by: terry39
Posted on: 2003-04-23 18:01

也就是说 跟C一样
用 || 的时候 若前面的已经 true了 后面的就不判断了 是这样么?

&& 等 依此类推咯?

但还是没有说清楚 在 null 和 "" 两个中 用什么好啊?

7.Re:问:关于初始值的问题 !?! [Re: terry39] Copy to clipboard
Posted by: jiangns3000
Posted on: 2003-04-23 18:52

不是谁好谁不好的问题,而是这个代码将这两种情况全包含进去了。
不过我的建议是用null。因为有不少方法,当流结束无串可读时返回null。而返回""不表示什么。仅表示读了一个空串。如:一系列串中包含的一个或多个空行给读出来了,但数据没有读结束。

8.Re:问:关于初始值的问题 !?! [Re: jiangns3000] Copy to clipboard
Posted by: floater
Posted on: 2003-04-23 23:54

jiangns3000 wrote:
应为||而不是&&。

Hehe, good catch! Should be ||.

9.Re:问:关于初始值的问题 !?! [Re: terry39] Copy to clipboard
Posted by: floater
Posted on: 2003-04-23 23:55

terry39 wrote:
也就是说 跟C一样
用 || 的时候 若前面的已经 true了 后面的就不判断了 是这样么?

Yep.

10.Re:问:关于初始值的问题 !?! [Re: jiangns3000] Copy to clipboard
Posted by: floater
Posted on: 2003-04-24 00:18

jiangns3000 wrote:
不是谁好谁不好的问题,而是这个代码将这两种情况全包含进去了。
不过我的建议是用null。因为有不少方法,当流结束无串可读时返回null。而返回""不表示什么。仅表示读了一个空串。如:一系列串中包含的一个或多个空行给读出来了,但数据没有读结束。

I suggest to use "", to be on the safe side.

If we forget to check "", it's fine, won't bomb out.
If we forget to check null, you know ...

11.Re:问:关于初始值的问题 !?! [Re: floater] Copy to clipboard
Posted by: scottlai
Posted on: 2003-04-24 07:39

according to java.lang.String.java, using s.length()==0 instead of s.equals("") will be better!

public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}

12.Re:问:关于初始值的问题 !?! [Re: floater] Copy to clipboard
Posted by: zyfno1
Posted on: 2003-04-28 13:13

floater wrote:
use this:

if ((s == null) && (s.equals(""))

如果想节约内存资源情况s=null,但是在判断s时需用:if ((s == null) && (s.equals(""));

13.Re:问:关于初始值的问题 !?! [Re: terry39] Copy to clipboard
Posted by: jaderiver
Posted on: 2003-06-06 09:42

null是空,就是什么都没有.
""是不含字符的字串.


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923