建立什么网站可以赚钱,室内设计效果图qq群,开发微信微商城,北京太阳宫网站建设文章目录基本介绍包装类自动装箱自动拆箱包装类注意事项包装类比较包装器内容不可变基本介绍
有时#xff0c;需要将int这样的基本类型转换为对象。所有的基本类型都有一个与之对应的类。 例如#xff0c;Integer类对应基本类型int。通常#xff0c;这些类称为包装器#…
文章目录基本介绍包装类自动装箱自动拆箱包装类注意事项包装类比较包装器内容不可变基本介绍
有时需要将int这样的基本类型转换为对象。所有的基本类型都有一个与之对应的类。 例如Integer类对应基本类型int。通常这些类称为包装器wrapper)。这些包装器类有显而易见的名字Integer、Long、Float、Double、Short、Byte、Character和Boolean(前6个类派生于公共的超类number)。
包装器类是不可变的即一旦构造了包装器就不允许更改包装在其中的值。同时包装器类还是final,因此不能派生它们的子类。
包装类
每个基本数据类型都对应一个包装类名称就是首字母大小。包装类是一个类所以拥有许多方法我们可以利用这些方法很任意的对数据进行操作下面以Interger进行举例 The Integer class wraps a value of the primitive type int in an object. An object of type Integer contains a single field whose type is int. In addition, this class provides several methods for converting an int to a String and a String to an int, as well as other constants and methods useful when dealing with an int. 上面就是Interger类上的注释就表示Integer就是包含了int值的对象提供了一些int-String和String-int 的方法 public static void main(String[] args) {int num Integer.parseInt(111, 2);System.out.println(num); // 输出7}上面就是一个例子我们可以利用Integer的静态方法parseInt将字符串转换为int还可以指定进制。 对于创建Integer对象有2种方法如下 // 通过构造器创建Integer integer1 new Integer(7);//通过静态方法valueOf创建Integer integer2 Integer.valueOf(8);创建了Integer对象后就可以使用一系列的方法了
具体使用方法参考api文档对于其他几个包装类使用方法类似
自动装箱
自动装箱就是在需要的时候基本数据类型会自动被装配成为对应的包装类这里还是使用int和Integer进行举例 Integer a 1;上面代码我们直接将基本数据类型赋值给了一个类按理来说这个代码应该报错事实上上面代码并不会报错就是因为自动装箱机制。上面代码等价于下面代码 Integer a Integer.valueOf(1);对于int来说自动装箱就是在有需要的时候就会自动被装配为Integer
自动拆箱
自动拆箱就是自动装箱的逆过程在需要的时候包装类会被自动转换为对应的基本数据类型还是使用int和Integer进行举例 Integer a new Integer(1);a;System.out.println(a);上面的代码我们使用对对象使用了运算符这是不运行的但是由于自动拆箱机制在执行a这行代码时会将a转换为int然后再执行操作然后再转换回Integer。等价于下面代码 Integer a new Integer(1);int b a.intValue();b;a Integer.valueOf(b);System.out.println(a);包装类注意事项
包装类比较
我们对包装类的比较不要使用2个等号来进行比较因为对象使用 比较的是地址例如下面代码 Integer a 10000;Integer b 10000;System.out.println(a b); // 输出false我们应当使用 a.equals(b)来进行比较 Integer a 10000;Integer b 10000;System.out.println(a.equals(b)); // 输出true对于自动装箱有一些注意事项如下 自动装箱规范要求boolean、byte、chars127,介于-128和127之间的short和int 被包装到固定的对象中。例如如果在前面的例子中将a和b初始化为100那么它们 的比较结果一定成功。 我们将上面代码中的a和b改成100那么使用比较将会输出true Integer a 100;Integer b 100;System.out.println(a b); // 输出true应为对于Integer值为-128 – 127的Integer对象已经创建了缓存起来了构建Integer对象时不会创建新的对象具体内容参考Integer里面的IntegerCache类
包装器内容不可变
还是使用Integer进行举例只要我们在构建Integer后那么Integer的值就已经不能够改变了应为Integer里面的值是使用final进行修饰的