求给我讲解下红色部分的代码

a384311712 2013-01-28 09:06:48
import java.util.Calendar;
import java.util.GregorianCalendar;

public class DateTime {
private Calendar calendar = new GregorianCalendar();

public String getDate() {
StringBuffer buf = new StringBuffer();
buf.append(calendar.get(Calendar.YEAR)).append("-");
buf.append(this.addZero(calendar.get(Calendar.MONTH) + 1, 2)).append(
"-");
buf.append(this.addZero(calendar.get(Calendar.DAY_OF_MONTH), 2))
.append(" ");
buf.append(this.addZero(calendar.get(Calendar.HOUR_OF_DAY), 2)).append(
":");
buf.append(this.addZero(calendar.get(Calendar.MINUTE), 2)).append(".");
buf.append(this.addZero(calendar.get(Calendar.MILLISECOND), 3));
return buf.toString();
}

private String addZero(int temp, int len) //在某些位不足的情况下加上“0”
{
StringBuffer str = new StringBuffer();
str.append(temp); // 加入数字
while (str.length() < len) {
str.insert(0, 0);
}
return str.toString();
}



public static void main(String[] args) {
System.out.println(new DateTime().getDate());
}
}

输出的结果格式类似于“2013-01-28 21:02.078” 我想求教给我讲下红色代码处的内存活动情况,或者讲讲这段代码,初学java不是很理解 拜托了 みなさん
...全文
144 6 点赞 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
a384311712 2013-01-30
str.append(temp); // 加入数字 这块是往哪里假如数字
  • 打赏
  • 举报
回复
tieyougan 2013-01-30
引用 4 楼 a384311712 的回复:
str.append(temp); // 加入数字 这块是往哪里假如数字
红色的前面部分看到了吗,那些是获取的具体的日期数字,如2013-1-30,获取到2013,1,30,然后调用红色字体方法处理,当获取到的日期数字不是两位数的时候,则在前面加0,就像月份1,不足两位,在1前面加0,这些操作都是在StringBuffer里面操作的,也就是把int转化成了String处理,输出的是String类型。addZero(int temp, int len)这个方法,第一个参数temp表示的是获取的日期数字,第二个参数len表示的是这个日期数字要求几位。
  • 打赏
  • 举报
回复
liuyunsihuo 2013-01-30
StringBuffer是可变长字符串,new 一个的时候,相当于在内存里分配一个空间。当使用append的时候,就会把temp的值加入这个内存中,然后进行运算。随后操作的结果,都会保存在这个地址空间中,直到使用return。你要是想输出那种日期样式,用这种方法是不被允许的。
  • 打赏
  • 举报
回复
失落夏天 2013-01-28
引用 楼主 a384311712 的回复:
import java.util.Calendar; import java.util.GregorianCalendar; public class DateTime { private Calendar calendar = new GregorianCalendar(); public String getDate() { StringBuffer buf = new St……
内存活动情况我感觉应该就是类似普通赋值吧。 类似拷贝一个对象,然后把这个对象作出修改,然后把修改后的对象的值返回给原对象吧、 当然,没研究过,不是很确定。。
  • 打赏
  • 举报
回复
王者_来归 2013-01-28
明显嘛,就是位数不足补0,比如长度不足8位的,在前面用0补足: 123456 补足后为:00123456
  • 打赏
  • 举报
回复
八嘎! 如果参数int temp的length小于参数int len,则在生成的str.insert(0, 0);前面0位置插入一个0符号
  • 打赏
  • 举报
回复
相关推荐
发帖
Java SE
加入

6.2w+

社区成员

Java 2 Standard Edition
申请成为版主
帖子事件
创建了帖子
2013-01-28 09:06
社区公告
暂无公告