目录
注意:本次整理涉及到的数据结构:
Long,long,Integer,int,String,Byte,byte,Double,float,Bigdecimal,Date,char和boolean类型待日后闲暇时整理,以下部分或许有不全面的地方,欢迎补充。
1、Long,long,Integer,int之间的恩怨情仇
long和int相对于Long和Integer的关系其实是基础类与java封装类的关系,在用的时候java语言会把封装的这两种基础数据类型当作类处理,所以一种简单的处理方式就是通过数据类型的转换再与封装数据类进行互转得到需要的数据类型。一下列出一些经典的数据转换,每列出来的也许是笔者觉得不需要写或者忘记了。
1.1 int转Long
int是基础类型,Long是封装数据类型,因此强转是行不通的,编译就通不过,这种情况提供一种比较简单的处理方式:
int a=1234;
Long b=(long)a;
解释: java语言中基础数据类型一般是可以强转的,这里的int先强转成long基础类型,然后再java的默认机制下long会被‘=’式转为Long封装数据类型。
另一种方法是通过封装类提供的方法,不过有时候会有一些问题:
int a=1234;
Long b=Long.IntValue(a);1.2 Long转int
基本原理相同,就是利用基本数据类型的强转机制以及java5以后的自动拆装箱机制实现数据类型的转换。如下:
Long ss=5L;
int sss=(long)ss;
另一种方法:
Long ss = 5L;
String str =ss.toString();
int sss = (int)Integer.valueOf(str);
或者 int sss = (int)new Integer(str);第二种方法比较麻烦。其他互转原理相同。
2. String,int,Long,byte,Byte,Double,float,char,Date令人发指的纠缠
- 2.1:String与int互转
2.1.1 String转int
int i = Integer.parseInt([String]);
或
i = Integer.parseInt([String],[int radix]);
或
int i = Integer.valueOf(my_str).intValue();注: 字串转成 Double, Float, Long 的方法大同小异.
2.1.2 int转String
1.) String s = String.valueOf(i);
2.) String s = Integer.toString(i);
3.) String s = “” + i;
注: Double, Float, Long 转成字串的方法大同小异.
区别:
int -> String
int i=12345;
String s=”“;
第一种方法:s=i+”“;
第二种方法:s=String.valueOf(i);
这两种方法有什么区别呢?作用是不是一样的呢?是不是在任何下都能互换呢?
String -> int
s=”12345”;
int i;
第一种方法:i=Integer.parseInt(s);
第二种方法:i=Integer.valueOf(s).intValue();
这两种方法有什么区别呢?作用是不是一样的呢?是不是在任何下都能互换呢?
以下是答案:
第一种方法:s=i+”“; //会产生两个String对象
第二种方法:s=String.valueOf(i); //直接使用String类的静态方法,只产生一个对象
第一种方法:i=Integer.parseInt(s);//直接使用静态方法,不会产生多余的对象,但会抛出异常
第二种方法:i=Integer.valueOf(s).intValue();//Integer.valueOf(s) 相当于 new Integer(Integer.parseInt(s)),也会抛
异常,但会多产生一个对象
(区别是转来的,原理未进行验证)
2.2 :String与byte互转
byte[] srtbyte = str.getBytes();//String–>byte[]
String res = new String(srtbyte);//byte[]–>String2.3 :String与Date互转
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); String date="2011-11-22 12:32:43" Date date = format.parse(date);
2.4 :float转BigDecimal
DecimalFormat myformat = new DecimalFormat("0.000");//指定BigDecimal格式,可以不写 String x=2.1; String y=1.2; float xx = Float.parseFloat(x); float yy = Float.parseFloat(y); BigDecimal xxx = new BigDecimal(myformat.format(xx)); BigDecimal yyy = new BigDecimal(myformat.format(yy));
备注:待续