Java中Integer和int的区别

Java中Integer和int的区别

在Java中,int是基本数据类型,而Integer是一个Wrapper类。

  • 作为一种原始数据类型,Int的灵活性较低。我们只能存储整数的二进制值。
  • 由于Integer是int数据类型的包装类,因此它在存储、转换和操作int数据方面提供了更大的灵活性。
  • Integer是一个类,因此它可以调用类中定义的各种内置方法。与其他引用(对象)类型一样,Integer类型的变量存储对Integer对象的引用。

示例:

// Valid
int n = 20;
//valid
Integer n = 45;

// Valid
Integer.parseInt("10");
// Not Valid
int.parseInt("10");

重要的不同点:

  1. 强制转换为String变量:不能直接或甚至通过强制转换将String值(只包含整数)赋给int变量。但是,可以使用Integer(String)构造函数将String赋值给Integer类型的对象。我们甚至可以使用parseInt(String)将String字面值转换为int值。
// Java program to illustrate 
    // difference between
    // int and Integer 
      
    public class Main {
        public static void main(String args[])
        {
      
            Integer a = new Integer("123");
            // Casting not possible
            // int a = (int)"123";
            // Casting not possible
            // int c="123";
      
            // Casting possible using methods
            // from Integer Wrapper class
            int b = Integer.parseInt("123");
            System.out.print(a + new Float("10.1"));
        }
    }

输出:

133.1
  1. 直接将值转换为其他基数:可以分别使用toBinaryString()、toOctalString()或toHexString()将存储在integer类中的整型值直接转换为二进制、八进制或十六进制格式。这在int类型的变量中是不可能的。
// Java program to illustrate 
    // difference between
    // int and Integer 
      
    public class Main {
        public static void main(String args[])
        {
            String bin = Integer.toBinaryString(123);
            String oct = Integer.toOctalString(123);
            String hex = Integer.toHexString(123);
            System.out.print(bin + "\n" + oct + "\n" + hex);
        }
    }

输出:

1111011
173
7b
  1. 对数据执行操作:Integer类还允许我们分别使用reverse()、rotateLeft()和rotateRight()来反转数字或向左或向右旋转。我们需要定义自己的逻辑来对int变量执行这些操作,因为它不是一个内置类。
// Java program to illustrate 
    // difference between
    // int and Integer 
      
    public class Main {
        public static void main(String args[])
        {
            // mainethods convert integer to its binary form,
            // apply the desired operation 
            // and then returns the decimal form
            // of the newly formed binary number
            // (12)10->(1100)2 -> 
            // rotate left by 2 units -> (110000)2->(48)10
            int rL = Integer.rotateLeft(12, 2);
      
            // (12)10->(1100)2 -> 
            // rotate right by 2 units -> (0011)2->(3)10
            int rR = Integer.rotateRight(12, 2);
      
            //(12)10 -> (00000000000000000000000000001100)2 
            // -> reverse ->(00110000000000000000000000000000)2
            // -> (805306368)10
              
            // int is of 32 bits
            int rev = Integer.reverse(12);
            System.out.print("Left Rotate : " + rL 
              + "\nRight rotate : " + rR + "\nReverse : " + rev);
        }
    }

输出:

    Left Rotate : 48
    Right rotate : 3
    Reverse : 805306368

  1. 灵活性:整数包装器类为我们提供了对现有int数据类型的更多灵活性。除了预定义的操作符外,还可以对整型值执行许多操作。当需要像对待对象一样对待int变量时,使用Integer类。因为Wrapper类继承Object类,所以它们可以在带有Object引用或泛型的集合中使用。因此,我们将nullability属性添加到现有的int数据类型中。
    从Java 5开始,我们就有了自动装箱的概念,其中原始数据类型自动转换为包装器类,反之亦然。因此,我们可以在任何基本数据类型和任何Wrapper类之间执行任何算术或逻辑操作。

// Java program to illustrate // auto-boxing import java.util.function.Function; import java.util.function.Function; public class Main {     public static void main(String args[])     {            Integer a = new Integer("12");         Integer d = new Integer("13");         int b = 2;         double c = 3.1;         Double f = new Double("12.1");         int d2 = a + d;         System.out.println("Sum of 2 Integer objects :"              + (a + d));         System.out.println("Sum of an Integer object              and int value :" + (a + b));         System.out.println("Sum of an Integer object              and double value :" + (a + c));         System.out.println("Sum of an Integer object              and Double object :" + (a + f));     } }

输出:

    Sum of 2 Integer objects :25
    Sum of an Integer object and int value :14
    Sum of an Integer object and double value :15.1
    Sum of an Integer object and Double object :24.1

除了Integer之外,Java中还有更多与数据类型对应的包装器类。具体情况如下:

Java中基本类型的等价包装类

Java中Integer和int的区别

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程