疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

Java数据类型之间的转换


 

 
这是我写的第一篇笔记,自己会不定时更新内容中有问题的地方,也希望大家多多指正.共同进步!
 
一 基本的数据类型
 
基本的数据类型有一下四种:
 
  1> int 长度数据类型有: byte(8bits),short(16btis), int(32bits) ,long(64bits);
 
  2>float 长度数据类型有:单精度(32bits float) ,双精度(64bits double) ,Java中将小数默认为double类型,若要定义为float需要在后面用f声明;
 
  3>boolean 类型变量的取值有:ture, false;
 
  4>char数据类型有:unicode字符,16位
 
基本数据类型:int,float,boolean,char,double,short,byte,long,
 
对应的封装类型:Integer,Float,Boolean,Character,Double,Short,Byte,Long
 
 二 数据类型之间的转换情况
 
分为以下几情况:
 
  1> 低级到高级的自动升级类型转换;
 
  2> 高级到低级的强制类型转换(会导致溢出或者丢失精度);
 
  3> 基本类型向类类型(封装类型)转换;
 
  4> 基本类型向字符串的转换;
 
  5> 类类型向字符串转换;
 
三 基本数据类型之间的转换规则
 
  1.在一个双操作数以及位运算等算术运算式中,会根据操作数的类型将低级的数据类型自动转换位高级的数据类型,分为以下几种情况:
 
  1>只要两个操作数中有一个是double类型的,另一个将会被转换成double类型,并且结果也是double类型;
 
  2>只要两个操作数中有一个是float类型的,另一个将会被转换成float类型,并且结果也是float类型;
 
  3>只要两个操作数中有一个是long类型的,另一个将会被转换成long类型,并且结果也是long类型;
 
  4>两个操作数(包括byte,short,int,char)都会被转换成int类型,并且结果也是int类型;
 
  2.如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,再做其他类型的自动转换.
 
  3.对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换.
 
  4.不能在布尔值和任何数字类型间强制类型转换.
 
  5.不同级别数据类型间的强制转换,可能会导致溢出或精度的下降.
 
  6.当字节类型变量参与运算,Java作自动数据运算类型的提升,将其转换为int类型.如:
 
  int b7 =5;
  byte b8= (byte) ((byte)b7*3);
 
  四.包装数据类型与基本数据类型之间的转换
 
  简单类型的变量转换为相应的包装类,可以利用包装类的构造函数.
 
  Boolean(boolean value) , Character(char value),Integer(int value),Long(long value),Float(float value),Double(double value)
 
  而在各个包装类中,总有形为xxValue()的方法,来得到其对应的简单类型数据.利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实例类,intValue()可以得到其对应的整型变量.
 
  1.字符串与其他类型间的转换
 
  1>其他类型向字符串的转换
 
 
    调用类的串转换方法:X.toString();
 
    自动转换:X+" " ;
 
    使用String的方法:String.valueOf(X);
 
  2>字符串作为值,向其他类型的转换
 
    先转换成相应的封装器实例,再调用对应的方法转换成其他类型,如:double d = Double.valueOf(31.1);
    
 
    静态parseXXX方法
 
    String s = "1";
    byte b = Byte.parseByte( s );
    short t = Short.parseShort( s );
    int i = Integer.parseInt( s );
    long l = Long.parseLong( s );
    Float f = Float.parseFloat( s );
    Double d = Double.parseDouble( s );
 
 
 
    Character的getNumericValue(char ch)---->把char类型的数据转换成int类型
 
  五,转换实例
 
  1.基本类型间的转换
 
  正向转换:通过类包装器来new出一个新的类类型的变量
 
  Integer a = new Integer(2);
 
  反向转换:通过类包装器来转换
 
  int b = a.intValue();
 
  通过类包装器-->基本数据类型
 
  ps1:int i = Integer.parseInt("123");
 
  说明:此方法只能适用于字符串转化成整型变量
 
  ps2: float f = Float.valueOf("123").floatValue();
 
  说明:上例是讲一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值.
 
  ps3: boolean b = Boolean.valueOf("123").booleanValue();
 
  说明:上例是将一个字符串转化成一个boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的blooean数值.
 
  ps4:double d = Double.valueOf("123").doubleValue();
 
  说明:将一个字符串转换成一个double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值
 
  ps5: long l = Long.valueOf("123").longValue();
 
  说明:将一个字符串转换成一个long对象,然后再调用这个对象的longValue()方法返回其对应的long数值.
 
  ps6:char = Character.valueOf("123").cahrValue()
 
  说明:将一个字符串转换成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值.
 
  2 基本类型向字符串的转化
 
  正向转换:
 
  System.out.println("1"+2+3);-->123 转化成字符串操作
  System.out.println(2+3);-->5  不存在转化
 
  System.out.println(2+3+"1");-->51  前两个数值相加后,拼接后面的字符串
 
  3 类类型向字符串转换
 
  正向转换:因为每个类都是object类的子类,而所有的object类都有一个toString()函数,所以通过toString()函数来转换即可
 
  反向转换:通过类包装器new出一个新的类类型的变量
 
  int i = Integer.valueOf("123").intValue()
 
  float f = Float.valueOf("123").floatValue()
 
  boolean b = Boolean.valueOf("123").booleanValue()
 
  double d = Double.valueOf("123").doubleValue();
 
  long l = Long.valueOf("123").longValue()
 
  char c = Character.valueOf("123").charValue()
 
  说明:将一个字符串转化成一个Character对象,然后调用这个对象的charvalue()方法返回其对应的char数值