Java中的基本数据模型的转换

来源:互联网 发布:linux知识点总结 编辑:程序博客网 时间:2024/06/13 05:16

  Java中的基本数据模型的转换

 

   在复习过String类之后,java中的 基本数据模型有一定的积累了,而实际运用中,总会有将某个数据类型转换为另外一个数据的需要。因此,在实际开发中我们需要熟练掌握这些基本的转换。

下面先看一张基本的转换图


这些转换有时候非常灵活,还是先上代码:

实例1:

package cn.com.basicSix;/** * 数据类型的转换1 * @author fcs * */public class DataTransfor {public static void main(String[] args) {//1.基本数据类型------>String(实际上是一种隐式转换)int a = 1;char b = '2';float f = 3f;long l = 90l;String abfl = ""+a+b+f+l;  //第一种方式System.out.println("abfl = "+abfl +"\n");String abfl2 = String.valueOf(a)+String.valueOf(f)+String.valueOf(l); //第二种方式System.out.println("abfl2 = "+abfl2+"\n");//2.String------>(Integer)等封装数据类型String s1 = "3";String s2 = "34.902";//Integer i =(Integer)s1;Integer Int = Integer.parseInt(s1);  //第一种方式 返回int类型,Integer Int2 = Integer.valueOf(s1);  //第二种方式 返回Integer封装类型Integer is = new Integer("3");       //第三种方式 使用构造方法System.out.println("is  = "+is );System.out.println(Int instanceof Integer);System.out.println("Int = "+Int+" Int2 = "+Int2+"\n");Double  Dou = Double.parseDouble(s2);Double  Dou2 = Double.valueOf(s2);System.out.println("Dou = "+Dou+" Dou2 = "+Dou2+"\n"); //3.(Integer)等封装数据类型------>基本数据类型(实际上是一种隐式转换,就是封装类型进行拆箱操作,//此时不作为封装类型,而是基本数据类型)Integer Int3 = 30;Double  Dou3 = 343.9092;int int3 = Int3;double dou4 = Dou3;//System.out.println(int3 instanceof Integer); System.out.println("int3 = "+int3+" dou4 = "+dou4+"\n");//4.String----->基本数据类型(是通过封装类型进行转换的)String s3 = "2324";String s4 = "2324.2324";int int4 = Integer.parseInt(s3);double dou5 = Double.parseDouble(s4);System.out.println("int4 = "+int4+" dou5 = "+dou5+"\n");//5.基本数据类型------->封装类型(封装类型的装箱操作)//说明:基本数据类型和封装类型的相互转换可以直接进行,当构造封装数据类型的时候,可以使用构造方法进行转换。//当数据类型大的转封装类型小的情况出现时,会有强制类型转换,此时有精度损失。char x=  'x';int int5 = 6;double dou6 = 34.223;Character ch = x;Integer Int6  =int5;//这里会有精度损失,所以需要进行强制类型转换Short s = new Short((short) 34);   Byte by = new Byte((byte)12);System.out.println("ch = "+ch+" Int6 = "+Int6+" dou7"+"\n");//6.封装数据类型----->String类型,使用重写Object的toString方法进行转换//说明:封装数据类型和String类型的相互转换不能使用强制类型转换方式Integer Int7 = 34;Double Dou7 = 2424.2424;String s5 = Int7.toString();String s6 = Dou7.toString();      String s7 = Dou7+””;//String s6 = (String)Dou7;System.out.println("s5 = "+s5+" s6 = "+s6);}}

现在做点总结吧

 

1.基本数据类型 ---------->String类型

第一种方式:可以将基本数据类型加上””,这个空字符串,自动转换成字符串类型,是一种拼接形式,使用隐式转换方式。

第二种方式可以使用String.valueOf(基本数据类型)进行转换。推荐使用第一种方式。

 

 

 

2.String 类型------------>基本数据类型

   这里注意String到基本数据类型并不能直接转换,而是通过封装类型转换的,

   比如String  a =  “1”;

   如果返回一个int类型的1则,需要int i = Integer.parseInt(a);

 

3.封装类型 ---------->基本数据类型 

4.基本数据类型--------->封装类型

  这里把这两种转换类型放在一起,是因为java提供了自动装箱和自动拆箱机制。

  所谓装箱:把基本类型用它们相对应的引用类型包装起来,使它们具有对象的特性,

拆箱则是相反的,将Integer,Double等这样的引用类型的对象重新简化为值类型的数据。

Java  SE5.0后提供了这样的机制,这种转换实际上是通过编译器完成的。

所以可以直接进行转换。下面会给出详细的解释。

比如Integer in = 10;

Int i=in;

或者:

Integer  in = new Integer(100); //使用构造方法

而对byte和short这种短的数据类型则

需要进行强制转换,否则装不下Integer等大的数据类型。

Byte  b = new Byte((byte)123);

Short  s = new Short((short) 13424);

 

5.String类型--------->封装类型

有三种转换方式

   1.String a = “23”;

Integer ai = Integer.parseInt(a);

   2.String a = “23”;

Integer ai = Integer.valueOf(a);

1,2两种方式的实现机制是不一样的1是通过将字符串分解为一个个的字符进行数字转换2则是通过一个封装对象缓冲池来进行转换。具体参见JDK源码。

  3.使用构造方法;

注意如果转换的是字符的话则会报错

Integer  a1 = new Integer(“23”);

 

6.封装类型 --------->String类型

有两种方法就是通过封装数据类型从Object继承来的toString()方法可以完成这种转换。

Integera2 = 232;

Stringas = a2.toString();

 

这里还有一个字符类型没有说到。

这里转换比较特殊

String字符串底层是字符数组,这就为了将String  ---->与字符等相互联系起来。

,注意下图没有string------>Character的转换


实例代码2:package cn.com.basicSix;/** * 数据类型的转换2 * @author fcs * */public class DataTransfor2 {    public static void main(String[] args) {//1.string------>char    String str = "asdaklaf";    //转换为字符数组    char [] charArray  = str.toCharArray();     for (char c : charArray) {    System.out.println(c);}        //2.char  ----->string    char c = 'c';    String str1 = String.valueOf(c);      String str2 = c + "";       char carray []={'a','b'};    String str3 = carray.toString();    String str4 = String.valueOf(carray);        //3.char ----->Character    char c1 = 'c';    Character ch = c1;    Character ch1 = new Character(c1);    Character ch2 = Character.valueOf(c1);      //4.Character ------>char    Character ch3 = '2';    char  c2 = ch3;        //5.String ----->Character         //没有转换        //6.Character ----->String    Character ch4 = 'k';    String str5 = ch4+"";    String str6 = ch4.toString();}}

关于自动拆箱和自动装箱这里摘抄自CSDN博主曹胜欢的一篇博文,讲解得比较清晰,因而就“拿来主义”了。

public static void main(String[] args) {Integer a=100;Integer b=100;Integer c=200;Integer d=200;System.out.println(a==b); //1System.out.println(a==100); //2System.out.println(c==d); //3System.out.println(c==200); //4}


0 0