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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈嘉宾 中级黑马   /  2012-6-17 12:59  /  1804 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈嘉宾 于 2012-6-17 13:59 编辑

上代码System.out.println(WeekDay.valueOf("SUN").toString());这个地方直接用toString方法不行吗?为什么要用ValueOf?这个俩个方法有什么区别,都在什么时候用呢?

public static void main(String[] args) {
                // TODO Auto-generated method stub
                WeekDay1 weekDay= WeekDay1.MON;
                System.out.println(weekDay.nextDay());
               
                WeekDay weekDay2=WeekDay.FIR;
                System.out.println(weekDay2);
                System.out.println(weekDay2.name());
                System.out.println(weekDay2.ordinal());
                System.out.println(WeekDay.valueOf("SUN").toString());

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

8 个回复

倒序浏览
WeekDay 一定是你自己定义的类
我们来分析下下面这个方法
WeekDay.valueOf("SUN").toString()
首先执行 WeekDay.valueOf("SUN")这个方法,这个方法一定是返回一个String类的对象
然后用 String.toString() 方法 返回表示这个String对象的本身(字符串)
我想你可以不写 toString() 方法,可以直接这样
System.out.println(WeekDay.valueOf("SUN"));
不信你可以试试
因为 System.out.println(String) 的时候 会默认调用 String类的 toString() 方法的

点评

调用valueOf返回的是WeekDay的枚举对象,不是Striing  发表于 2012-6-17 13:48

评分

参与人数 1黑马币 +10 收起 理由
黄奕豪 + 10 赞一个!

查看全部评分

回复 使用道具 举报
李元峰 发表于 2012-6-17 13:10
WeekDay 一定是你自己定义的类
我们来分析下下面这个方法
WeekDay.valueOf("SUN").toString()

还是不太理解什么时候该valueOf。。。
回复 使用道具 举报
陈嘉宾 发表于 2012-6-17 13:20
还是不太理解什么时候该valueOf。。。

[size=-1]static String
valueOf(boolean b)
          返回 boolean 参数的字符串表示形式。
[size=-1]static String
valueOf(char c)
          返回 char 参数的字符串表示形式。
[size=-1]static String
[url=../../java/lang/String.html#valueOf%28char[]%29]valueOf[/url](char[] data)
          返回 char 数组参数的字符串表示形式。
[size=-1]static String
[url=../../java/lang/String.html#valueOf%28char[],%20int,%20int%29]valueOf[/url](char[] data, int offset, int count)
          返回 char 数组参数的特定子数组的字符串表示形式。
[size=-1]static String
valueOf(double d)
          返回 double 参数的字符串表示形式。
[size=-1]static String
valueOf(float f)
          返回 float 参数的字符串表示形式。
[size=-1]static String
valueOf(int i)
          返回 int 参数的字符串表示形式。
[size=-1]static String
valueOf(long l)
          返回 long 参数的字符串表示形式。
[size=-1]static String
valueOf(Object obj)
          返回 Object 参数的字符串表示形

这是 String 类 把其他基本类型 转换成 String 类的方法 你需要的时候可以这么用,你到API里去看看
同样的 Integer 也有这样的方法 就是 把其他的数据类型 转换成 Integer 对象:
[size=-1]static Integer
valueOf(int i)
          返回一个表示指定的 int 值的 Integer 实例。
[size=-1]static Integer
valueOf(String s)
          返回保存指定的 String 的值的 Integer 对象。


回复 使用道具 举报
李元峰 发表于 2012-6-17 13:36
这是 String 类 把其他基本类型 转换成 String 类的方法 你需要的时候可以这么用,你到API里去看看
同样 ...

类推的 话 其他的 Float Double Long还有 Chracter 都有类似的方法 你可以到APi 里去参考 只有知道怎么用这些方法后 你才知道什么时候该用
回复 使用道具 举报
恩好谢谢我去看看
回复 使用道具 举报
valuesOf就是在你知道枚举对象的名字~~注意是名字,而不是枚举对象的时候,你可以同过这个名字来获取这个枚举对象~~~就像人家根据你的名字来叫你的人一样,这个由名字叫来人的方法就叫valueOf
回复 使用道具 举报
陈嘉宾 发表于 2012-6-17 13:20
还是不太理解什么时候该valueOf。。。

你做项目,关闭时保存一些数据,可能就有枚举类型,在运行是需要读取,如上次关闭时的日期,
WeekDay weekDay=WeekDay.valueOf(从硬盘读取的数据转为字符串类型);
然后再使用
回复 使用道具 举报
黄奕豪 发表于 2012-6-17 13:46
valuesOf就是在你知道枚举对象的名字~~注意是名字,而不是枚举对象的时候,你可以同过这个名字来获取这个枚 ...

valueOf
public static <T extends Enum<T>> T valueOf(Class<T> enumType,
                                            String name)返回带指定名称的指定枚举类型的枚举常量。名称必须与在此类型中声明枚举常量所用的标识符完全匹配。(不允许使用额外的空白字符。)
恩谢谢我查到了枚举的valueOf的意思了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马