1.包装类概念
2.包装类中装箱和拆箱
装箱:
拆箱:
包装类:使用一个类把基本数据类型的数装起来,这个类叫包装类
基本数据类型:
byte short int long float double char boolen
对应的包装类:java.lang
Byte Short Integer Long Float Double Character Boolen
包装类中装箱和拆箱(重点)
1.装箱:把基本数据类型的数据转换为包装类int==>Integer
a.可以使用Integer类的构造方法
Integer(int value) 参数传递一个int类型的整数
Integer(String s) 参数传递一个字符串类型的整数
b.可以使用Integer类中的[静态]方法valueOf
static Integer valueOf(int i) 参数传递一个int类型的整数
static Integer valueOf(String s) 参数传递一个字符串类型的整数
注意:
以上两个参数是字符串的方法,必须传递字符串类型的整数,否则会抛出数字格式化异常
“10” 正确 "a"错误
2.拆箱:把包装类中基本数据的数据取出来,把包装类转换为基本数据类型Integer==>int
使用包装类中的方法:
Integer类:int intValue() 以 int 类型返回该 Integer 的值。
Double类:double doubleValue() 返回此 Double 对象的 double 值。
package com.itheima.demo01Integer;
import java.net.Inet4Address;
/*
装箱:int==>Integer
拆箱:Integer==>int
*/
public class Demo01Integer {
public static void main(String[] args) {
//装箱:int==>Integer
//a.可以使用Integer类的构造方法
Integer in1 = new Integer(10);
System.out.println(in1);//10 Integer类重写了Object类的toString方法
Integer in2 = new Integer("10");
System.out.println(in2);//10
//b.可以使用Integer类中的[静态]方法valueOf
Integer in3 = Integer.valueOf(10);
System.out.println(in3);//10
Integer in4 = Integer.valueOf("10");
System.out.println(in4);
//注意:以上两个参数是字符串的方法,必须传递字符串类型的整数,否则会抛出数字格式化异常
//Integer in5 = Integer.valueOf("A");//NumberFormatException: For input string: "A"
//拆箱:Integer==>int
//Integer类:int intValue() 以 int 类型返回该 Integer 的值。
int a = in1.intValue();
System.out.println(a);//10
}
}
JDK1.5版本之后会自动装箱和拆箱
集合中只能存储对象
集合中存储的都是Integer对象,取出的元素也是Integer对象
3.自动装箱,自动拆箱
package com.itheima.demo01Integer;
import java.util.ArrayList;
/*
自动装箱,自动拆箱(重点)
在JDK1.5版本之后:装箱与拆箱[自动]进行转换
*/
public class Demo02Integer {
public static void main(String[] args) {
//自动装箱
Integer in = 1;//等价于 Integer in = new Integer(1);
//自动拆箱
int a = in;//等价于 int a = in.intValue();
//集合只能存储对象
ArrayList<Integer> list = new ArrayList<>();
list.add(1);//自动装箱 等价于 list.add(new Integer(1));
//集合中存储的都是Integer对象,取出的元素也是Integer对象
Integer in2 = list.get(0);
int b = list.get(0);//自动拆箱 等价于 int b = list.get(0).intValue();
}
}
4.基本类型与字符串之间的转换
基本类型与字符串之间的转换(重点,经常使用)
1.基本类型数据==>字符串类型
(重点)a.基本类型数据+"":工作中经常使用
b.可以使用包装类中的静态方法toString
Integer类:static String toString(int i)
Double类:static String toString(double d)
…
c.可以使用String类中的静态方法valueOf
static String valueOf(int i) 返回 int 参数的字符串表示形式。
static String valueOf(double d) 返回 double 参数的字符串表示形式。
…
2.字符串类型==>基本类型数据(特别重要)
在每一个包装类中都定义了一个parseXXX方法,可以把字符串基本类型的数据转换为基本数据类型
Integer类: static int parseInt(String s) 参数传递字符串类型的整数
Double类: static double parseDouble(String s) 参数传递字符串类型的小数
…
注意:
1.除了Character类,其他类都有parseXXX方法,Character没有parseXXX方法
怎么把字符串转换为char类型的数据那: “abc”.charAt(0)==> ‘a’
2.parseXXX方法,参数必须传递基本数据类型的字符串,否则会抛出数字格式化异常,布尔类型除外
package com.itheima.demo01Integer;
/*
基本类型与字符串之间的转换(重点,经常使用)
*/
public class Demo03Integer {
public static void main(String[] args) {
//1.基本类型数据==>字符串类型
//(重点)a.基本类型数据+"":工作中经常使用
String s1 = ""+10;//"10"
System.out.println(s1+10);//"1010"
//b.可以使用包装类中的静态方法toString
String s2 = Integer.toString(10);//"10"
System.out.println(s2+100);//"10"+100==>"10100"
//c.可以使用String类中的静态方法valueOf
String s3 = String.valueOf(10);//"10"
System.out.println(s3+1000);//"10"+100==>"101000"
//2.字符串类型==>基本类型数据(特别重要)
int a = Integer.parseInt("100");
System.out.println(a+10);//110
double d = Double.parseDouble("8.8");
System.out.println(d+1.1);//9.9
//把字符串转换为char类型,需要使用String类的方法charAt(索引)
char c = "abc".charAt(0);
System.out.println(c);//a
System.out.println("abc".charAt(1));//b
System.out.println("abc".charAt(2));//c
//parseXXX方法,参数必须传递基本数据类型的字符串,否则会抛出数字格式化异常,布尔类型除外
//int e = Integer.parseInt("哈哈");//NumberFormatException: For input string: "哈哈"
//布尔类型只有两个值:true false
boolean b1 = Boolean.parseBoolean("true");
System.out.println("b1:"+b1);//b1:true
boolean b2 = Boolean.parseBoolean("false");
System.out.println("b2:"+b2);//b2:false
boolean b3 = Boolean.parseBoolean("abc");//字符串不是true,得到的全是false
System.out.println("b3:"+b3);//b3:false
}
}