基本数据类型对象包装类

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

13,基本数据类型对象包装类

13.1 基本数据类型包装类

java中,有8种基本数据类型,分别是:byteshortintlongfloatdoublebooleanchar,为了方便对基本数据类型值得操作,Java以面向对象的思想对这8种基本数据类型进行了对象的封装。用于描述基本数据类型的类就是基本数据类型对象包装类。

如:

基本数据类型

byte

short

int

long

float

double

boolean

char

对应的包装类

Byte

Short

Integer

Long

Float

Double

Boolean

Character

 

这些对象中封装了,字符和基本数据类型互转的方法,以及整数不同进制的互相转换的方法.

1,基本数据类型转成字符串

可以使用String类的静态方法valueOf().

如:

public class Demo{

   public static void main(String[]args){

      Demo_1();

   }

   private static void Demo_1() {

      String str1=String.valueOf(10);//int类型

      String str2=String.valueOf(true);//boolean类型

      String str3=String.valueOf('c');//char类型

      String str4=String.valueOf(2.3f);//float类型

      String str5=String.valueOf(2.300);//double类型

      System.out.println(str1);

      System.out.println(str2);

      System.out.println(str3);

      System.out.println(str4);

      System.out.println(str5);

   }     

}

/*

打印结果:

10

true

c

2.3

2.3

*/


 

在这几个包装类中,除了Character类,其他几个基本数据类型对象包装类都具有:parseXXX(“被转换的字符串”),这样的一个静态方法.比如,Integer类中的parseInt().这是能将字符串转成基本数据类型的方法.

注意:被转换的字符串必须要能与转换的类型相匹配.否则,会抛出:NumberFormatException.异常

如:

public class Demo{

   public static void main(String[]args){

      Demo_2();

   }

   public static void Demo_2() {

      int i=Integer.parseInt("a");//这里的字符串必须是十进制整数

   }

}

/* 

Exception in thread "main" java.lang.NumberFormatException: For input string: "a"

      at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

      at java.lang.Integer.parseInt(Integer.java:492)

      at java.lang.Integer.parseInt(Integer.java:527)

      at 字符串类.Demo.Demo_2(Demo.java:8)

      at 字符串类.Demo.main(Demo.java:4)

*/


 

2.字符串转成基本数据类型

如:

public class Demo{

   public static void main(String[]args){

      Demo_2();

   }

   public static void Demo_2() {

      byte b=Byte.parseByte("127");

      System.out.println(b);

      short s=Short.parseShort("32767");

      System.out.println(s);

      int i=Integer.parseInt("1000");

      System.out.println(i);

      long l=Long.parseLong("1000");

      System.out.println(l);

      float f=Float.parseFloat("3.4");

      System.out.println(f);

      double d=Double.parseDouble(Double.MAX_VALUE);

      System.out.println(d);

      boolean bl=Boolean.parseBoolean("true");

      System.out.println(bl);

      

   }

}

/*

 结果:

127

32767

1000

1000

3.4

1.3

true

*/

 

3.整数间进制的互转

(1),十进制转成二进制,八进制,十六进制数的字符串形式.

可以使用Integer类中的静态方法,toBinaryString(),toOctalString(),toHexString().

如:

public class Demo {

   public static void main(String[] args) {

      Demo_1();

   }

 

   public static void Demo_1() {

      System.out.println(Integer.toBinaryString(10));//10转成二进制:1010

      System.out.println(Integer.toOctalString(10));//10转成八进制:12(为了和十进制区分开前面加0)

      System.out.println(Integer.toHexString(10));//10转成十六进制:a(为了和十进制区分开前面加0X)

   }

}


 

(2) 二进制,八进制,十六进制数转十进制数

用Integer类中的静态方法:parseInt(String s,int radix);字符串是被转换的数,radix代表字符串所表示的是什么进制的数.

也可以使用,String类中的toString(int i,int radix);用指定的radix(进制)来表示i整数的字符串形式.

如:

public class Demo {

   public static void main(String[] args) {

      Demo_1();

   }

   public static void Demo_1() {

      int a=Integer.parseInt("A", 16);//把一个十六进制A,转换成十进制数.

      System.out.println("A的十进制数是:"+a);//A的十进制数是:10

      int b=Integer.parseInt("1010", 2);//把二进制数1010,转成十进制数.

      System.out.println("1010的十进制数是:"+b);//1010的十进制数是:10

      int c=Integer.parseInt("010", 8);//把八进制数10,转成十进制数.

      System.out.println("010的八进制数是"+c);//010的八进制数是8

   }

}


 

 

13.JDK1.5基本数据类型包装类的自动装箱和拆箱.

自动装箱:就是把基本数据类型值,

如:Integer i=100;(相当于,Integer i=new Integer(100));

自动拆箱:当基本数据类型值和引用数据类型值进行运算,就要拆箱.

如:

       Integer i=100;//自动装箱(相当于,Integer i=new Integer(100)Integer i=Integer.valueOf(100)).

         int a=i+1;//自动拆箱(相当于,int a=i.intValue()+1)

         System.out.print(a);

//结果:101

jdk 1.5的自动装箱和自动拆箱,目的是简化书写.

 

注意:对于Byte,Short,Integer,Long这四个包装类来说,一个字节取值范围(-128~127)内的自动装箱,他们是相等的

如:

public class Demo {

   public static void main(String[] args) {

      Demo_1();

   }

 

   public static void Demo_1() {

      Byte b1=127;

      Byte b2=127;

      System.out.println(b1==b2);//true

      Short s1=127;

      Short s2=127;

      System.out.println(s1==s2);//true

      Integer i1=127;

      Integer i2=127;

      System.out.println(i1==i2);//true

      Long l1=127l;

      Long l2=127l;

      System.out.println(l1==l2);//true

   }

}


 

注意:当引用类型和基本数据类型用==判断时,引用类型会自动拆箱,此时比较的是内容而不是地址.

如:

public class Demo {

   public static void main(String[] args) {

      Demo_1();

   }

   public static void Demo_1() {

      Byte b1=127;

      Byte b2=127;

      System.out.println(b1==b2);//true

      System.out.println(b1==127);//当引用类型和基本数据类型用==判断时,引用类型会自动拆箱.比较内容.所以是true.

      System.out.println(b2==127);//当引用类型和基本数据类型用==判断时,引用类型会自动拆箱.比较内容.所以是true.   

   }

}

/*

System.out.println(b1==127);

相当于:System.out.println(b1.intValue()==127);

System.out.println(b2==127);

相当于:

System.out.println(b2.intValue()==127);

*/


 

 

 

 

 

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值