java toString()
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java toString()相关的知识,希望对你有一定的参考价值。
private static String toUnsignedString(int i, int shift)
char[] buf = new char[32];
int charPos = 32;
int radix = 1 << shift;
int mask = radix - 1;
do
buf[--charPos] = digits[i & mask]; //X1
i >>>= shift; //X2
while (i != 0);
return new String(buf, charPos, (32 - charPos));
X1 X2是什么意思?
buf : --------------------------
<-
每次buf的索引 从后先前 移动一个位置.
i & mask :
取 i的 最后 shift(参数) 位.
digits 〔 i& mask〕应该是转换表.
概述: 取 I 的最后 shift位,经过转换表,找到相应字符,并赋值到buf的当前位置.
X2:
i的值右移 shift位.
for example
i=0110 0100 1001 1000 0111 0110 0001 0011
A B C D E F G H
shift=4
first time :
i & mask = 0011
H
second i & mask 0001
G
last i & mask 0110
A 参考技术A &按位与
0&1 ->0
1&1->1
i>>>=shift
i向右移动shift位,高位插入0 参考技术B 据我观察 //后面的是注释~~~
java new date(str) 在tostring() 对象会报错?为啥?
String str = "1999-9-9 11:20:30";
Date d = new Date(str);
System.out.println(d.toString());
in thread "main" java.lang.IllegalArgumentException
at java.util.Date.parse(Date.java:615)
at java.util.Date.<init>(Date.java:272)
at comperable.test3.dateTimeString(test3.java:51)
at comperable.test3.main(test3.java:21)
Date d = new Date();
System.out.println(d.toString());
看下应该传入什么格式的参数(应该是这种格式Fri Jan 09 06:28:34 CST 2015)
String str = "Thu Jan 08 16:28:34 CST 2015";
Date d = new Date(str);
System.out.println(d.toString());
这段代码就不会报错
话说date与String的相互转换,百度一下有很多方法,这个Date d = new Date(str);这个方法已经过时了,不提倡使用。 参考技术A
Date d = new Date(str); 你这么写是没有(用法上)错误的,但是不可取
Date类的 Date(Str) 构造方法已经过期,不赞成使用
Date(Str) 构造方法,其源码内部,也是对str字符串进行解析,再装换成时间
由于在用法上没有错,那么你在使用new Date(str)实例对象时,str的格式不正确,导致解析错误,从错误信息也可以看出来
at java.util.Date.parse(Date.java:615) -- Date.parse() 解析方法出错
因为不赞成使用Date(str),所以不给你此方法的使用说,正确的方法如下:
tryString str = "1999-9-9 11:20:30";
DateFormat df = new SimpleDateFormat("yyyy-M-d HH:mm:ss");
Date date = df.parse(str);
catch (ParseException e)
e.printStackTrace();
参考技术B 错误原因是:参数非法。
Date(String str) 这个构造函数已经不被推荐使用了,就是说它有bug。如果你一定要这么用的话,那你的参数要改为:"9 Sep 1999 11:20:30" 参考技术C 你那个API方法已经过时了;用这个吧:
String str = "1999-9-9 11:20:30";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = sdf.parse(str);
System.out.println(d.toString()); 参考技术D 大写的m代表的是月,小写的m则是分钟,当然不能乱用。
日期格式:yyyymmdd
hh:mm:ss
yyyy:代表年份
mm:
代表月份
dd:
代表天
hh:
代表小时(24小时制)
mm:
代表分钟
ss:
代表秒
以上是关于java toString()的主要内容,如果未能解决你的问题,请参考以下文章
Java:Effective java学习笔记之 始终要覆盖toString方法
Java中,复写了toString方法,如何再调用复写前的toString方法?