`
SwordShadow
  • 浏览: 271001 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java 常用的几种数据类型转换

    博客分类:
  • java
阅读更多

几种常见的数据类型转换,记录一下

       
一、Timestap与String  BigDecimal与String

 

        项目使用的数据库Oracle,字段类型为Date与Number,ORM框架为Mybatis,返回类型和参数类型均为         java.util.Map,此时方法返回的Map {END_DATE=2012-11-11 14:39:35.0, FLAG=0} ,本以为(String)map.get(""),直接转换为String类型,最后报错了,为了保证代码健壮,强制类型转换时可以使用instance of判段类型

    

        Timestap转String

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
java.sql.Timestamp ts= (java.sql.Timestamp) map.get("END_DATE");
String endDate=sdf.format(ts);

 

        String转化为Timestamp

   

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = sdf.format(new Date());
Timestamp ts = Timestamp.valueOf(time);

     

        BigDecimal转String

当valueOf()和toString()返回相同结果时,宁愿使用前者

因为调用null对象的toString()会抛出空指针异常,如果我们能够使用valueOf()获得相同的值,那宁愿使用valueOf(),传递一个null给valueOf()将会返回“null”,尤其是在那些包装类,像Integer、Float、Double和BigDecimal。     

java.math.BigDecimal bd = (BigDecimal)m1.get("FLAG");
String flag = bd.toString();  //
如果bd为null抛出 "Exception in thread "main" java.lang.NullPointerException"

String flag = String.valueOf(bd);


 

        String转BigDecimal

   

BigDecimal bd = new BigDecimal("10");

    

   String 去掉换行

 

    

str.replaceAll("\n\r","").replaceAll("\n","");

 

java去除字符串中的空格、回车、换行符、制表符

 

 

        二、Date与String之间的转换

 

        String转Date    

DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;String str = null;
str = "2010-10-10";
date = format.parse(str); //Sun Oct 10 00:00:00 CST 2010
date = java.sql.Date.valueOf(str); //返回的是java.sql.Date 2010-10-10

 

        Date转String

    

DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;String str = null;
date = new Date(); 
str = format.format(date); 

        省略了异常处理部分

 

        把字符串转化为java.sql.Date

        字符串必须是"yyyy-mm-dd"格式,否则会抛出IllegalArgumentException异常

    java.sql.Date sdt=java.sql.Date.valueOf("2010-10-10");

 

 

三、文件与byte数组的相互转换

 

所有的文件在硬盘或在传输时都是以字节的形式传输的

 

文件转byte[]

 

public static void readFile() throws Exception {
		FileInputStream fis = new FileInputStream("luffy.gif");
		BufferedInputStream bis = new BufferedInputStream(fis);
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		int num = bis.read();                 //可能会溢出  超过int最大值  Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
		while (num != -1) {
			baos.write(num);
		}
		bis.close();
		byte[] array = baos.toByteArray();
		System.out.println(array.toString());
		
	}

//推荐


FileInputStream in = new FileInputStream(new File("d:/one.gif"));  
         ByteArrayOutputStream out = new ByteArrayOutputStream(4096);  
         byte[] b = new byte[4096];  
         int n;  
         while ((n = in.read(b)) != -1) {  
             out.write(b, 0, n);  
         }  
         in.close();  
         out.close();  
         byte[] ret = out.toByteArray();

 

byte[] 转文件

 

public static void writeFile(byte[] array) throws Exception{
		FileOutputStream fos =new FileOutputStream("one.gif");
		BufferedOutputStream bos =new BufferedOutputStream(fos);
		bos.write(array);
		bos.close();
		System.out.println("success");
	}

 

文件与 String 的转换

 

  /** 
         * 文本文件转换为指定编码的字符串 
         * 
         * @param file         文本文件 
         * @param encoding 编码类型 
         * @return 转换后的字符串 
         * @throws IOException 
         */ 
        public static String file2String(File file, String encoding) { 
                InputStreamReader reader = null; 
                StringWriter writer = new StringWriter(); 
                try { 
                        if (encoding == null || "".equals(encoding.trim())) { 
                                reader = new InputStreamReader(new FileInputStream(file), encoding); 
                        } else { 
                                reader = new InputStreamReader(new FileInputStream(file)); 
                        } 
                        //将输入流写入输出流 
                        char[] buffer = new char[1024]; 
                        int n = 0; 
                        while (-1 != (n = reader.read(buffer))) { 
                                writer.write(buffer, 0, n); 
                        } 
                } catch (Exception e) { 
                        e.printStackTrace(); 
                        return null; 
                } finally { 
                        if (reader != null) 
                                try { 
                                        reader.close(); 
                                } catch (IOException e) { 
                                        e.printStackTrace(); 
                                } 
                } 
                //返回转换结果 
                if (writer != null) 
                        return writer.toString(); 
                else return null; 
        }

 

String 与 File 的转换

 

 /** 
         * 将字符串写入指定文件(当指定的父路径中文件夹不存在时,会最大限度去创建,以保证保存成功!) 
         * 
         * @param res            原字符串 
         * @param filePath 文件路径 
         * @return 成功标记 
         */ 
        public static boolean string2File(String res, String filePath) { 
                boolean flag = true; 
                BufferedReader bufferedReader = null; 
                BufferedWriter bufferedWriter = null; 
                try { 
                        File distFile = new File(filePath); 
                        if (!distFile.getParentFile().exists()) distFile.getParentFile().mkdirs(); 
                        bufferedReader = new BufferedReader(new StringReader(res)); 
                        bufferedWriter = new BufferedWriter(new FileWriter(distFile)); 
                        char buf[] = new char[1024];         //字符缓冲区 
                        int len; 
                        while ((len = bufferedReader.read(buf)) != -1) { 
                                bufferedWriter.write(buf, 0, len); 
                        } 
                        bufferedWriter.flush(); 
                        bufferedReader.close(); 
                        bufferedWriter.close(); 
                } catch (IOException e) { 
                        e.printStackTrace(); 
                        flag = false; 
                        return flag; 
                } finally { 
                        if (bufferedReader != null) { 
                                try { 
                                        bufferedReader.close(); 
                                } catch (IOException e) { 
                                        e.printStackTrace(); 
                                } 
                        } 
                } 
                return flag; 
        }

 

 

 

 

 byte与16进制字符串转换

 

	public static String byte2hex(byte[] b) {
	       String hs = "";  
	       String stmp = "";  
	       for (int n = 0; n < b.length; n++) {  
	        stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));  
	        if (stmp.length() == 1)  
	         hs = hs + "0" + stmp;  
	        else  
	         hs = hs + stmp;  
	       }  
	       return hs;  
	    }  
	  
	    public static byte[] hex2byte(String str) {  
	       if (str == null)  
	        return null;  
	       str = str.trim();  
	       int len = str.length();  
	       if (len == 0 || len % 2 == 1)  
	        return null;  
	      
	       byte[] b = new byte[len / 2];  
	       try {  
	        for (int i = 0; i < str.length(); i += 2) {  
	         b[i / 2] = (byte) Integer  
	           .decode("0x" + str.substring(i, i + 2)).intValue();  
	        }  
	        return b;  
	       } catch (Exception e) {  
	        return null;  
	       }  
	    }  

 

InputStream 转化为 byte[]

 

public static byte[] readStream(InputStream is) throws Exception{  
        byte[] bytes = new byte[1024];  
        int leng;  
        ByteArrayOutputStream baos = new ByteArrayOutputStream();  
        while((leng=is.read(bytes)) != -1){  
            baos.write(bytes, 0, leng);  
        }  
        return baos.toByteArray();  
    }  

 

图像文件转byte[]

 public static byte[] toByteArray(File file) throws Exception {
		BufferedImage img = ImageIO.read(file);
		ByteArrayOutputStream buf = new ByteArrayOutputStream((int) file.length());
		try {
			ImageIO.write(img, "", buf);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
		return buf.toByteArray();
	}

 

 

 

 

四、byte[]与base64转换

 

BASE64应用广泛,在很多API中参数设计为String,可以将base64转为String 方便调用

 

//方法一
sun.misc.BASE64Decoder dec = new BASE64Decoder();
sun.misc.BASE64Encoder enc = new BASE64Encoder();
 
//javax.xml.bind.DatatypeConverter it has 2 methods of interest:
//方法二 
public static byte[] parseBase64Binary( String lexicalXSDBase64Binary )
public static String printBase64Binary( byte[] val )

 

 

可用于图片显示  <img alt="" src="data:image/png;base64,base64String...."> ,关于base64图片参考:html img Src base64 图片显示

 

注意两种方式生成的字符串长度不同,很多第三方的 jar 也含有 base64 功能,可能存在差异, 在项目中要统一为一种方式

 

 

     As of v6, Java SE ships with JAXB. javax.xml.bind.DatatypeConverter has static methods that make this easy. See parseBase64Binary() and printBase64Binary().

 

      Decode Base64 data in Java

 

    有时候需要去掉特殊字符如:

 

         

uploadImgMap.put("FILE",enc.encode(fileByte).replaceAll("(\r\n|\n)", "")) ;  //伪代码

 

 

    五,json 与 xml 互相转换

   

   字符串转json

 

String str = "{ \"data\": \"{a:1,b:2}\" }";
JSONObject json = (JSONObject)JSONSerializer.toJSON(str);

 

JAVA中如何将一个json形式的字符串转为json对象?

      

   JSON对象和字符串之间的相互转换

     

       Java版本 XML转JSON 或 JSON转XML

分享到:
评论

相关推荐

    Java中几种常用数据类型之间转换的方法

    Java 中几种常用数据类型之间转换的方法 Java 是一种基于对象的编程语言,它支持多种数据类型之间的转换,这些转换在实际编程...但是,需要注意的是,在进行数据类型转换时,需要考虑到可能出现的精度丢失和溢出问题。

    java数据类型的转换简单数据类型之间的转换 (2). 字符串与其它数据类型的转换 (3). 其它实用数据类型转换

    一些初学JAVA的朋友可能会遇到JAVA的数据类型之间转换的苦恼,例如,整数和float,double型之间的转换,整数和String类型之间的转换,以及处理、显示时间方面的问下面笔者就开发中的一些体会介绍给大家。 我们知道,...

    JAVA数据类型转换.pdf

    Java中的数据类型转换大致可以分为以下几种: 1. **简单数据类型之间的转换** 2. **字符串与其它数据类型的转换** 3. **其他实用数据类型转换** 接下来将对这些转换类型逐一进行探讨。 #### 四、简单数据类型之间...

    java数据类型转换.pdf

    在Java中,数据类型转换主要有以下几种: 1. **简单数据类型之间的转换** - **自动类型转换**:低级别数据类型(如byte、short、char)可以自动转换为高级别数据类型(如int、long、float、double)。例如,`byte ...

    java数据类型转换

    ### Java数据类型转换详解 #### 引言 在Java编程中,经常需要对不同数据类型进行转换以满足程序运行的需求。本文将详细介绍Java中的几种常见数据类型及其转换方法,并给出具体的示例代码。 #### 字符串(String)与...

    Java数据类型转换代码.pdf

    在Java编程语言中,数据类型转换是必不可少的一部分,它涉及到不同类型之间的值转换。Java有两种主要的数据类型转换方式:自动类型转换(也称为隐式转换)和强制类型转换(也称为显式转换)。在提供的Java代码示例中...

    Java与其他语言数据类型之间的转换方法

    Java与其他编程语言之间进行数据类型转换是跨平台编程中常见的需求,特别是在网络通信或文件交互时。本篇文章主要探讨了Java如何与C、C++、Delphi等Windows编程语言进行数据类型的转换,尤其是针对字节序...

    java中的数据类型,变量使用规则,自动类型转换

    基本数据类型直接存储具体的值,它们包括以下几种: - **byte**:用于存储8位(1字节)带符号的整数,取值范围为-128到127。 - **short**:用于存储16位(2字节)带符号的整数,取值范围为-32768到32767。 - **int*...

    struts2数据类型转换

    在Struts2中,数据类型转换的意义主要体现在以下几个方面: 1. **确保数据一致性**:通过类型转换,可以确保服务器接收到的数据与业务逻辑层中对象的属性类型保持一致,避免因类型不匹配导致的运行时错误。 2. **...

    Java基本数据类型

    - **描述**:`int` 类型是最常用的一种整型数据类型,占用4个字节(32位)的内存空间。 - **取值范围**:-2,147,483,648到2,147,483,647。 - **应用场景**:广泛应用于大多数需要整数运算的场合。 ##### 4. `long` -...

    Java数值类型

    Java支持不同类型之间的数据转换,分为自动类型转换和强制类型转换两种情况。 - **自动类型转换**:当目标类型比源类型具有更大的存储容量时,可以自动完成转换,且不会导致精度损失。 - 例如:`int i = 10; long ...

    c# java互相转换工具

    在C#和Java之间进行代码转换通常涉及到以下几个关键知识点: 1. 类型系统:C#和Java都有强类型系统,但类型定义和用法有所不同。例如,C#有值类型(如int)和引用类型(如类),而Java中所有类都是引用类型。转换时...

    java调用kettle中的job与转换-源码

    Java调用Kettle中的Job与转换是数据集成过程中的常见需求,Kettle(Pentaho Data Integration,简称PDI)是一种强大的ETL工具,而Java则作为通用编程语言,能够灵活地与各种系统进行交互。在Java中调用Kettle的Job和...

    java基本类型数据

    Java中的基本数据类型主要包括以下几种: 1. **整型** - `byte`:8位有符号整数,取值范围为-128到127。 - `short`:16位有符号整数,取值范围为-32768到32767。 - `int`:32位有符号整数,是最常用的基本整型,...

    Java实现的进制转换工具类完整示例

    Java实现的进制转换工具类是Java语言中的一种常用工具类,用于实现各种进制之间的转换操作,如二进制、十六进制、字符串、数组等。该工具类主要提供了将字节数组转换为十六进制字符数组或字符串的方法,以及将字符串...

    数据类型简介.pdf

    Java数据类型系统是编程语言的基础,它主要包括字符集、数据类型、运算符等几个核心概念。 首先,字符集是计算机用于处理字符编码和解码的对照标准。不同的字符集处理的字符范围和编码规则不同。例如,Unicode字符...

    Android应用编程基础第6篇】Java语言的数据类型

    Java的数据类型可以分为基本类型和引用类型两种。基本类型包括数值型、字符型和布尔型;引用类型则包括类(Class)、数组类型(Array)、接口类型(Interface)。 首先,我们来看看Java中的基本类型。基本类型可以...

    Date类型数据转换

    Date类型数据转换是Java编程语言中非常重要的一种数据类型转换。它可以将String类型的日期字符串转换为Date类型的日期对象,也可以将Date类型的日期对象转换为String类型的日期字符串。在本文中,我们将详细介绍Date...

Global site tag (gtag.js) - Google Analytics