在java中,很多类的对象都需要接收引用类型的对象,此时就无法将一个基本数据的值传入。为解决此类问题,JDK提供了一系列的包装类,通过这些包装类可以将基本数据的值包装为引用数据类型的对象。在java中,每种基本类型都有对应的包装类,如下表:
基本数据类型 | 对应的包装类 |
---|---|
byte | Byte |
char | Character |
int | Integer |
short | Short |
long | Long |
float | Float |
double | Double |
booleaan | Boolean |
图中列举了8种基本数据类型及其对应的包装类。其中,除了Interger和Character类,其他包装类的名称和基本数据类型的名称一致,只是类名的第一个字母需要大写。
包装类和基本数据类型在进行转换时,引入了装箱和拆箱的概念。其中装箱指将基本数据类型的值转为引用数据类型的。反之,拆箱是指将引用数据类型的对象转为基本数据类型。
以int的integer为案例学习装箱的过程:
package com.debugtext;
public class IntegerDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 20 ;
Integer in = new Integer(a);//将int类型的变量a作为参数传入,从而转为integer类型。
System.out.println(in.toString());//将Integer的值以字符串的形式打印出来,此处的toString方法可以省略。
}
}
20
Integer类除了具有Object类的所有方法外,还有一些特有的方法,可以自行查阅java的API文档。
下面演示使用intValue()的方法来进行拆箱操作:
package com.debugtext;
public class IntegerDemo01 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer in = new Integer(20);
int a = 10 ;
int sum = in.intValue()+a;//调用intValue()方法,将Integer对象转为int类型。
System.out.println("sum="+sum);
}
}
sum=30
parse:vt对句子做语法分析
parseInt()方法:将字符串参数作为有符号的十进制整数进行解析
parselnt()方法在程序中很常用,这是一个静态方法。
通过打印一个“*”矩形,其中宽为20,高为10,案例如图示:
package com.debugtext;
public class ParseIntDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//传入两个参数一个作为矩形的宽,一个作为矩形的高,传入参数均为字符串类型,不能直接使用。需要用parseInt()方法将字符串转为整数,从而实现矩形打印。
int w = Integer.parseInt("20");
int h = Integer.parseInt("10");
for(int i=0;i<h;i++){
StringBuffer st = new StringBuffer();
for(int j=0;j<w;j++){
st.append("*");
}
System.out.println(st.toString());
}
}
}
********************
********************
********************
********************
********************
********************
********************
********************
********************
********************
使用包装类时需要注意以下几点:
1.包装类都重写了Object的toString()方法,以字符串的形式返回被包装的基本数据类型的值。
2.除了Character外,包装类都有ValueOf(String s)方法,可以根据String类型的参数创建包装类对象,但参数字符s不能为null,而且字符串必须是可以解析为相应基本类型的数据,否则会报错。
3.除了Character外,包装类都有parseXxx(String s)的静态方法,将字符串转换为对应的基本类型的数据。参数s不能为null,而且同样必须是可以解析为相应基本类型的数据,否则报错。
JDK5.0新特性—自动装箱和拆箱
5.0版本之前,数学运算表达式中的操作数必须是基本类型的,并且运算结果也是基本类型,包装类与基本类型不允许混合数学运算,运算时,必须通过拆箱将包装类对象转为基本数据类型的值才可
jdk5.0版本中提供了自动拆箱和装箱技术,可以自动进行基本数据类型和包装类对象之间的转换:例
int num=20;
Integer number =num ;//自动装箱
自动装箱,相当于程序执行语句“Integer number = new Integer(num);。”
自动拆箱
Integer number = new Integer(18);
int num=number;//自动拆箱
相当于程序执行了语句:“int num = number.intValue();”.
正因为这个特性,基本类型和包装类型可以进行混合数学运算,也可以直接将两个Integer类型进行数学运算。
转义序列
案例如下:
package com.debugtext;
public class EscapeCharacter {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("访问\t \"我的主页\" \n你好!欢迎来到我的主页 ");
}
}
访问 “我的主页”
你好!欢迎来到我的主页