幾種常見的數據類型轉換,記錄一下 javascript
1、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判段類型 java
Timestap轉String sql
- 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()返回相同結果時,寧願使用前者 app
由於調用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 spa
- BigDecimal bd = new BigDecimal("10");
2、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 code
- 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");
3、文件與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();
- while (num != -1) {
- baos.write(num);
- }
- bis.close();
- byte[] array = baos.toByteArray();
- System.out.println(array.toString());
-
- }
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");
- }
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;
- }
- }