java输出object类型_Object转为String的⼏种形式(转载)在java项⽬的实际开发和应⽤中,常常需要⽤到将对象转为String这⼀基本功能。本⽂将对常⽤的转换⽅法进⾏⼀个总结。常⽤的⽅法有String(),(String)要转换的对象,String.valueOf(Object)等。下⾯对这些⽅法⼀⼀进⾏分析。
⽅法1:采⽤
请看下⾯的例⼦:
Object object = getObject();
System.out.String());
在这种使⽤⽅法中,因为java.lang.Object类⾥已有public⽅法.toString(),所以对任何严格意义上的java对象都可以调⽤此⽅法。但在使⽤时要注意,必须保证object不是null值,否则将抛出NullPointerException异常。采⽤这种⽅法时,通常派⽣类会覆盖Object⾥的toString()⽅法。
⽅法2:采⽤类型转换(String)object⽅法
这是标准的类型转换,将object转成String类型的值。使⽤这种⽅法时,需要注意的是类型必须能转成String类型。因此最好⽤instanceof 做个类型检查,以判断是否可以转换。否则容易抛出CalssCastException异常。此外,需特别⼩⼼的是因定义为Object
类型的对象在转成String时语法检查并不会报错,这将可能导致潜在的错误存在。这时要格外⼩⼼。如:
Object obj = new Integer(100);
String strVal = (String)obj;
在运⾏时将会出错,因为将Integer类型强制转换为String类型,⽆法通过。但是,java的tostring方法
Integer obj = new Integer(100);
String strVal = (String)obj;
如是格式代码,将会报语法错误。
此外,因null值可以强制转换为任何java类类型,(String)null也是合法的。
⽅法3:采⽤String.valueOf(Object)
String.valueOf(Object)的基础是String()。但它与String()⼜有所不同。在前⾯⽅法1的分析中提到,使⽤第⼀种时需保证不为null。但采⽤第三种⽅法时,将不⽤担⼼object是否为null值这⼀问题。为了便于说明问题,我们来分析⼀下相关的源代码。Jdk⾥String.valueOf(Object)源码如下:
public static String valueOf(Object obj)
{
return (obj == null) ? "null" :
}
从上⾯的源码可以很清晰的看出null值不⽤担⼼的理由。但是,这也恰恰给了我们隐患。我们应当注意到,当object为null
时,String.valueOf(object)的值是字符串"null",⽽不是null!在使⽤过程中切记要注意。试想⼀下,如果我们⽤
if(String.valueOf(object)==null)
{
System.out.println(“传⼊的值是null!");
}
这样的语句将可能会发⽣什么问题。再想⼀下,向控制台输出时,在视觉上如下语句在执⾏的结果上有什么不同:
System.out.println(String.valueOf(null));
System.out.println(null);
我们看到的输出将是⼀模⼀样的东西:null,但它们意义相同吗?
判断⼀个字符串为空
s为⼀个字符串,判断它为空的⽅法:
if  (null==s ||"".equals(s))
{
......
}
注意:这⾥的null==s和"".equals(s)不要写成s==null和s.equals(s),因为""这个值是已经确定的,预知的,⽽s是未知的,所以⽤得不⼩⼼的时候s.equals("")就会出现nullpoint异常。在这⾥虽然不会,因为前⾯有if(null==s),但是习惯跟在那⾥使⽤没有关系的。不⼀定的equals⽅法,包括其它很多处理,如果⽤确定的值处理问题会⽐未确定的处理少很多bug。
String类型和Date类型的相互转换
将String转换为Date:
String
s="2007-06-21 10:50:50";
java.util.Date date = FormatDate.parse(s);//转成Date
将Date转换为String
String.valueOf(date);
Java如何获得系统时间
最近在学习Java,经常在⼯作中遇到⼀些⼩问题,Baidu之后,到问题的解决⽅法,要记录下来呦,要不然,凭我的脑⼦,肯定不久就忘记了。呵呵。
想要获得系统时间,不要⽇期,只要时间,可是Baidu出来的都是带着⽇期和时间案的,没有单独只有时间的例⼦。琢磨了⼀会之后,到问题的解决⽅法。
import
java.util.Date;
import
Date now = new Date(); // Date()是java.util.Date类的构造⽅法
DateFormat d =
//getTimeInstance()获得的是不带⽇期的系统时间
String str = d.format(now);
System.out.println("Today is " +
str);//输出
注:
1.Date now = new Date();
这句中的Date()是java.util.Date类的构造⽅法,⽽不是java.sql⾥的类,所以要在前⾯加上import java.util.Date;⽽不是 import
java.sql.Date;这⾥曾经因为犯了这种低级错误⽽导致编译出错。
2.DateFormat 中有 getTimeInstance、
getDateInstance 和 getDateTimeInstance
是⽤来创建⼀个⽇期-时间格式化的⽅法。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。