关于java的字符串基础问题!!

go0008 2008-07-21 09:36:58
1) String a = "123456789";
2) String x = null;
3) String r = x.valueOf(a);
4) String s = a.valueOf(a);
5) System.out.print(r+"\n");
6) System.out.print(s);

以上代码输出:
123456789
123456789

3)、4)行是什么意思?
为什么输出的结果是一样?

3)、4)行Eclipse提示“应该以静态方式访问类型 String 中的静态方法 valueOf(Object)”
怎么修改?
...全文
62 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
go0008 2008-07-21
  • 打赏
  • 举报
回复
有一点点了解了
susoft2008 2008-07-21
  • 打赏
  • 举报
回复
valueOf
public static String valueOf(Object obj)返回 Object 参数的字符串表示形式。

参数:
obj - 一个 Object。
返回:
如果参数为 null,则字符串等于 "null";否则,返回 obj.toString() 的值。
另请参见:
Object.toString()
StrutHibernate 2008-07-21
  • 打赏
  • 举报
回复
valueOf()是String类的一个static方法,去看一下API文档,上面应该都有说明。
静态方法的调用依靠的是类,而不是类的实例对象,即使用String类的实例对象x.valueOf(a)去调用,系统也会通过实例找到实例对象的类,再去调用静态方法String.valueOf(a)。


修改后的代码:
1) String a = new String("123456789");
2) String x = null;
3) String r = String.valueOf(a);
4) String s = String.valueOf(a);
5) System.out.print(r+"\n");
6) System.out.print(s);

所以你得到结果当然是一样的。

你还应该注意到String的实例对象是一个常量。
String str=new String("123456789");
变量str的长度是不可改变的。
你可能有疑问:str="我就要改变它的长度和值";//这样不就改了值也改了长度大小;
要注意的是: 这个语句其实是给str重新new String("我就要改变它的长度和值");也就是重新分配了一个存储空间,在新分配的空间赋值,原来地址的值并没有变。

有兴趣再去比较一下String类与StringBuffer类的区别。

如果还有兴趣再看一下:http://topic.csdn.net/u/20080713/17/BA211D6E-CB22-4274-AB80-DEA990783F22.html

zhuzy2004 2008-07-21
  • 打赏
  • 举报
回复
valueOf()是static方法
调用时应该String.valueOf()
x是String的实例所以也可以x.valueOf()
static不需要用实例调用,应该用String.valueOf()
xuhaiyang 2008-07-21
  • 打赏
  • 举报
回复

3)、4)行是什么意思?
为什么输出的结果是一样? //都相当于new String(a);所以结果一样

3)、4)行Eclipse提示“应该以静态方式访问类型 String 中的静态方法 valueOf(Object)”
怎么修改?//都换成String.valueOf(a);

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧