Java基本类型之间的转换

博客总结了Java中的类型转换,包括自动和强制类型转换,数字、对象、字符串与基本数据类型间的转换。详细介绍了String与基本类型、Date与String互转,以及int、double、float互转的方法,还提醒类型转换可能引发数据丢失等问题,要谨慎操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们经常会遇到使用类型转换的情况,这里做一个小的总结,加强记忆,也方便自己查看。


在Java中,存在以下几种类型转换情况:

  1. 自动类型转换(隐式类型转换):当目标类型的范围大于源类型时,会自动进行类型转换。例如,将一个整数赋值给一个更大范围的整数类型,或者将一个字符赋值给一个整数类型。

  2. 强制类型转换(显式类型转换):当目标类型的范围小于源类型时,需要使用强制类型转换进行转换。强制类型转换需要在目标类型前加上括号并使用转换运算符。但是要注意,如果进行强制类型转换可能导致精度损失或溢出问题,需要谨慎使用。

  3. 数字类型之间的转换:可以将一种数字类型转换为另一种数字类型。例如,将整数类型转换为浮点类型,或将浮点类型转换为整数类型。

  4. 对象类型之间的转换:可以将一个类的对象转换为另一个类的对象,这涉及到继承和多态的概念。父类引用指向子类对象时,可以进行向上转型;而子类引用指向父类对象时,可以进行向下转型。

  5. 字符串与基本数据类型之间的转换:可以将字符串类型转换为基本数据类型,或将基本数据类型转换为字符串类型。例如,使用parseInt()方法将字符串转换为整数,使用valueOf()方法将整数转换为字符串。

需要注意的是,类型转换可能会引发数据丢失、精度损失或溢出等问题,因此在进行类型转换时应当慎重,并且确保转换的安全性和正确性。

一、String转基本类型

可以使用包装类或者相关的方法将String类型转换为基本类型。
下面是一些常用的类型转换示例:

  1. 转换为int类型:

    String str = "123";
    int num = Integer.parseInt(str);
    
  2. 转换为double类型:

    String str = "3.14";
    double num = Double.parseDouble(str);
    
  3. 转换为float类型:

    String str = "2.718";
    float num = Float.parseFloat(str);
    
  4. 转换为long类型:

    String str = "9876543210";
    long num = Long.parseLong(str);
    
  5. 转换为boolean类型:

    String str = "true";
    boolean flag = Boolean.parseBoolean(str);
    

需要注意的是,如果String的格式无法正确转换为相应的基本类型,会抛出NumberFormatException异常。因此,在进行类型转换之前最好进行输入验证以避免异常的发生。

总结:要转成什么类型,就使用目标类型的包装类的parse方法。

二、基本类型转String

这个比较简单,就是使用String的valueOf方法。
下面是一些常用的类型转换示例:

  1. int类型转换为String类型:

    int num = 123;
    String str = String.valueOf(num);
    // 或者使用 Integer 类的 toString() 方法
    // String str = Integer.toString(num);
    
  2. double类型转换为String类型:

    double num = 3.14;
    String str = String.valueOf(num);
    // 或者使用 Double 类的 toString() 方法
    // String str = Double.toString(num);
    

其他的类型以此类推。

还可以使用字符串拼接的方式将基本类型转换为String类型,例如:

int num = 123;
String str = "" + num;

需要注意的是,Java中的字符串拼接操作会自动调用基本类型的toString()方法来将其转换为String类型。

三、Data类型跟String互转

可以使用SimpleDateFormat类来实现DateString类型的相互转换。

以下是示例代码:

  1. Date类型转换为String类型:

    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    Date date = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String str = sdf.format(date);
    
  2. String类型转换为Date类型:

    import java.text.SimpleDateFormat;
    import java.text.ParseException;
    import java.util.Date;
    
    String str = "2023-10-15 13:38:40";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = null;
    try {
        date = sdf.parse(str);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    

四、int、double、float互转

这里涉及到两个概念:
数据类型转换分为两种:隐式类型转换和显式类型转换

  1. 隐式类型转换是指将小范围的数据类型自动转换为大范围的数据类型,即类型提升。例如:

    int num1 = 123;
    double num2 = num1; // num1会被自动转换为double类型
    
  2. 显式类型转换是指使用强制类型转换操作符将大范围的数据类型转换为小范围的数据类型。例如:

    double num1 = 123.456;
    int num2 = (int)num1; // num1会被强制转换为int类型
    

以下是示例代码:

  1. int类型转换为double类型:

    int num1 = 123;
    double num2 = (double)num1;
    // 或者使用包装类提供的方法
    // double num2 = Double.valueOf(num1);
    
  2. int类型转换为float类型:

    int num1 = 123;
    float num2 = (float)num1;
    // 或者使用包装类提供的方法
    // float num2 = Float.valueOf(num1);
    
  3. double类型转换为int类型:

    double num1 = 123.456;
    int num2 = (int)num1;
    // 或者使用包装类提供的方法
    // int num2 = Double.valueOf(num1).intValue();
    
  4. double类型转换为float类型:

    double num1 = 123.456;
    float num2 = (float)num1;
    // 或者使用包装类提供的方法
    // float num2 = Double.valueOf(num1).floatValue();
    
  5. float类型转换为int类型:

    float num1 = 123.456f;
    int num2 = (int)num1;
    // 或者使用包装类提供的方法
    // int num2 = Float.valueOf(num1).intValue();
    
  6. float类型转换为double类型:

    float num1 = 123.456f;
    double num2 = (double)num1;
    // 或者使用包装类提供的方法
    // double num2 = Float.valueOf(num1).doubleValue();
    

需要注意的是,在进行数据类型转换时可能会出现精度损失或者溢出的问题,因此在实际应用中应该根据场景合理选择使用相应的数据类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丿BAIKAL巛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值