黑马程序员技术交流社区

标题: 枚举中的一点小疑问。 [打印本页]

作者: 陈嘉宾    时间: 2012-6-17 12:59
标题: 枚举中的一点小疑问。
本帖最后由 陈嘉宾 于 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());
作者: 李元峰    时间: 2012-6-17 13:10
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() 方法的
作者: 陈嘉宾    时间: 2012-6-17 13:20
李元峰 发表于 2012-6-17 13:10
WeekDay 一定是你自己定义的类
我们来分析下下面这个方法
WeekDay.valueOf("SUN").toString()

还是不太理解什么时候该valueOf。。。
作者: 李元峰    时间: 2012-6-17 13:36
陈嘉宾 发表于 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:38
李元峰 发表于 2012-6-17 13:36
这是 String 类 把其他基本类型 转换成 String 类的方法 你需要的时候可以这么用,你到API里去看看
同样 ...

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

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

valueOf
public static <T extends Enum<T>> T valueOf(Class<T> enumType,
                                            String name)返回带指定名称的指定枚举类型的枚举常量。名称必须与在此类型中声明枚举常量所用的标识符完全匹配。(不允许使用额外的空白字符。)
恩谢谢我查到了枚举的valueOf的意思了




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