目录
1.思考练习
1.思考“abcd\bef\tghi\rjkl”的输出结果,并运行程序验证。
本题来源于《Java 8程序设计及实验》p35习题2
2.Java转义字符表
Java使用转义字符表示一些有特殊意义的字符(如回车符等),用'\',把普通字符变成特殊字符,同时,可把特殊字符变成普通字符。这些转义字符如下表所示。
转义字符 | 含义 | 转义字符 | 含义 |
\ddd | 用3位八进制数据表示的字符 | \r | 回车,回到行首 |
\uxxxx | 用4位十六进制数据表示的字符 | \n | 换行 |
\' | 单引号字符 | \t | 横向制表符 |
\'' | 双引号字符 | \b | 光标退一格 |
\\ | 斜杠字符 |
3.‘\b’使用介绍
\b是回退符的意思,光标退一格
[1]单个或者多个\b后面没有内容时,\b前面内容原样输出。
public class Fallback
{
public static void main(String[]args)
{
System.outprintln("hhh\b"); //hhh
System.outprintln("hhh\b\b"); //hhh
System.outprintln("hhh\b\b\b"); //hhh
}
}
[2]\b后面有内容时的情况如下:
单个\b后面有内容,回退1个字符,即删除\b的前一个字符,\b之后的字符代替删除字符位置
public class Fallback
{
public static void main(String[]args)
{
System.out.println("xyz\bt"); // xyt 回退到z,删除z,t取代z
System.out.println("xyz\bt1"); // xyt1 回退到z,删除z,t取代z,1紧随其后
System.out.println("xyz\bt123456"); // xyt123456 回退到z,t取代z,123456紧随其后
}
}
多个\b后面有内容,如果回退符后的数小于回退符的数量,那么回退符前没有被取代的数不变
如果回退符后的数大于回退符的数量,那么回退符前的数将被依次取代。
public class Fallback
{
public static void main(String[]args)
{
System.out.println("xyz\b\b1"); // x1z 回退2个字符,1取代y,z不变
System.out.println("xyz\b\b\b12"); //12z 回退3个字符,12取代xy,z不变
System.out.println("xyz\b\b123"); // x123 回退2个字符,12取代yz,3紧随其后
System.out.println("xyz\b\b\b1234"); // 1234 回退3个字符,123取代xyz,4紧随其后
}
}
4. ‘\r’使用介绍
\r是回车符,使用时将光标定位到行的开头。
\r后面没有内容时,\r前面的内容保持原样输出。
public class Return
{
public static void main(String[]args)
{
System.out.println("xyz\r"); // xyz \r将光标先切换到行首,因为\r后面没有内容,所以xyz原样输出
System.out.println("xyz\r\r"); // xyz 同上
System.out.println("xyz\r\r\r\r\r\r\r\r"); // xyz 同上
}
}
\r后面有内容时,光标先切换到行首,然后\r后面的内容开始从行首对\r前面的数依次取代,会遇到两种情况,一是\r后面的数<=\r前面的数,那么\r前面没有被取代的数在原位置保持不变,二是\r后面的数>\r前面的数,那么\r前面的数将被全部取代,其结果就是将原先\r后面的数输出。
注:\r后面有内容时,\r的数量与数的取代无关,多个\r和1个\r都一样
public class Return
{
public static void main(String[]args)
{
System.out.println("xyz\r12"); // 12z 光标到行首,12取代xy,z不变
System.out.println("xyz\r\r\r12"); // 12z 同上,与\r数量无关
System.out.println("xyz\r123456"); // 123456 \r后数>前数,输出后数
System.out.println("xyz\r\r\r123456"); // 123456 同上,与\r数量无关
}
}
5.思考题个人看法
首先,我在程序上的运行结果为:
我理解为:\r先将光标定位到行首,然后jkl依次取代abc,\b回退到d,删除d,e取代d,f紧随其后,\t制表符,后面ghi不变
实践是检验真理的唯一标准,本人是大二在校生,谨以此文和大家分享经验,探讨学习,不足之处还望指正,感谢支持理解!