- 浏览: 83032 次
- 性别:
- 来自: 上海
文章分类
最新评论
小议JAVA数据类型间的相互转换
一些初学JAVA的朋友可能会遇到JAVA的数据类型之间转换的苦恼,例如,整数和float,double型之间的转换,整数和String类型之间的转换,以及处理、显示时间方面的问题等。下面笔者就开发中的一些体会介绍给大家。
我们知道,Java的数据类型分为三大类,即布尔型、字符型和数值型,而其中数值型又分为整型和浮点型;相对于数据类型,Java的变量类型为布尔型boolean;字符型char;整型byte、short、int、long;浮点型float、double。其中四种整型变量和两种浮点型变量分别对应于不同的精度和范围。此外,我们还经常用到两种类变量,即String和Date。对于这些变量类型之间的相互转换在我们编程中经常要用到,在下面的论述中,我们将阐述如何实现这些转换。
1 数据类型转换的种类
java数据类型的转换一般分三种,分别是:
(1). 简单数据类型之间的转换
(2). 字符串与其它数据类型的转换
(3). 其它实用数据类型转换
下面我们对这三种类型转换分别进行论述。
2 简单数据类型之间的转换
在Java中整型、实型、字符型被视为简单数据类型,这些类型由低级到高级分别为
(byte,short,char)--int--long--float--double
简单数据类型之间的转换又可以分为:
●低级到高级的自动类型转换
●高级到低级的强制类型转换
●包装类过渡类型能够转换
2.1自动类型转换
低级变量可以直接转换为高级变量,笔者称之为自动类型转换,例如,下面的语句可以在Java中直接通过:
--------------------------------------------------------------------------------
byte b;int i=b;long l=b;float f=b;double d=b;
--------------------------------------------------------------------------------
如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如
--------------------------------------------------------------------------------
char c='c'; int i=c; System.out.println("output:"+i);
--------------------------------------------------------------------------------
输出:output:99;
对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。
--------------------------------------------------------------------------------
short i=99;char c=(char)i;System.out.println("output:"+c);
--------------------------------------------------------------------------------
输出:output:c;
但根据笔者的经验,byte,short,int三种类型都是整型,因此如果操作整型数据时,最好统一使用int型。
2.2强制类型转换
将高级变量转换为低级变量时,情况会复杂一些,你可以使用强制类型转换。即你必须采用下面这种语句格式:
--------------------------------------------------------------------------------
int i=99;byte b=(byte)i;char c=(char)i;float f=(float)i;
--------------------------------------------------------------------------------
可以想象,这种转换肯定可能会导致溢出或精度的下降,因此笔者并不推荐使用这种转换。
2.3包装类过渡类型转换
在我们讨论其它变量类型之间的相互转换时,我们需要了解一下Java的包装类,所谓包装类,就是可以直接将简单类型的变量表示为一个类,在执行变量类型的相互转换时,我们会大量使用这些包装类。Java共有六个包装类,分别是Boolean、Character、Integer、Long、Float和Double,从字面上我们就可以看出它们分别对应于 boolean、char、int、long、float和double。而String和Date本身就是类。所以也就不存在什么包装类的概念了。
在进行简单数据类型之间的转换(自动转换或强制转换)时,我们总是可以利用包装类进行中间过渡。
一般情况下,我们首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。例如:
例1,当希望把float型转换为double型时:
--------------------------------------------------------------------------------
float f1=100.00f; Float F1=new float(f1); Double d1=F1.doubleValue();//F1.doubleValue()为Float类的返回double值型的方法
--------------------------------------------------------------------------------
当希望把double型转换为int型时:
--------------------------------------------------------------------------------
double d1=100.00; Double D1=new Double(d1); int i1=D1.intValue();
--------------------------------------------------------------------------------
当希望把int型转换为double型时,自动转换:
--------------------------------------------------------------------------------
int i1=200; double d1=i1;
--------------------------------------------------------------------------------
简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:
Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value)
而在各个包装类中,总有形为××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。
3 字符串型与其它数据类型的转换
通过查阅类库中各个类提供的成员方法可以看到,几乎从java.lang.Object类派生的所有类提供了toString()方法,即将该类转换为字符串。例如:Characrer,Integer,Float,Double,Boolean,Short等类的toString()方法toString()方法用于将字符、整数、浮点数、双精度数、逻辑数、短整型等类转换为字符串。如下所示:
--------------------------------------------------------------------------------
int i1=10;float f1=3.14f;double d1=3.1415926;Integer I1=new Integer(i1);//生成Integer类Float F1=new Float(f1); //生成Float类Double D1=new Double(d1); //生成Double类//分别调用包装类的toString()方法转换为字符串String si1=I1.toString();String sf1=F1.toString();String sd1=D1.toString();Sysytem.out.println("si1"+si1);Sysytem.out.println("sf1"+sf1);Sysytem.out.println("sd1"+sd1);
--------------------------------------------------------------------------------
五、将字符型直接做为数值转换为其它数据类型
将字符型变量转换为数值型变量实际上有两种对应关系,在我们在第一部分所说的那种转换中,实际上是将其转换成对应的ASCII码,但是我们有时还需要另一种转换关系,例如,'1'就是指的数值1,而不是其ASCII码,对于这种转换,我们可以使用Character的getNumericValue(char ch)方法。
六、Date类与其它数据类型的相互转换
整型和Date类之间并不存在直接的对应关系,只是你可以使用int型为分别表示年、月、日、时、分、秒,这样就在两者之间建立了一个对应关系,在作这种转换时,你可以使用Date类构造函数的三种形式:
Date(int year, int month, int date):以int型表示年、月、日
Date(int year, int month, int date, int hrs, int min):以int型表示年、月、日、时、分
Date(int year, int month, int date, int hrs, int min, int sec):以int型表示年、月、日、时、分、秒
在长整型和Date类之间有一个很有趣的对应关系,就是将一个时间表示为距离格林尼治标准时间1970年1月1日0时0分0秒的毫秒数。对于这种对应关系,Date类也有其相应的构造函数:Date(long date)
获取Date类中的年、月、日、时、分、秒以及星期你可以使用Date类的getYear()、getMonth()、getDate()、getHours()、getMinutes()、getSeconds()、getDay()方法,你也可以将其理解为将Date类转换成int。
而Date类的getTime()方法可以得到我们前面所说的一个时间对应的长整型数,与包装类一样,Date类也有一个toString()方法可以将其转换为String类。
有时我们希望得到Date的特定格式,例如20020324,我们可以使用以下方法,首先在文件开始引入,
--------------------------------------------------------------------------------
import java.text.SimpleDateFormat;import java.util.*;java.util.Date date = new java.util.Date();//如果希望得到YYYYMMDD的格式SimpleDateFormat sy1=new SimpleDateFormat("yyyyMMDD");String dateFormat=sy1.format(date);//如果希望分开得到年,月,日SimpleDateFormat sy=new SimpleDateFormat("yyyy");SimpleDateFormat sm=new SimpleDateFormat("MM");SimpleDateFormat sd=new SimpleDateFormat("dd");String syear=sy.format(date);String smon=sm.format(date);String sday=sd.format(date);
--------------------------------------------------------------------------------
结束语:
当然,笔者的论述只是一人之见,如果希望更多了解有关JAVA数据类型转换的知识,笔者建议参考JAVA类库java.util.*下面的
Integer类
Boolean类
Character类
Float类
Double类
String类
Date类
根据自己的需要,参考不同类的各种成员方法进行数据类型之间的转换。
大家可以参考JAVA的网上类库或下载一份,来更灵活的利用其中的成员方法进行数据类型之间的转换,IP地址:http://java.sun.com/j2se/1.3/docs/api/index.html
一些初学JAVA的朋友可能会遇到JAVA的数据类型之间转换的苦恼,例如,整数和float,double型之间的转换,整数和String类型之间的转换,以及处理、显示时间方面的问题等。下面笔者就开发中的一些体会介绍给大家。
我们知道,Java的数据类型分为三大类,即布尔型、字符型和数值型,而其中数值型又分为整型和浮点型;相对于数据类型,Java的变量类型为布尔型boolean;字符型char;整型byte、short、int、long;浮点型float、double。其中四种整型变量和两种浮点型变量分别对应于不同的精度和范围。此外,我们还经常用到两种类变量,即String和Date。对于这些变量类型之间的相互转换在我们编程中经常要用到,在下面的论述中,我们将阐述如何实现这些转换。
1 数据类型转换的种类
java数据类型的转换一般分三种,分别是:
(1). 简单数据类型之间的转换
(2). 字符串与其它数据类型的转换
(3). 其它实用数据类型转换
下面我们对这三种类型转换分别进行论述。
2 简单数据类型之间的转换
在Java中整型、实型、字符型被视为简单数据类型,这些类型由低级到高级分别为
(byte,short,char)--int--long--float--double
简单数据类型之间的转换又可以分为:
●低级到高级的自动类型转换
●高级到低级的强制类型转换
●包装类过渡类型能够转换
2.1自动类型转换
低级变量可以直接转换为高级变量,笔者称之为自动类型转换,例如,下面的语句可以在Java中直接通过:
--------------------------------------------------------------------------------
byte b;int i=b;long l=b;float f=b;double d=b;
--------------------------------------------------------------------------------
如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值,例如
--------------------------------------------------------------------------------
char c='c'; int i=c; System.out.println("output:"+i);
--------------------------------------------------------------------------------
输出:output:99;
对于byte,short,char三种类型而言,他们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换。
--------------------------------------------------------------------------------
short i=99;char c=(char)i;System.out.println("output:"+c);
--------------------------------------------------------------------------------
输出:output:c;
但根据笔者的经验,byte,short,int三种类型都是整型,因此如果操作整型数据时,最好统一使用int型。
2.2强制类型转换
将高级变量转换为低级变量时,情况会复杂一些,你可以使用强制类型转换。即你必须采用下面这种语句格式:
--------------------------------------------------------------------------------
int i=99;byte b=(byte)i;char c=(char)i;float f=(float)i;
--------------------------------------------------------------------------------
可以想象,这种转换肯定可能会导致溢出或精度的下降,因此笔者并不推荐使用这种转换。
2.3包装类过渡类型转换
在我们讨论其它变量类型之间的相互转换时,我们需要了解一下Java的包装类,所谓包装类,就是可以直接将简单类型的变量表示为一个类,在执行变量类型的相互转换时,我们会大量使用这些包装类。Java共有六个包装类,分别是Boolean、Character、Integer、Long、Float和Double,从字面上我们就可以看出它们分别对应于 boolean、char、int、long、float和double。而String和Date本身就是类。所以也就不存在什么包装类的概念了。
在进行简单数据类型之间的转换(自动转换或强制转换)时,我们总是可以利用包装类进行中间过渡。
一般情况下,我们首先声明一个变量,然后生成一个对应的包装类,就可以利用包装类的各种方法进行类型转换了。例如:
例1,当希望把float型转换为double型时:
--------------------------------------------------------------------------------
float f1=100.00f; Float F1=new float(f1); Double d1=F1.doubleValue();//F1.doubleValue()为Float类的返回double值型的方法
--------------------------------------------------------------------------------
当希望把double型转换为int型时:
--------------------------------------------------------------------------------
double d1=100.00; Double D1=new Double(d1); int i1=D1.intValue();
--------------------------------------------------------------------------------
当希望把int型转换为double型时,自动转换:
--------------------------------------------------------------------------------
int i1=200; double d1=i1;
--------------------------------------------------------------------------------
简单类型的变量转换为相应的包装类,可以利用包装类的构造函数。即:
Boolean(boolean value)、Character(char value)、Integer(int value)、Long(long value)、Float(float value)、Double(double value)
而在各个包装类中,总有形为××Value()的方法,来得到其对应的简单类型数据。利用这种方法,也可以实现不同数值型变量间的转换,例如,对于一个双精度实型类,intValue()可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。
3 字符串型与其它数据类型的转换
通过查阅类库中各个类提供的成员方法可以看到,几乎从java.lang.Object类派生的所有类提供了toString()方法,即将该类转换为字符串。例如:Characrer,Integer,Float,Double,Boolean,Short等类的toString()方法toString()方法用于将字符、整数、浮点数、双精度数、逻辑数、短整型等类转换为字符串。如下所示:
--------------------------------------------------------------------------------
int i1=10;float f1=3.14f;double d1=3.1415926;Integer I1=new Integer(i1);//生成Integer类Float F1=new Float(f1); //生成Float类Double D1=new Double(d1); //生成Double类//分别调用包装类的toString()方法转换为字符串String si1=I1.toString();String sf1=F1.toString();String sd1=D1.toString();Sysytem.out.println("si1"+si1);Sysytem.out.println("sf1"+sf1);Sysytem.out.println("sd1"+sd1);
--------------------------------------------------------------------------------
五、将字符型直接做为数值转换为其它数据类型
将字符型变量转换为数值型变量实际上有两种对应关系,在我们在第一部分所说的那种转换中,实际上是将其转换成对应的ASCII码,但是我们有时还需要另一种转换关系,例如,'1'就是指的数值1,而不是其ASCII码,对于这种转换,我们可以使用Character的getNumericValue(char ch)方法。
六、Date类与其它数据类型的相互转换
整型和Date类之间并不存在直接的对应关系,只是你可以使用int型为分别表示年、月、日、时、分、秒,这样就在两者之间建立了一个对应关系,在作这种转换时,你可以使用Date类构造函数的三种形式:
Date(int year, int month, int date):以int型表示年、月、日
Date(int year, int month, int date, int hrs, int min):以int型表示年、月、日、时、分
Date(int year, int month, int date, int hrs, int min, int sec):以int型表示年、月、日、时、分、秒
在长整型和Date类之间有一个很有趣的对应关系,就是将一个时间表示为距离格林尼治标准时间1970年1月1日0时0分0秒的毫秒数。对于这种对应关系,Date类也有其相应的构造函数:Date(long date)
获取Date类中的年、月、日、时、分、秒以及星期你可以使用Date类的getYear()、getMonth()、getDate()、getHours()、getMinutes()、getSeconds()、getDay()方法,你也可以将其理解为将Date类转换成int。
而Date类的getTime()方法可以得到我们前面所说的一个时间对应的长整型数,与包装类一样,Date类也有一个toString()方法可以将其转换为String类。
有时我们希望得到Date的特定格式,例如20020324,我们可以使用以下方法,首先在文件开始引入,
--------------------------------------------------------------------------------
import java.text.SimpleDateFormat;import java.util.*;java.util.Date date = new java.util.Date();//如果希望得到YYYYMMDD的格式SimpleDateFormat sy1=new SimpleDateFormat("yyyyMMDD");String dateFormat=sy1.format(date);//如果希望分开得到年,月,日SimpleDateFormat sy=new SimpleDateFormat("yyyy");SimpleDateFormat sm=new SimpleDateFormat("MM");SimpleDateFormat sd=new SimpleDateFormat("dd");String syear=sy.format(date);String smon=sm.format(date);String sday=sd.format(date);
--------------------------------------------------------------------------------
结束语:
当然,笔者的论述只是一人之见,如果希望更多了解有关JAVA数据类型转换的知识,笔者建议参考JAVA类库java.util.*下面的
Integer类
Boolean类
Character类
Float类
Double类
String类
Date类
根据自己的需要,参考不同类的各种成员方法进行数据类型之间的转换。
大家可以参考JAVA的网上类库或下载一份,来更灵活的利用其中的成员方法进行数据类型之间的转换,IP地址:http://java.sun.com/j2se/1.3/docs/api/index.html
发表评论
-
SSO原理机制
2017-04-07 16:07 541一、单系统登录机制 1、http无状态协议 web ... -
Java开发规范
2017-03-16 10:45 585元数据起始 重要: 每次提交代码前,一定要使 ... -
java识别当前设备类型
2015-08-12 12:24 1655package com.tgb.util; impo ... -
JVM原理
2014-10-10 09:46 612JVM原理 JVM 原理解释 ... -
ldap java api
2013-11-11 10:41 2035从JDK5.0开始,对LDAP协议的数据访问操作就被集成在 ... -
java程序运行cmd命令
2011-12-06 10:48 1132public class Test { public st ... -
java正则表达式入门
2011-12-04 15:28 877java正则表达式入门 众所周知,在程 ... -
用JAVA刺穿LDAP (一)-- java添加AD用户
2011-11-09 14:20 3299//建立LDAP服务器的连接 package com ... -
使用java技术将Excel表格内容导入mysql数据库
2011-09-24 20:22 10711、添加POI jar包到项目的lib目录下2、Exce ... -
Eclipse快捷键-方便查找
2011-09-02 00:27 675【Ct rl+T】 搜索当前接口的实现类 1. 【 ... -
JSP C标签
2010-12-22 14:13 1064核心标签库 它是JSTL中的核心库,为日常任务提供通用 ... -
JSP C标签
2010-12-22 13:52 1058从JSP 1.1规范开始,JSP就支持在JSP中使用自定 ... -
JSP EL语言
2010-12-21 11:15 757一、JSP EL语言定义 E L(Expre ... -
Myeclipse6.5下使用XFire开发WebService的简单例子
2010-12-18 18:22 897一,创建服务并发布: 1.新建一webservice项目(或 ... -
基于AXIS的web service项目环境搭建
2010-12-18 18:12 1509一.Web服务 Web服务是一种新型的Web应用程序。不同于 ... -
Web service是什么?
2010-11-28 19:41 710我认为,下一代互联网软件将建立在Web service(也 ... -
Java事务处理总结
2010-11-02 09:19 691一、什么是Java事务 通常的观念认为,事务仅与数据库相关。 ... -
Ubuntu安装JDK配置Tomcat服务
2010-10-15 15:43 1174Ubuntu安装JDK配置Tomcat服 ... -
MyEclipse 代码提示卡死之终极优化
2010-10-12 10:18 960大多数javaman在使用myeclipse的过程中都遇到过代 ... -
struts 线程安全问题
2010-09-28 16:28 952Struts Action的线程安全问题 文章分类:Java ...
相关推荐
要使用 `json-lib` 实现 JSON 与 Java 对象的互转,首先需要在项目中引入该库。如果你使用的是 Maven,可以在 `pom.xml` 文件中添加如下依赖: ```xml <groupId>net.sf.json-lib</groupId> <artifactId>json-lib...
在Java编程中,数据结构和数据格式的转换是常见的任务之一。本示例涉及的核心知识点是将Java中的List对象与XML文档进行相互转换。这里,我们使用的库是dom4j-1.6.1.jar,这是一个强大的Java XML处理库。 首先,让...
这个压缩包文件“基于java8新特性+反射机制实现list不同实体类互转.zip”提供了一种解决方案,它利用了Java 8的新特性和反射机制来实现这种转换,并将这个功能封装为一个工具类。 首先,Java 8引入了许多新特性,...
- **其他实用数据类型转换**:涉及包装类(如Integer、Double)与基本类型的转换,以及Date和String的互转。 2. **简单数据类型之间的转换** - **自动类型转换**:从低级别类型转换到高级别类型,如byte到int,...
总的来说,这个"(Java)json和String互转必备Jar包"为Java开发者提供了一个便捷的工具,使他们能够在项目中方便地处理JSON数据,无论是从网络获取,还是在本地存储和处理。掌握好这些库的使用,对于提升开发效率和...
将Java Bean与XML进行互转是常见的需求,这有助于在不同系统间传递数据或者持久化对象状态。本篇将详细介绍两种常用的Java XML与Bean互转方法:XStream库和JAXB(Java Architecture for XML Binding)框架。 一、...
### JSON与Java对象互转:深入理解与实践 在现代软件开发中,JSON(JavaScript Object Notation)作为数据交换的标准格式之一,其轻量级、易于读写的特点使其成为跨平台数据传输的首选。Java作为一种广泛使用的编程...
总之,Java和JSON之间的互转是常见的开发任务。`org.json`库提供了一系列的工具类,使这个过程变得简单易行。无论是将Java对象、Map还是List转换为JSON,或者反过来将JSON解析回Java对象,都有相应的API支持。了解并...
总结来说,"xml和java对象互转"涉及使用如XStream这样的库来方便地在XML和Java对象之间进行数据转换,这对于在Java应用程序中处理和交换XML数据是至关重要的。通过理解这个过程,开发者可以更高效地管理数据,并实现...
在Java开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端数据传输。Jackson是Java领域最流行的JSON处理库之一,它提供了高效且灵活的API来实现JSON与Java对象之间的相互转换。...
#### JSON与Java数据类型的对应关系 1. **JSON Object <-> Java Map** - JSON对象由键值对组成,与Java中的`Map, Object>`非常相似。 2. **JSON Array <-> Java List** - JSON数组是一系列值的有序集合,可以直接...
总结来说,C++与Java互转涉及到语言特性、数据结构和语法的映射,以及利用特定工具和接口(如JNI)来实现。虽然有工具可以帮助完成基础的代码转换,但完全准确的转换往往需要人工干预和调整。对于开发者而言,理解和...
总结,JSON入门Java篇-2-JSON数据类型主要涵盖了JSON的基本数据类型、Java与JSON的转换、JSON对象和数组的操作,以及JSON在实际开发中的应用。学习这些内容对于理解和处理JSON数据至关重要,无论是在Web开发还是API...
最后,虽然这个示例代码没有涵盖所有可能的编码转换情况,但它提供了一个基础框架,可以根据需要扩展以支持更多编码类型。在处理复杂文件编码转换需求时,可以考虑使用更高级的库,如Apache Commons IO或OpenCSV,...
Java对象与JSON之间的转换在现代Web开发中至关重要,因为它们是服务器端数据处理和客户端交互的主要格式。Gson是Google提供的一个开源库,专门用于在Java对象和JSON数据之间进行无缝转换。它以其强大、灵活和高效而...
在"json和java互转测试项目"中,我们重点关注的是如何使用`json-lib`库进行JSON与Java对象的转换。`json-lib`库提供了一套完整的API,可以方便地将Java的Map、ArrayList、自定义对象等转换为JSON格式,同时也能将...
netty通信时经常和底层数据交互,C语言和java的数据类型和范围不同,通信时需要转化或兼容,附件为字节码、进制常用的转换类。
在本项目中,`jackson-test`可能是一个包含测试代码的模块,用于演示如何使用Jackson进行JSON和Java对象的互转。 1. **安装Jackson库** 在Java项目中使用Jackson,通常需要将以下Maven依赖添加到`pom.xml`文件中:...
“客户端TBL互转XML.rar”是一个压缩包,包含了一个名为“客户端TBL互转XML.exe”的可执行文件,这个工具可能用于将客户端的TBL文件转换成XML文件。这种转换工具有助于开发者、数据分析师或游戏玩家解析和编辑原本...
一些常用的java工具类:Date和String类型互转,获取想要格式的String类型的日期时间、java导出数据到Excel、http文件下载、HMAC-MD5加密、3DES加密、MD5加密、读写txt文件、zip解压缩文件、文件夹等