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是什么意思?

X1
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),所以不给你此方法的使用说,正确的方法如下:

try 
String 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()方法

Java中,复写了toString方法,如何再调用复写前的toString方法?

java toString方法

JAVA 面向对象补充[toString方法和equals方法]

Java中Object.toString()返回的字符串的含义