8种基本类型的包装类(与String的转换)
java针对8种基本数据类型,定义了相应的引用类型:包装类(封装类),有了类的特点,就能调用类中的方法,java才是真正的面向对象。
基本数据类型 包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
其中,Byte、Short、Integer、Long、Float、Double
的父类是 Number
,Boolean、Character
继承自 Object类
2、基本数据类型 与 包装类之间的转换
2.1、为什么需要转换
一方面,在有些场景下,需要使用基本数据类型对应的包装类的对象,
此时,就需要将基本数据类型的变量 转换为 包装类的对象,
比如,ArrayList的add(Object obj) 或者 Object类的equals(Object obj);
另一方面,对于包装类来说,既然我们使用的是对象,那么对象是不能进行 + - * / 等运算的,
所以,为了能够进行这些运算,就需要将包装类的对象转换为基本数据类型的变量。
2.2、如何转换
基本数据类型 --> 包装类 :使用包装类的构造器
或者 调用包装类的valueOf(xxx xx)
包装类 --> 基本数据类型 :调用包装类的xxxValue()
注意
:原来使用基本数据类型变量的位置,改成包装类以后,对于成员变量来说,其默认值变化了
public void test1(){
int i1 = 10;
Integer i2 = new Integer(i1);
System.out.println(i2.toString());
float f1 = 12.3F;
Float f2 = new Float(f1);
System.out.println(f2.toString());
String s1 = "32.1";
Float f3 = new Float(s1);
System.out.println(f3.toString());
}
public void test2(){
int i1 = 10
Integer i2 = Integer.valueOf(i1);
System.out.println(i2.toString());
int i3 = i2.intValue();
i3 = i3 + 1;
flaot f1 = 12.3F;
Float f2 = Float.valueOf(f1);
System.out.println(f2.toString());
f3 = f3.floatValue();
f3 = f3 + 1;
Boolean b1 = Boolean.valueOf(true);
}
jdk5.0新特性:自动装箱、自动拆箱
public void test2(){
// 自动装箱:基本数据类型 --> 包装类
int i1 = 10;
Integer i2 = i1; // 自动装箱
System.out.println(i2.toString());
Integer i3 = i1 +1; // 自动装箱
Boolean b1 = true; // 自动装箱
Float f1 = 12.3F; // 自动装箱
// 自动拆箱:包装类 --> 基本数据类型
int i4 = i2; // 自动拆箱
boolean b2 = b1; // 自动拆箱
}
3、String 与 基本数据类型 之间的转换
包装类中的parseXxx方法
,可以将字符串类型的数据
--> 对应的基本数据类型
,
但是,在将字符串转换为其他类型前,一定要确认字符串里面的内容能否正常转换
比如,你想把"asdfghjk"这个字符串 转换为 int类型,那TM能行吗?这时候就会报错的!
3.1、String --> 基本类型数据
class Method{
public static void main(String[] args) {
byte b = Byte.parseByte("11");
short s = Short.parseShort("141");
int i = Integet.parseInt("430");
long l = Long.parseLong("11211");
float f = Float.parseFloat("66.6F");
double d = Double.parseDouble("666.666");
boolean boo = Boolean.parseBoolean("true");
System.out.println("b = " + b); // b = 11
System.out.println("s = " + s); // s = 141
System.out.println("i = " + i); // i = 430
System.out.println("l = " + l); // l = 11211
System.out.println("f = " + f); // f = 66.6
System.out.println("d = " + d); // d = 666.666
System.out.println("boo = " + boo); // boo = 11
}
}
咳咳
这里没有String 的转换 --> char
,
因为,在八大包装类中,除了Character类外,其他的7种包装类中都有parseXxx方法,
所以,如果,你想将,字符串类型的数据 转换成 char类型的数据,可以通过String类中的toCharArray()
和 charAt()
来做到,
字符串.toCharArray()
:将字符串 转换为 字符数组
字符串.charAt(下标)
:获取,字符串中的某位置的字符元素
如下:
class Demo {
public static void main(String[] args) {
String string = "CSDN_yyds";
// `字符串.toCharArray()`:将字符串转换为字符数组
char[] charArray = string.toCharArray();
System.out.println("string字符串一共有" + charArray.length + "个字符.");
for (int i = 0; i < charArray.length; i++) {
System.out.println("第" + (i + 1) + "个字符是:" + charArray[i]);
}
// 用,字符串.charAt(下标),获取字符串中某位置的字符元素
char temp_char_0 = string.charAt(0);
char temp_char_1 = string.charAt(1);
...
...
char temp_char_8 = string.charAt(8);
System.out.println("string字符串第一个元素为:" + temp_char_0);
System.out.println("string字符串第二个元素为:" + temp_char_1);
...
...
System.out.println("string字符串第九个元素为:" + temp_char_8);
}
}
3.2、基本类型数据 --> String
# 1、直接与空字符串进行拼接
// byte --> String
byte temp_byte = 127;
String temp_string_0 = 127 + "";
// short --> String
short temp_short = 141;
String temp_string_1 = temp_short + "";
// int --> String
int temp_int = 428;
String temp_string_2 = temp_int + "";
// long --> String
long temp_long = 11211;
String temp_string_3 = temp_long + "";
// float --> String
float temp_float = 135.0F;
String temp_string_4 = temp_float + "";
// double --> String
double temp_double = 433.0;
String temp_string_5 = temp_double + "";
// char --> String
char temp_char = 'A';
String temp_string_6 = temp_char + "";
// boolean --> String
boolean temp_boolean = true;
String temp_string_7 = temp_boolean + "";
# 2、String类的valueOf方法
String string_0 = String.valueOf(temp_byte) + "_EX";
String string_1 = String.valueOf(temp_short) + "_EX";
String string_2 = String.valueOf(temp_int) + "_EX";
String string_3 = String.valueOf(temp_long) + "_EX";
String string_4 = String.valueOf(temp_float) + "_EX";
String string_5 = String.valueOf(temp_double) + "_EX";
String string_6 = String.valueOf(temp_char) + "_EX";
String string_7 = String.valueOf(temp_boolean) + "_EX";
3.3、String --> 包装类
可以先将 String 转换为 基本数据类型,
再将 基本数据类型 转换为 对应的包装类