【Java基础】 \n, \t, \r 的区别

本文解析了编程中的转义符如 、 、 的功能,并解释了这些符号在不同操作系统中的作用差异,以及历史背景。

\n:在Windows中表示换行,换到下一行的行首位置。在Linux,unix中表示左右位置不发生改变,换到下一行,及换行前后的纵坐标相同。

\t:在Window中表示缩进,相当于按下Tab键之间的距离,一般为八个字符。

\r:在Window中表示回车,即移动到本行的最开始位置。


 想必也有不少编程小白在学习Java的时候遇到了转义符的相关问题,我最近也是被\n,\r,\t整的很迷惑,在看了很多篇优快云的文章后,发现自己没有弄清楚反而越是糊涂了,其中之一的原因就是很多博主在文章中的解释并没有注明该转义符的作用所适用的系统是什么。

test

System.out.print("2021\n2022");
System.out.print("2023\r2024\t2025");

从结果来看,\n,\t和先前所描述的没有出入,但是 \r 的结果却和想的不太一样,起到的作用也是换行到下一行的行首,和\n的效果相同。至于为什么结果会和定义不相符我也是很疑惑,希望有大佬可以在评论里讲解一下

回车”(Carriage Return)和“换行”(Line Feed)这两个概念的来历和区别。

       在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正 好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车(return)”,告诉打字机把打印头定位在左边界;另一个叫做“换行(newline)”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。

### ### Java 转义字符 `\t`、`\n`、`\f`、`\r` 的含义与用法 Java 中的转义字符用于表示特定控制功能的字符,它们无法直接通过键盘输入,而是通过反斜杠(`\`)引导的特殊字符序列来表示。常见的转义字符包括 `\t`、`\n`、`\f` 和 `\r`,它们分别对应不同的文本控制功能。 #### `\t`:水平制表符(Tab) `\t` 表示水平制表符,相当于按下键盘上的 Tab 键。它会在输出时插入一个固定宽度的空白,通常用于对齐文本列。例如: ```java System.out.println("11111\t2225222"); ``` 输出结果会在 `11111` 和 `2225222` 之间插入一个 Tab 空格,使文本对齐显示[^2]。 #### `\n`:换行符(Line Feed) `\n` 表示换行符,其作用是将光标移动到下一行的起始位置。它常用于在控制台或文件中输出多行文本。例如: ```java System.out.println("55555\n665666"); ``` 该语句会在输出 `55555` 后换行,接着输出 `665666`[^2]。 #### `\r`:回车符(Carriage Return) `\r` 表示回车符,其作用是将光标移动到当前行的开头。与 `\n` 不同,它不会换行,而是覆盖当前行的内容。例如: ```java System.out.println("88877\r5454421\n"); ``` 该语句会先输出 `88877`,然后通过 `\r` 将光标移回行首,接着输出 `5454421`,从而覆盖原内容。 #### `\f`:换页符(Form Feed) `\f` 表示换页符,其作用是指示打印机或某些文本处理系统换页。在控制台中,`\f` 的效果可能不明显,但在某些系统中会触发页面分隔。例如: ```java System.out.println("777788\f6594954"); ``` 该语句会在输出 `777788` 后插入一个换页符,接着输出 `6594954`。 ### 示例代码 以下代码演示了这些转义字符在 Java 中的使用效果: ```java public class EscapeCharactersExample { public static void main(String[] args) { System.out.println("11111\t2225222"); // 插入 Tab System.out.println("55555\n665666"); // 换行 System.out.println("88877\r5454421\n"); // 回车 System.out.println("777458\b6594954"); // 退格 System.out.println("777788\f6594954"); // 换页 } } ``` ### 使用场景 - **`\t`**:用于格式化输出,如对齐表格数据。 - **`\n`**:用于输出多行日志、文本内容。 - **`\r`**:用于刷新控制台输出,如进度条更新。 - **`\f`**:用于打印文档时控制换页。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值