基本数据类型对象包装类
基本数据类型(关键字) 引用数据类型(类)
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
基本数据类型对象包装类最常见的作用是:用于基本数据类型和字符串类型之间的转换
1、基本数据类型----------->字符串类型
String toString():返回一个表示该 Integer 值的 String 对象
static String toString(int i) : 返回一个表示指定整数的 String 对象。
static String toString(int i, int radix) :返回用第二个参数指定基数表示的第一个参数的字符串表示形式。
方式一:基本数据+"";
方式二: 基本数据类型.toString(基本数据类型值);
如:Integer.toString(34);//将整数34转换为字符串“34”。
2、字符串类型----------->基本数据类型
一、调用静态方法 :xxx a = Xxx.parseXxx(String s);
例如 int a = Integer.parseInt("123");
double d = Double.parseDouble("123.2");
boolean b = Boolean.parseboolean("true");
二、也可以先转为类,创建对象后,调用非静态方法 : int intValue() 、long longValue()
例如:Integer i = new Integer("123");
int a = i.intValue();
static int parseInt(String s):将字符串参数作为有符号的十进制整数进行解析。
static int parseInt(String s, int radix):使用第二个参数指定的基数(进制类型),将字符串参数解析为有符号的整数。也即就是其他的转换为十进制
总结: 十进制转为其他进制:
static String toBinaryString(int i)
static String toHexString(int i)
static String toOctalString(int i)
其他进制转为十进制:
static int parseInt(String s, int radix)
实例如下:
class IntegerTest
{
public static void sop(String str)
{
System.out.println(str);
}
public static void main(String[] args)
{
//获取整数型的最大值。
sop("max="+Integer.MAX_VALUE);
//获取整数型的最小值。
sop("min="+Integer.MIN_VALUE);
//获取整数型的比特位数。
sop("size="+Integer.SIZE);
//获取Integer类实例的数据类型。
sop("type="+Integer.TYPE);
//将字符串转换为基本数据类型
int sum = Integer.parseInt("123");//字符串"123"转换为整型数据123
sop("sum="+sum);//返回的数据为123
sop(Integer.toBinaryString(6));//十进制的6转为二进制数是110
sop(Integer.toHexString(60));//十进制的60转为十六进制数是3c
sop(Integer.toOctalString(12));//十进制的12转为八进制数是14
sop(""+Integer.parseInt("110",2));//二进制的110转为十进制数是6
sop(""+Integer.parseInt("3c",16));//十六进制的3c转为十进制数是60
sop(""+Integer.parseInt("14",8));//八进制的14转为十进制数是12
}
}
static Integer valueOf(int i) :返回一个表示指定的 int 值的 Integer 实例。
static Integer valueOf(String s) : 返回保存指定的 String 的值的 Integer 对象
static Integer valueOf(String s, int radix):返回一个 Integer 对象,该对象中保存了用第二个参数提供的基数进行解析时从指定的 String 中提取的值。
JDK1.5版本后出现的新特性:Integer类对象的自动装箱、自动拆箱
实例如下:
class IntegerTest1
{
public static void sop(String str)
{
System.out.println(str);
}
public static void main(String[] args)
{
method();
sop(""+Integer.valueOf("123"));//返回Integer对象123
sop(Integer.valueOf("110",2).toString());//返回Integer对象为6(十进制的6是由二进制的110转换过来的)
//Integer x = new Integer(4);
Integer x = 4; //(前提x不能为null)自动装箱,即自动将4装进了new Integer()
// 4--->new Integer()---->new Integer(4)
x = x + 2;//首先将x自动拆箱即x.intValue()变成了int类型,和2进行加法运算后,对和x再进行自动装箱
sop("x="+x);
Integer m = 128;
Integer n = 128;
sop("m==n:"+(m==n));//false,它的byte值不在-128~127之前,因此m和n指向了不同的对象
Integer a = 127;
Integer b = 127;
sop("a==b:"+(a==b));//true,因为a和b指向同一个Integer对象,当数值在byte范围内时,对于新特性,如果数值已经存在,则不会开辟新的空间
}
public static void method()
{
Integer x = new Integer("123");
Integer y = new Integer(123);
sop("x==y:"+(x==y));//比较的是对象是否相同
sop("x.equals(y):"+x.equals(y)); //复写了父类的方法,建立了自己比较相同的特有方式,它比较的是数值是否相同
}
}