python中的int这样的数据类型已经是类的情况下,老牌的Java当然也有对基本数据类型的类封装
但是Java并没有Python这样激进,Java中的基本数据类型的并不直接是类
而是另外开辟炉灶,创建创建了一一对应的封装类实现
基本数据类型 | 封装类 | 构造方法1 | 构造方法2 | |
int | Integer | Integer(int value) | Integer(String s) | |
byte | Byte | Byte(byte value) | Byte(String s) | |
char | Character | Character(char value) | ||
short | Short | Short(short value) | Short(String s) | |
long | Long | Long(long value) | Long(String s) | |
float | Float | Float(double value) | Float(float value) | Float(String s) |
double | Double | Double(double value) | Double(String s) | |
boolean | Boolean | Boolean(boolean value) | Boolean(String s) |
装箱与拆箱
拆箱:类的对象还原为基本的数据类型
装箱:基本数据类型变为对应的类的对象
Java可以自动进行拆箱和装箱
示例代码:
public class T2 {
public static void main(String [] args) {
// 装箱
int x = 10;
Integer xx = x;
System.out.println("xx = "+xx);
// 拆箱
Float f1 = new Float(3.14f);
Float f2 = new Float(3.1415926d);
Float f3 = new Float("3.1415926535897");
System.out.println("f1 = "+f1);
System.out.println("f2 = "+f2);
System.out.println("f3 = "+f3);
StringBuffer s = new StringBuffer("111");
String str = s.toString();
System.out.println("str = "+str);
// 封装类也有toString方法,可以将其内容转成字符串
System.out.println("f1 = "+f1.toString());
}
}
利用封装类实现字符串转值的两种实现思路
有了上面的装箱和拆箱,很容易想到可以利用构造一个临时的匿名对应数据类型包装类对象
然后将这个匿名对象赋给一个解析出来的基本数据类型
示例代码:
除此之外,Java还提供了封装类的parse系列方法来实现字符串到基本数据类型的转换
示例代码:
public class T2 {
public static void main(String [] args) {
// 装箱
int x = 10;
Integer xx = x;
System.out.println("xx = "+xx);
// 拆箱
Float f1 = new Float(3.14f);
Float f2 = new Float(3.1415926d);
Float f3 = new Float("3.1415926535897");
System.out.println("f1 = "+f1);
System.out.println("f2 = "+f2);
System.out.println("f3 = "+f3);
StringBuffer s = new StringBuffer("111");
String str = s.toString();
System.out.println("str = "+str);
// 封装类也有toString方法,可以将其内容转成字符串
System.out.println("f1 = "+f1.toString());
// 封装类的parse方法,可以一步完成将字符换转化为基本数据类型
String intStr = "2147483647";
String binaryStr = "10101010101";
int maxInt = Integer.parseInt(intStr, 10);
int binaryInt = Integer.parseInt(binaryStr, 2);
System.out.println(maxInt+" "+binaryInt);
}
}
另外可以使用生成二进制字符串的方法:
public class T2 {
public static void main(String [] args) {
// 使用包装类的toBinaryString 转二进制字符串
String transferResult = Integer.toBinaryString(1000);
System.out.println(transferResult);
// 使用包装类的toHexString 转16进制字符串
String transferResult1 = Integer.toHexString(1000);
System.out.println(transferResult1);
// 使用包装类的toOctString 转8进制字符串
String transferResult2 = Integer.toOctalString(1000);
System.out.println(transferResult2);
}
}
运行结果: