类型转换烦恼:Java中多种类型转换问题示例

原创 比眉伴天荒 2024-12-05 11:12 39阅读 0赞

在Java中,类型转换可能因为各种原因变得复杂。以下是一些常见的类型转换问题示例:

  1. 基本类型到引用类型

    • 自动装箱/拆箱

      1. // 基本类型装箱成对象
      2. int num = 10;
      3. Object obj = num; // 这是非法操作,编译器会报错
      4. // 对象拆箱回基本类型
      5. if (obj instanceof Integer) {
      6. Integer i = (Integer) obj;
      7. System.out.println(i); // 输出: 10
      8. }
    • 强制转换

      1. int num = 10;
      2. String str = num + ""; // 这是非法操作,编译器会报错
      3. // 必须明确类型,否则会抛出 ClassCastException
      4. if (str instanceof String) {
      5. Integer i = Integer.parseInt(str);
      6. System.out.println(i); // 输出: 10
      7. } else {
      8. throw new ClassCastException("Invalid type for string conversion", str.getClass());
      9. }
  2. 引用类型到基本类型

    • 自动拆箱/装箱

      1. Integer num = 10;
      2. System.out.println(num); // 输出: 10
      3. String str = "Hello, Java!";
      4. int length = str.length(); // 使用 .length() 方法获取长度
      5. System.out.println(length); // 输出: 13
    • 强制拆箱/装箱

      1. // 强制将Integer对象转换为int类型
      2. int num = (int) Integer.valueOf(10);
      3. System.out.println(num); // 输出: 10
      4. // 强制将String字符串转换为char类型
      5. char strChar = (char) 'Hello, Java!';
      6. System.out.println(strChar); // 输出: H
  3. 自定义类的类型转换

    • 继承自动转型

      1. class Animal {
      2. void speak() {
      3. System.out.println("Animal speaks"); // 默认实现
      4. }
      5. }
      6. class Dog extends Animal {
      7. @Override
      8. public void speak() {
      9. System.out.println("Dog barks"); // 自定义实现
      10. }
      11. }
      12. Dog dog = new Dog();
      13. dog.speak(); // 输出: Dog barks
    • 手动类型转换

      1. class Animal {
      2. String speak() {
      3. return "Animal speaks"; // 默认实现
      4. }
      5. }
      6. class Dog extends Animal {
      7. @Override
      8. public String speak() {
      9. return "Dog barks"; // 自定义实现
      10. }
      11. }
      12. Dog dog = new Dog();
      13. String speech = dog.speak(); // 强制转换为String类型
      14. System.out.println(speech); // 输出: Dog barks

注意:在实际编程中,推荐使用自动装箱/拆箱和方法重写的方式进行类型转换。

文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。

发表评论

表情:
评论列表 (有 0 条评论,39人围观)

还没有评论,来说两句吧...

相关阅读