java针对8种基本数据类型,定义了相应的引用类型:包装类(封装类),有了类的特点,就能调用类中的方法,java才是真正的面向对象。
基本数据类型 包装类byte Byteshort Shortint Integerlong Longfloat Floatdouble Doubleboolean Booleanchar 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 = 10Integer 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 = 11System.out.println("s = " + s); // s = 141System.out.println("i = " + i); // i = 430System.out.println("l = " + l); // l = 11211System.out.println("f = " + f); // f = 66.6System.out.println("d = " + d); // d = 666.666System.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 --> Stringbyte temp_byte = 127;String temp_string_0 = 127 + "";// short --> Stringshort temp_short = 141;String temp_string_1 = temp_short + "";// int --> Stringint temp_int = 428;String temp_string_2 = temp_int + "";// long --> Stringlong temp_long = 11211;String temp_string_3 = temp_long + "";// float --> Stringfloat temp_float = 135.0F;String temp_string_4 = temp_float + "";// double --> Stringdouble temp_double = 433.0;String temp_string_5 = temp_double + "";// char --> Stringchar temp_char = 'A';String temp_string_6 = temp_char + "";// boolean --> Stringboolean 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 转换为 基本数据类型,再将 基本数据类型 转换为 对应的包装类