System.out.print("abc");
System.out.print("\b");
上面的程序在windows控制台中输出仍然是abc 并没有删除末尾的c
但是
System.out.print("ab\bc");
输出的结果为ac 删除了中间的b
我的问题是 为什么第一个程序中末尾的c没有被删除呢
多谢指导。。
打个比方吧,你用计算机打字,输入ab,向前删除c,然后打印,结果是ac
但是如果你用的是打字机,那么已经白纸黑字印在纸上了,那就没法修改了。
一旦调用print,就将结果提交给操作系统去显示了,后面即便再有\b,也没法删除了。
但是在print内部,ab\bc,那么可以先对表达式求值得到ac,然后再输出。
public static void progress(){
for (int i = 1; i <= 100; i++) {
System.out.print((i + "%"));
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for (int j = 0; j <= String.valueOf(i).length(); j++) {
System.out.print("\b");
}
}
}
这个程序实现控制台动态输出百分比 当i为一位数 如3 先输出3% 然后退格两位 接着输出4% 如果i为2位 如30 则先输出30% 然后退格3位 接着输出31%
如果白纸黑字 已成定局不能更改的话 为什么这个可以删除呢。。。
System.out.print("abc");
System.out.print("\b");
\b是退格的意思,只是把输出的位置前移,并不是删除前一个字符。你想象以前的打字机,退格只是把打字的移到前一个字符的位置,只有重新输出新字符,才会覆盖原先的内容。
如:
System.out.print("abc");
System.out.print("\bd");
你会发现输出内容已经变成了:abd