在IDEA中使用制表符 \t 控制输出时,常常会发现在控制台中依然出现距离、格式不统一这样的问题,对于制表符具体能够控制的缩进长度往往不够清楚,因此,我通过具体例子进行检验一下。
1、代码块
System.out.println("""
\t********\t&&&&1234^^^
\t********\t&&&&\t^^^
\t********\t&&&&\t^^^
\t********\t&&&\t^^^
\t*******\t&\t^^^
\t一二三四五\t一二三\t^^^
\t一二三四\t一二三\t^^^
\t一二三\t一二三\t^^^
\t一二\t一二三\t^^^
\t一\t一二三\t^^^
""");
2、IDEA控制台的输出
3、分析
英文字符下:
字符串长度为0~3时,后面接\t,将字符补全至4位,即:"****\t"输出为"*** "
字符串长度为4时,后面接\t,此时与字符串长度为0相似,"****\t"输出"**** "
不难发现,\t从最左侧开始计数,长度4为一组,如果\t前的长度刚好不满4的倍数,则补空格至4的倍数,如:"*******\t"输出"******* "
中文字符下也是如此,但中文字符的长度判定较为独特。
在 utf-8 下,一个中文字符可近似看为2个字节长度,因此:
"一二\t"需要补全至4个字节长度,即"一二 "
"一二三\t"需要补全至8个字节长度,即"一二三 "