首页 > 代码库 > 类型转换
类型转换
java的数据类型分为3大类,即布尔型、字符型和整数型,其中整数型又分为整形和浮点型。相对于数据类型,java的变量类型分为布尔型boolean、字符型char、整形byte、short、int、long;浮点型float,double;其中思政整形变量和浮点型变量分别对应于不同的精度和范围。此外,编程时还经常用到两种类变量String和Date.
1.数据类型转换的分类
java数据类型的转换一般分为三种,分别是简单数据类型之间的转换,字符串与其他数据类型的转换、其他实用数据类型的转换。
2.简单数据类型之间的转换
在java中,整形、实型、字符型被视为简单数据类型,这些类型精度由低到高分别为byte,char->short->int->long->float->double。简单数据类型之间的转换由可分为低级到高级的自动类型转换、高级到低级的强制类型转换、包装类过渡类型能够转换。
1.自动类型转换
低级变量可以直接转换为高级变量,这叫自动类型转换。例如,
byte b=1;
short s=b;
int i=s;
long l=i;
float f=l;
double d=f;
如果是低级类型的插入,想高精度类型转换时会转换为对应的ASSIC码值(不能自动转化为short)。
对于byte、short、char三种类型而言,它们是相同的,因此不能相互转换,可使用强制类型转换。
2.强制类型转换
将高级变量转换为地基变量时,使用强制类型转换。这种转换可能会导致溢出或者精度的下降。
3包装类过渡类型转换
Java的包装类就是可以直接将简单类型的变量表示为一个类。java中有6个包装类,分别是Boolean、Character、Integer、Long、Float、和Double,从字面上就可以对应boolean,char,int,float,double。而String和Date本身就是类,不存在包装类的概念。
1.当希望把float型转换为int类型时,
float f1 =100.00f;
Float F1 = new Float(f1);
Double d1 =F1.doubleValue();
i = Integer.parseInt([String],[int radix]);
2 如何将整数 int 转换成字串 String ?
A. 有叁种方法:
关键字 类型转换
出处
这是一个例子,说的是JAVA中数据数型的转换.供大家学习引
import java.sql.Date;
public class TypeChange {
public TypeChange() {
}
//change the string type to the int type
public static int stringToInt(String intstr)
{
Integer integer;
integer = Integer.valueOf(intstr);
return integer.intValue();
}
//change int type to the string type
public static String intToString(int value)
{
Integer integer = new Integer(value);
return integer.toString();
}
//change the string type to the float type
public static float stringToFloat(String floatstr)
{
Float floatee;
floatee = Float.valueOf(floatstr);
return floatee.floatValue();
}
//change the float type to the string type
public static String floatToString(float value)
{
Float floatee = new Float(value);
return floatee.toString();
}
//change the string type to the sqlDate type
public static java.sql.Date stringToDate(String dateStr)
{
return java.sql.Date.valueOf(dateStr);
}
//change the sqlDate type to the string type
public static String dateToString(java.sql.Date datee)
{
return datee.toString();
}
{
java.sql.Date day ;
day = TypeChange.stringToDate("2003-11-3");
String strday = TypeChange.dateToString(day);
System.out.println(strday);
}
}
JAVA中常用数据类型转换函数
虽然都能在JAVA API中找到,整理一下做个备份。
Byte static byte parseByte(String s)
Byte static String toString(byte b)
Character static String to String (char c)
Short static Short parseShort(String s)
Short static String toString(Short s)
Integer static int parseInt(String s)
Integer static String tostring(int i)
Long static long parseLong(String s)
Long static String toString(Long i)
Float static float parseFloat(String s)
Float static String toString(float f)
Double static double parseDouble(String s)
Double static String toString(Double)
++++++++++++++++++++++++++++++++++++++++++++++++++++++
数据类型
基本类型有以下四种:
int长度数据类型有:byte(8bits)、short(16bits)、int(32bits)、long(64bits)、
float长度数据类型有:单精度(32bits float)、双精度(64bits double)
boolean类型变量的取值有:ture、false
char数据类型有:unicode字符,16位
对应的类类型:Integer、Float、Boolean、Character、Double、Short、Byte、Long
转换原则
从低精度向高精度转换
byte 、short、int、long、float、double、char
注:两个char型运算时,自动转换为int型;当char与别的类型运算时,也会先自动转换为int型的,再做其它类型的自动转换
基本类型向类类型转换
正向转换:通过类包装器来new出一个新的类类型的变量
Integer a= new Integer(2);
反向转换:通过类包装器来转换
int b=a.intValue();
类类型向字符串转换
正向转换:因为每个类都是object类的子类,而所有的object类都有一个toString()函数,所以通过toString()函数来转换即可
反向转换:通过类包装器new出一个新的类类型的变量
eg1: int i=Integer.valueOf(“123”).intValue()
说明:上例是将一个字符串转化成一个Integer对象,然后再调用这个对象的intValue()方法返回其对应的int数值。
eg2: float f=Float.valueOf(“123”).floatValue()
说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。
eg3: boolean b=Boolean.valueOf(“123”).booleanValue()
说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。
eg4:double d=Double.valueOf(“123”).doubleValue()
说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。
eg5: long l=Long.valueOf(“123”).longValue()
说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。
eg6: char=Character.valueOf(“123”).charValue()
说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。
基本类型向字符串的转换
正向转换:
如:int a=12;
String b;b=a+””;
反向转换:
通过类包装器
eg1:int i=Integer.parseInt(“123”)
说明:此方法只能适用于字符串转化成整型变量
eg2: float f=Float.valueOf(“123”).floatValue()
说明:上例是将一个字符串转化成一个Float对象,然后再调用这个对象的floatValue()方法返回其对应的float数值。
eg3: boolean b=Boolean.valueOf(“123”).booleanValue()
说明:上例是将一个字符串转化成一个Boolean对象,然后再调用这个对象的booleanValue()方法返回其对应的boolean数值。
eg4:double d=Double.valueOf(“123”).doubleValue()
说明:上例是将一个字符串转化成一个Double对象,然后再调用这个对象的doubleValue()方法返回其对应的double数值。
eg5: long l=Long.valueOf(“123”).longValue()
说明:上例是将一个字符串转化成一个Long对象,然后再调用这个对象的longValue()方法返回其对应的long数值。
eg6: char=Character.valueOf(“123”).charValue()
说明:上例是将一个字符串转化成一个Character对象,然后再调用这个对象的charValue()方法返回其对应的char数值。
类型转换
Java 语言是一种强类型的语言。强类型的语言有以下几个要求:
变量或常量必须有类型:要求声明变量或常量时必须声明类型,而且只能在声明以后才能使用。
赋值时类型必须一致:值的类型必须和变量或常量的类型完全一致。
运算时类型必须一致:参与运算的数据类型必须一致才能运算。
但是在实际的使用中,经常需要在不同类型的值之间进行操作,这就需要一种新的语法来适应这种需要,这个语法就是数据类型转换。
在数值处理这部分,计算机和现实的逻辑不太一样,对于现实来说,1和 1.0 没有什么区别,但是对于计算机来说,1 是整数类型,而 1.0 是小数类型,其在内存中的存储方式以及占用的空间都不一样,所以类型转换在计算机内部是必须的。
Java 语言中的数据类型转换有两种:
自动类型转换:编译器自动完成类型转换,不需要在程序中编写代码。
强制类型转换:强制编译器进行类型转换,必须在程序中编写代码。
由于基本数据类型中 boolean 类型不是数字型,所以基本数据类型的转换是出了 boolean 类型以外的其它 7 种类型之间的转换。下面来具体介绍两种类型转换的规则、适用场合以及使用时需要注意的问题。
自动类型转换,也称隐式类型转换,是指不需要书写代码,由系统自动完成的类型转换。由于实际开发中这样的类型转换很多,所以 Java 语言在设计时,没有为该操作设计语法,而是由 JVM 自动完成。
转换规则:从存储范围小的类型到存储范围大的类型。
具体规则为:byte→short(char)→int→long→float→double
也就是说 byte 类型的变量可以自动转换为 short 类型,示例代码:
byte b = 10;
short sh = b;这里在赋值时,JVM 首先将 b 的值转换为 short 类型,然后再赋值给 sh。
在类型转换时可以跳跃。示例代码:
byte b1 = 100;int n = b1;
注意问题:在整数之间进行类型转换时,数值不发生改变,而将整数类型,特别是比较大的整数类型转换成小数类型时,由于存储方式不同,有可能存在数据精度的损失。
强制类型转换,也称显式类型转换,是指必须书写代码才能完成的类型转换。该类类型转换很可能存在精度的损失,所以必须书写相应的代码,并且能够忍受该种损失时才进行该类型的转换。
转换规则:从存储范围大的类型到存储范围小的类型。
具体规则为:double→float→long→int→short(char)→byte
语法格式为:(转换到的类型)需要转换的值
示例代码:
double d = 3.10;int n = (int)d;
这里将 double 类型的变量 d 强制转换成 int 类型,然后赋值给变量 n。需要说明的是小数强制转换为整数,采用的是“去 1 法”,也就是无条件的舍弃小数点的所有数字,则以上转换出的结果是 3。整数强制转换为整数时取数字的低位,例如 int 类型的变量转换为 byte 类型时,则只去 int 类型的低 8 位(也就是最后一个字节)的值。
示例代码:
int n = 123;byte b = (byte)n;int m = 1234;byte b1 = (byte)m;
则 b 的值还是 123,而 b1 的值为-46。b1 的计算方法如下:m 的值转换为二进制是10011010010,取该数字低8位的值作为b1的值,则b1的二进制值是11010010,按照机器数的规定,最高位是符号位,1 代表负数,在计算机中负数存储的是补码,则该负数的原码是 10101110,该值就是十进制的-46。
注意问题:强制类型转换通常都会存储精度的损失,所以使用时需要谨慎。