Java转义字符的使用方法及心得

目录

1.思考练习

2.Java转义字符表

3.‘\b’使用介绍

4. ‘\r’使用介绍


1.思考练习

        1.思考“abcd\bef\tghi\rjkl”的输出结果,并运行程序验证。

本题来源于《Java 8程序设计及实验》p35习题2

2.Java转义字符表

        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不变

实践是检验真理的唯一标准,本人是大二在校生,谨以此文和大家分享经验,探讨学习,不足之处还望指正,感谢支持理解!

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值