JAVA 中转义符的理解

时间:2021-05-09 23:55:08

  生物信息中有时候会遇到JAVA写的程序,今天阅读源码的时候发现对于正则中的转义符不好理解,后来查资料后终于弄明白了,这里详细说明一下:

  字符串的表示有三种方法:1、直接单字符,例如“A”;2、由转义字符表示的特殊字符,例如“\t”; 3、Unicode字符,例如“\u0008”。其中转义字符表示的字符串,显示出来的就是这种模式,例如“\t”与“  ”是同一个字符串,“abc\tefg”与"abc  efg"是同一个字符串。

  但是单独的“\”是不能出现在JAVA的字符串中作为字符串的,比如说如果要打印“abc\efg”,这时会报错:“错误:非法转义符”。这是因为系统把“\e“当做转义符,但是实际上并没有这个转义符。如果真的要将“\”作为一个符号打印输出,那么就应该在"\"前面再加一个“\”以表示后面的“\”是要被输出,例如打印输出“abc\\efg”,这时终端就会显示“abc\efg”。

  同样的在正则表达式中,“\u0041\\\\” 将匹配"A\"。 乍一看有点晕,怎么有这么多反斜杠。前面已经讲过了,这时因为在JAVA中‘\’单独出现会报错,所以此处的四个“\\\\”可以看成两个,而这两个“\\”又可以看成是对一个“\”的转义了(在正则表达式中)。例子如下: 打印输出“abc\\\efg”时会报错“错误:非法转义符”;打印输出“abc\\\\efg”时显示“abc\\efg”;打印输出"abc\\\\\efg"时同样的报错,而打印输出"abc\\\\\\efg”则显示“abc\\\efg”。

  总结一下,也就是说,如果在字符串中如果出现了多个“\”连在一起,那么两个两个一起看。如果在正则表达式中出现了多个“\”连在一起,那么要四个四个一起看,这四个一起是匹配一个“\”字符,因为如果只有两个“\”的话,那么实际上就是一个“\”,它后面还要有例如‘t’,'d'这样的字符跟着才能表示转义,否则就会报错。

JAVA 中转义符的理解的更多相关文章

  1. Java中线程同步的理解 - 其实应该叫做Java线程排队

    Java中线程同步的理解 我们可以在计算机上运行各种计算机软件程序.每一个运行的程序可能包括多个独立运行的线程(Thread). 线程(Thread)是一份独立运行的程序,有自己专用的运行栈.线程有可 ...

  2. java中线程同步的理解(非常通俗易懂)

    转载至:https://blog.csdn.net/u012179540/article/details/40685207 Java中线程同步的理解 我们可以在计算机上运行各种计算机软件程序.每一个运 ...

  3. 关于js中单双引号以及转义符的理解

    关于js中单引号(')和双引号(")的使用以及转义的理解 这几天一直在画页面,身为开发人员的我之所以要画页面是因为当前项目中的页面上所有的东西都是从数据库中取得的,也就是动态的,类似于我们设 ...

  4. Dos中转义符

    遇到个问题: java test R=<file> 11 22 按理说应该打印 R=<file> 11 22 但是,系统报错,写的是系统找不到指定文件. 是"< ...

  5. 微冷的雨之Java中的多线程初理解&lpar;一&rpar;

    在讲解多线程前,我们必须理解什么是多线程?而且很多人都会将进程和线程做对比. 进程和线程 进程:进程是操作系统结构的基础,是一次程序的执行,是一个程序及其数据在处理机上顺序执行时所发生的活动,是程序在 ...

  6. 对Java中字符串的进一步理解

    字符串在程序开发中无处不在,也是用户交互所涉及到最频繁的数据类型,那么字符串不仅仅就是我们简单的理解的String str = "abc";一起来更加深入的看一下 在Java中,字 ...

  7. Java中的ThreadLocal深入理解

    提到ThreadLocal,有些Android或者Java程序员可能有所陌生,可能会提出种种问题,它是做什么的,是不是和线程有关,怎么使用呢?等等问题,本文将总结一下我对ThreadLocal的理解和 ...

  8. Java学习疑惑&lpar;8&rpar;----可视化编程&comma; 对Java中事件驱动模型的理解

    我们编写程序就是为了方便用户使用, 我觉得UI设计的核心就是简洁, 操作过于繁琐的程序让很大一部分用户敬而远之. 即使功能强大, 但是人们更愿意使用易于操作的软件. 近年流行起来的操作手势和逐渐趋于成 ...

  9. java中修饰符及其用法

    1. java中的修饰符 a. 权限修饰符 private,默认的,protected,public b. 状态修饰符 static,final c. 抽象修饰符 abstract 2. 类修饰符 p ...

随机推荐

  1. javascript学习第四课函数

    函数也是一种数据类型:function类型 所以函数也可当作一个数据作参数传递 三种函数的声明示例: 一般来讲,声明方式一和声明方式二比较常用,方式三比较少. 常用函数方式示例: 注意:虽然函数支持嵌 ...

  2. 怎样运用好ZBrush中的布尔运算

     我们知道DynaMesh常用于基础模型的起稿到中模的制作,它是ZBrush ® 4R2新增的功能,其强大的功能除了对模型进行重新布线,还可以进行布尔运算.配合Insert笔刷进行布尔运算,可以做出Z ...

  3. 初试FitNesse

    1.下载fitnesse-standalone.jar 2.在cmd中输入,开启fitnesse server 3.在浏览器中输入: 4.编写代码: package fitnesse.slim.tes ...

  4. FTP&plus;SFTP工具类封装-springmore让开发更简单

    github地址:https://github.com/tangyanbo/springmore FTPUtil 该工具基于org.apache.commons.net.ftp.FTPClient进行 ...

  5. Spark相比Hadoop MapReduce的特点

    (1)中间结果输出     基于MapReduce的计算引擎通常会将中间结果输出到磁盘上,进行存储和容错. 出于任务管道承接的考虑,当一些查询翻译到MapReduce任务时,往往会产生多个Stage, ...

  6. Kotlin 学习

    http://kotlinlang.cn/ 资料: https://segmentfault.com/a/1190000004494727 http://blog.csdn.net/u01413448 ...

  7. &lbrack;转帖&rsqb;awk 入门

    awk其实不仅仅是工具软件,还是一种编程语言.不过,本文只介绍它的命令行用法,对于大多数场合,应该足够用了. http://www.ruanyifeng.com/blog/2018/11/awk.ht ...

  8. Resetting a lost Admin password

    Resetting a lost Admin password 来源 https://cookbook.fortinet.com/resetting-a-lost-admin-password/ Po ...

  9. python 多线程实现

    多线程和多进程是什么自行google补脑 对于python 多线程的理解,我花了很长时间,搜索的大部份文章都不够通俗易懂.所以,这里力图用简单的例子,让你对多线程有个初步的认识. 单线程 在好些年前的 ...

  10. UVA 1995 I can guess the structer

    模 拟 /*by SilverN*/ #include<algorithm> #include<iostream> #include<cstring> #inclu ...