Java——valueOf()

目录

1. String 类中的 valueOf()

2. 包装类中的 valueOf()(如 Integer、Double 等)

3. 枚举(Enum)中的 valueOf()

4. 自定义类中的 valueOf()

5. 总结


        valueOf() 是 Java 中常见的方法,通常用于类型转换或对象创建。它的具体行为取决于调用的类,不同类中的 valueOf() 方法作用不同。以下是常见用法和场景:

1. String 类中的 valueOf()

  • 作用:将其他类型(如 int、boolean、Object 等)转换为字符串。
  • 示例:
int num = 123;
String str1 = String.valueOf(num);      // 将 int 转换为 "123"

boolean flag = true;
String str2 = String.valueOf(flag);     // 将 boolean 转换为 "true"

Object obj = null;
String str3 = String.valueOf(obj);      // 将 null 转换为 "null"(不会抛空指针异常)

2. 包装类中的 valueOf()(如 Integer、Double 等)

  • 作用:将基本类型或字符串转换为对应的包装类对象。
  • 示例:
// 将字符串转换为 Integer 对象
Integer integer = Integer.valueOf("100"); 

// 将 int 转换为 Integer 对象(自动装箱)
Integer num = Integer.valueOf(200); 

// 将字符串转换为 Double 对象
Double doubleValue = Double.valueOf("3.14"); 

注意事项:

  • 如果字符串无法解析(如 Integer.valueOf("abc")),会抛出 NumberFormatException。
  • 包装类的 valueOf() 会缓存常用值(例如 Integer.valueOf(127) 会返回缓存对象)。

3. 枚举(Enum)中的 valueOf()

  •  作用:根据字符串名称返回对应的枚举常量。
  • 示例:
enum Color { RED, GREEN, BLUE }

Color red = Color.valueOf("RED");  // 返回 Color.RED

注意事项:

  • 如果字符串不匹配枚举常量(如 Color.valueOf("YELLOW")),会抛IllegalArgumentException。

4. 自定义类中的 valueOf()

  • 开发者可以自定义 valueOf() 方法,实现特定类型的转换逻辑。
  • 示例:
public class Person {
    private String name;

    public static Person valueOf(String name) {
        Person person = new Person();
        person.setName(name);
        return person;
    }
}

// 使用自定义 valueOf()
Person p = Person.valueOf("Alice");

常见问题与陷阱:

1. valueOf() vs parseXxx()

  • Integer.valueOf("123") 返回 Integer 对象。
  • Integer.parseInt("123") 返回 int 基本类型。
  • 优先使用 parseXxx() 如果只需基本类型(性能更优)。

2. 空指针问题:

String s = null;
String.valueOf(s);        // 返回 "null" 字符串  
s.toString();             // 抛出 NullPointerException

5. 总结

  • String.valueOf():万能类型转字符串,安全处理 null。
  • 包装类的 valueOf():字符串或基本类型转包装类对象。
  • 枚举的 valueOf():字符串转枚举常量。
  • 自定义 valueOf():按需定义对象创建逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值