primitive主数据类型的包装类
程序员文章站
2022-04-27 22:43:46
...
JAVA在5.0版本之后之后给每一个primitive主数据类型(除了char)都准备了一个包装类,
int→Integer;long→Long;byte→Byte;short→Short;float→Float;
double→Double;boolean→Boolean;
包装类有什么作用呢?
包装类的作用就是将一个值传入包装类的构造函数,这样就能创建出一个包装类的对象。而且包装类还具有自动装箱和自动拆包的功能。
以下仅以Integer举例,例如:
Integer d=3;//自动装箱,即可以用int值来构建一个对象并指向引用变量。
int d=new Integer(123);//自动拆包,将对象的实例变量值直接赋给int型变量。
当然不只是这些用处。
还可以向ArrayList<Integer>中添加元素时直接添加int型的变量;
如果某些方法的参数是某种包装类型,则可以直接传入相对应的primitive主数据类型;方法的返回值同样可以;
还有就是条件判断语句,也可以用Boolean的引用来判断。
当然在数值运算的时候也可以:
int a=new Integer(2)+3;//也是可以运行的。
需要特别注意的是Integer的自动装箱的一个小知识,
int→Integer;long→Long;byte→Byte;short→Short;float→Float;
double→Double;boolean→Boolean;
包装类有什么作用呢?
包装类的作用就是将一个值传入包装类的构造函数,这样就能创建出一个包装类的对象。而且包装类还具有自动装箱和自动拆包的功能。
以下仅以Integer举例,例如:
Integer d=3;//自动装箱,即可以用int值来构建一个对象并指向引用变量。
int d=new Integer(123);//自动拆包,将对象的实例变量值直接赋给int型变量。
当然不只是这些用处。
还可以向ArrayList<Integer>中添加元素时直接添加int型的变量;
如果某些方法的参数是某种包装类型,则可以直接传入相对应的primitive主数据类型;方法的返回值同样可以;
还有就是条件判断语句,也可以用Boolean的引用来判断。
当然在数值运算的时候也可以:
int a=new Integer(2)+3;//也是可以运行的。
需要特别注意的是Integer的自动装箱的一个小知识,
Integer a=new Integer(127); Integer b=(127); System.out.println(a==b); System.out.println(a.equals(b));
结果为false,true。但是当
Integer c=127; Integer d=127; System.out.println(a==b); System.out.println(a.equals(b));
结果却是true,true。
会出现这种情框是因为,在自动装箱时如果创建一个Integer对象传入的值小于128的话,在创建第二个对象并且与第一个对象传入的值相等,那么第二个对象的应用变量会直接指向创建的第一个对象,而不会再创建一个新的对象。
类中一般都会有方法,java定义的包装类中也有许多方法来运用,
以Integer例列举一些重要的静态方法,也就是可以直接以Integer调用的方法。
将一段字符串解码成为一个Integer内的实例变量值, decode(String st)
讲一段字符串解析为一个int值, Integer.parseInt(String,int );//String为传入的数字型字符串,int为所传入的字符串的进制,该方法返回的是一个十进制的int值,例如:
System.out.println(d.parseInt("4d", 16));
返回的是77.
还可以翻过来讲int或Integer转变为String:
int e=3; 或者 Integer.toString(new Integer(22));
Integer.toString(e);
还有很多方法,具体可以查看API中的java.lang.Integer类。其他几个包装类也大都如此。