今天写了一段简单的代码,只有两条语句,但输出的结果却让我很迷惑。下面是代码:

String s = "This\tis\tmy\tsmall\texample\tstring\twhich\tI'm\tgoing\tto\tuse\tfor\tpattern\tmatching.";
System.out.println(s);

控制台打印出来的文本:

This    is  my  small   example string  which   I'm going   to  use for pattern matching.

很疑惑,制表符表示的长度怎么不是固定的,单词之间的空格有的长有的短。在维基百科上查了下制表符,但还是不明白。后来在 stackoverflow 上提问了下,终于明白了。主要涉及到三个概念:

  • 单词的长度:比如“word”这个单词的长度是 4 , “a”这个单词的长度是 1 ,“are”这个单词的长度是 3 ,“你”这个单词的长度是 1 ,“你好”这个单词的长度是 2 。

  • 制表符的宽度(size):制表符的宽度是一个可配置属性(例如,notepad++ 下制表符的默认宽度是 4 ),一旦配置好以后就固定了,除非再次配置。

  • 制表符所代表的空白字符的个数:制表符所代表的空白字符的个数不是固定的,它与制表符的宽度和该制表符前边的单词的长度满足一定的算术关系。

单词的长度用 wordLength 表示,制表符的宽度用 tabSize 表示,制表符所代表的空白字符的个数用 tabAppearSpaceLength 表示,这三者满足两个条件。

  • tabAppearSpaceLength >=1 && tabAppearSpaceLength <= tabSize
  • (wordLength + tabAppearSpaceLength) % tabSize == 0

如果制表符的宽度为 4 ,单词 this 之后敲一个制表符,制表符会占用 4 个空白字符的位置,单词 a 之后敲一个制表符,制表符会占用3个空白字符的位置。

制表符(tab 键)的概念相关推荐

  1. ue编辑器(UltraEdit编辑器)将制表符(Tab键)替换成其竖线分隔符(其他分隔符)乱码

    ue编辑器(UltraEdit编辑器)将制表符(Tab键)或者逗号替换成竖线分隔符(或其他分隔符)乱码 解决: 1.将文件另存为CSV文件格式 2.用记事本打开CSV文件 3.用记事本中的替换功能将逗 ...

  2. 求求你使用Tab键好吗

    编者按 在生物信息学习中,经常发现很多学员操作一段时间之后就有点跟不上了,一条命令要很久才能敲完.主要原因是没有使用Tab键进行命令行的补齐.在Linux的命令行操作中,一定要学会使用Tab键补齐,几 ...

  3. Tab键== 4个空格并在Vim中的花括号后自动缩进

    我如何制作vi - Vim从不使用制表符(将空格转换为制表符,不好!),制作Tab键== 4个空格,并在像Emacs这样的大括号块之后自动缩进代码? 另外,如何保存这些设置,以便我再也不必输入它们? ...

  4. python中tab键_python中tab键是什么意思

    对于程序员来说,其实Tab和空格远远不只是"立场"问题那么简单. 在不同的编辑器里tab的长度可能不一致,所以在一个编辑器里用tab设置缩进后,在其它编辑器里看可能缩进就乱了.空格 ...

  5. python语言的缩进可以采用tab键实现吗_python中使用空格还是使用 Tab键缩进的建议...

    对于程序员来说,其实Tab和空格远远不只是"立场"问题那么简单. 在不同的编辑器里tab的长度可能不一致,所以在一个编辑器里用tab设置缩进后,在其它编辑器里看可能缩进就乱了.空格 ...

  6. python中一般使用几个空格表示缩进_python中使用空格还是使用 Tab键缩进的建议...

    对于程序员来说,其实Tab和空格远远不只是"立场"问题那么简单. 在不同的编辑器里tab的长度可能不一致,所以在一个编辑器里用tab设置缩进后,在其它编辑器里看可能缩进就乱了.空格 ...

  7. IDEA自动补全tab键向下选择s-tab向上选择

    友情提醒 目前不完美,这样设置完后.tab键制表符功能会受到影响.目前没找到完美的解决办法. 目前是使用其他的按键来代替tab的功能. "代替tab inoremap ~ <Tab&g ...

  8. 计算机键盘的tab键是哪个,电脑键盘中的Tab键都有哪些妙用

    Tab键似乎很多人平时用的不多,但这个按键有很多功能,可以帮你省去很大一部分操作,让你各方面的速度都提升,不管是输入,阅读,操作等,小编收集了这些Tab键的使用技巧,从初级到高级让你感受下tab键的强 ...

  9. tab键和空格键的区别

    tab键和空格键的区别 TAB叫做制表符,就是制表用的,或者说是对齐用的,属于控制字符:而空格属于可见字符. Tab('\t')和空格(' ')根本就是两种东西,就像是问回车('\r')和换行('\n ...

  10. Linux vim设定Tab键缩进

    Drecik学习经验分享 转载请注明出处:http://blog.csdn.net/drecik__/article/details/8452347 Linux系统中vim设置tab键的宽度 在 Vi ...

最新文章

  1. Javascript 装饰器极速指南
  2. java call oracle procudure setBoolean问题PLS-00306: wrong number or types of arguments in call to
  3. git使用—rebase还是merge
  4. ERROR org.hibernate.proxy.pojo.javassist.JavassistProxyFactory - HHH000142:错误
  5. php tp5.3,[李景山php]每天TP5-20161226|thinkphp5-Console.php-3
  6. 第二:RobotFrameWork接口用例设计规范
  7. Gradle笔记——构建基础
  8. 感谢所有常来我博客的朋友
  9. bzoj 3375: [Usaco2004 Mar]Paranoid Cows 发疯的奶牛(二分)
  10. 201671010139 徐楠 关于学习继承
  11. 数据结构与算法 c语言6,C语言程序设计题库之6.doc
  12. python破解压缩包密码(密码字典)
  13. Nature、science、cell旗下刊物
  14. 微信公众号文章素材收集网站大盘点
  15. php日期格式化年月日时分秒,php Date()函数输出中文年月日时分秒
  16. 智能电饭煲电路图及其原理_智能电饭煲工作原理及框架图
  17. 删除数组最后一个元素
  18. VB初学者实例50例
  19. shinelon自动修复此计算机,炫龙 shinelonV5 Pro 笔记本改win7详细图文教程
  20. Mac电脑如何删除磁盘及双系统分区?

热门文章

  1. 查看和终止 Oracle 连接会话以及正在执行的 SQL 语句
  2. fit和transform和fit_transform的区别
  3. oracle数据比对写法,数据比对的sql(oracle数据库)
  4. SVC,HVC,SMC指令
  5. Python中的负数取余问题
  6. 亲属卡额度是什么意思_花呗,新来了几个功能和额度!你会用吗?
  7. C# AES-CTR模式 纯代码实现
  8. 圆锥的体积为什么是圆柱的三分之一?
  9. linux vtune 生成文字报告,文字报告太枯燥,教你一招,只需十分钟,一屏可视化!...
  10. GPGPU-SIM Code Study