1,原始类型不属于对象,但是原始类型的数据是储存在栈当中,存取效率更高,为了让原始类型数据成为对象,实现Java万物皆对象的思想,就提出了包装类的概念;
2,在web前端当中,接收到的一切用户数据都是字符串类型,传输到后台进行运用,就必须将字符串类型转换为原始数据类型;在进行字符串类型数据转换为原始类型,就必须要用到包装类;
3,原始类型所对应的包装类:
原始类型 | 包装类 | 转换方法 |
byte | Byte | Byte.parseByte(String str) |
short | Short | Short.parseShort(String str) |
int | Integer | Integer.parseInteger(String str) |
long | Long | Long.parseLong(String str) |
float | Float | Float.parseFloat(String str) |
double | Double | Double.parseDouble(String str) |
boolean | Boolean | Boolean.parseBoolean(String str) |
char | Character | 无 |
- 其中的Boolean的参数是不区分大小写的,只要String的值为true,那么转换的为bool值为true,但是只要值不为true,那么就是false;
- Integer包装类,它的参数只要是不符合int类型就会抛出异常,不能编译成功;
-新增异常类型:
4,NumberFormatException:数据类型异常,在使用包装类的时候调用相应的parse方法的时候,所给的参数不符合包装类所对应数据类型;就算是数值型,所给的数据类型不相符合也是错误的;
5,compare(),是比较两个包装类的大小:前者大,返回1;后者大,返回-1;相等返回0;
public static int compare(int x, int y) {
return (x < y) ? -1 : ((x == y) ? 0 : 1);
}
用compare比较Boolean值的时候,前者true返回1;前者false返回-1;相同返回0;
用compare比较Character值得时候,相等返回0,不小等返回前者减后者得差值;
compareTo(Integer otherInteger):只能比较两个Integer类型得数值,只是比较整数,等于参数返回0,
小于参数返回-1;大于参数返回1;
6,装箱,拆箱,自动装箱,自动拆箱;
装箱:将原始类型数据转换为对应的包装类,可以使用valueof(参数为原始类型);valueof是所有包装类都有的一个静态方法,在使用的时候可以用类名直接调用;
拆箱:将包装类的类类型转换为对应得原始类型;直接调用所对应得value()方法,进行拆箱:
//拆箱过程:(将a转换成原始类型赋值给b)
public static void main(String[] args){
Integer a = 123;
int b = a.valueof();
}
自Java1.5之后,就可以进行手动拆,装箱:
public static void main(String[] args){
Integer a=1;//自动装箱
int b=new Integer(1);//自动拆箱
}