Java 中的反斜线"\"

关于Java中的反斜线一直没有很好透彻的了解过。
现在网上看到这样一段文字,觉得说得很对,但也没能完全明白。如下:

反斜线 ‘\ ’ 转义和引用
在初期运用正则表达式的时候可能竟然因为对‘ \ ‘不理解而产生不必要的错误,这个字符在 Java 中是非常特殊的,它的作用就是转义和引用。
引用 :反斜线 用于引用其他将被解释为非转义构造的转义字符 ,这话的确很拗口,仔细分析其实是不难理解的,比如想要声明一个内容为一对英文符号的双引号的字符串,也就是 ”” ,那么如何声明呢?如果直接这样声明
String str = “”””;
编译器是肯定不通过的,因为在 Java 中双引号是转义字符,也就是说单一个双引号表示的并非其原意,那么我们如何声明呢?其实很简单只要改成这样就解决了。
String str = “\”\””;
我们要将一个双引号原本的意思表示出来使用反斜线即可,也就是说 ” 在 JVM 中被认作为字符串的声明符号类似于操作运算符,而前面加上一个反斜线 \ 就是告诉 JVM 我要双引号的文本意思(也就是上面那句话中的 解释为非转义构造 ),即一个符号。
转义 :反斜线同时也可以用于引用转义构造,举一个最简单的例子, n 原本没有任何其他意思,也就是非转义字符,而前面加上 \ ,变为 \n 就代表一个换行符,这时反斜线就把 n “转义“了,注意这里的 \n 是事先声明过的,如果来一个 \v 在编译时就会报错。在不表示转义构造的任何字母字符前使用反斜线都是错误的;它们是为将来扩展正则表达式语言保留的。可以在非字母字符前使用反斜线,不管该字符是否是非转义构造的一部分。当然如果要解释非转义的其本身,可以这样 \\

关于Java中反斜线能不能说得更明白一点,或者推荐讲得明白的帖子看看?反斜线大师们请回答一下我,谢谢。

第1个回答  2013-12-20
反斜线 ‘\ ’JAVA中代表着转义字符的意思,理论你已经看了,我举个简单的例子吧
比如,JAVA类中,你需要把文件最后存储的路径保存在数据库中,通常我们在电脑操作中看到的路径如下 src\com\dao
但是这个路径一般是以字符串形式存在数据库中,但是JAVA语言它不知道你的\号到底是路径中的下一层的意思,还是字符串"\"的意思。所以正确的写法应该是src\\com\\dao之类的。
总结一句话就是,转义字符的意义就是避免出现二义性,二义性是所有编程语言都不允许的。
希望你能明白,多写几个例子,慢慢就领悟了,祝好运!追问

在正则表达式中,
匹配一个普通的反斜线,为什么应该是String regex = "\\\\";

追答

转义 和防止转义啊

我给你写了一个例子,你一看就明白了,如图:

追问

你好。谢谢你的继续回答,可能我对正则表达式理解不够深。但是还想请你帮我解释下下面三个例子的运行原因。怒谢。

1.

为什么会崩溃?

2.

不明白。

3.

这样匹配反而是对的,为何。

追答

看了你上面的 1、2、3,想给你说明以下几点:第一点:你第一个问题的运行,那个报错的情况应该是不存在,请你再运行一下,其运行结果应该和第三个问题的运行结果是一样的!
第二点:strTemp和regex1 用 System.out.println来输时,JAVA会把它当成一个字符串输出它的值。 matches是JAVA里面的正则表达式匹配,参数值.matches(正则表达式)
正则表达式"\\\\"其实是"\\"的意思,因此
第二个问题中的System.out.println(strTemp.matches(regex1)) 在JAVA内部其实相当于
System.out.println(“\\\\”.matches("\\")) 结果是 false;
第三个问题中的System.out.println(strTemp.matches(regex1)) 在JAVA内部其实相当于
System.out.println(“\\”.matches("\\")) 结果是 true;
另外,希望你多了解下 matches的含义
http://zhidao.baidu.com/link?url=RAmkHkHKgcSshFHmBTI1Py8-Sq69j46l2Ty650Mz0NEetNJfDgo0dprYSm8ank3PhrklqpQooLZBGWrzrz14PK
祝好运!!!

本回答被提问者和网友采纳
第2个回答  2013-12-20
你说的很有道理,关键是在使用中了解,不要一味的要求理论。
第3个回答  2013-12-20
我觉得你引用的这两段已经说的比较清楚了。如果有什么不明白可以说明下是哪里不明白。这样就好针对你不明白的地方给你讲解下。追问

您好:
那我问你个例子吧。正则表达式中为什么匹配数字的话用的是
String regex = “\\d”,
匹配一个普通的反斜线,
为什么应该是
String regex = "\\\\";

可以根据上文的理论帮我解释一下这俩例子吗?

追答

String regex = “\\d”,是因为java无法识别\d,所以需要你再加一个\代表转义符。

追问

你只回答了一半呢。

追答

\ 用\\来匹配,\\\\匹配\\

java中斜杠"\/"和反斜杠"\\"分别代表什么意思
在Java中,斜杠“\/”通常用作路径分隔符,例如在文件路径中。在字符串字面量中,一个斜杠可以用来表示特殊字符,如目录分隔符或文件扩展名分隔符。在正则表达式中,斜杠用作分隔符来指定不同的正则表达式操作。反斜杠“\\”在Java中用作转义字符。它用来引入特殊字符,这些特殊字符在Java语言中有特定的意...

java中斜杠"\/"和反斜杠"\\分别代表什么意思"
Java语言中,斜杠“\/”没有特殊含义,一个斜杠“\/”只是表示字符'\/',两个“\/\/”表示注释标记;反斜杠“\\”表示它和紧跟着它的那个字符构成转义字符。常见的转义字符有:“\\n”表示换行并移动到下一行开头,“\\t”表示跳到下一个Tab的位置,“\\0”表示空字符(NULL)。

java中斜杠"\/"和反斜杠"\\"分别代表什么意思
概述斜杠"\/"就士普通的字符;反斜杠"\\"则在java中和不同的字符会组成不同的转义字符 解析引用说明:有正斜杠与反斜杠之分,正斜杠,一般就叫做斜杠,符号为“\/”;反斜杠的符号为“\\” 。斜杠(\/)在JAVA中没有什么特别的意义,就是代表一个字符‘\/’;反斜杠(\\)则不然,它和紧跟着它的那个...

老生常谈java路径中的反斜杠和斜杠的区别
在Java中斜杠和反斜杠都有各自不同的意思,其中:斜杠“\/”表示地址路径的下一级目录;反斜杠“\\”表示转义字符,例如:要做制表,可以输入:\\t;做换行:\\n等。如果要输出反斜杠“\\”也需要用转义字符:“\\\\”

java的反斜杠的字符串怎样表示的?
\\:表示为\\\\ \\\\:表示为\\\\\\ 在JAVA中“\\”是转义字符,所以要表示一个字符串“\\”就要用“\\\\”两个连续的转义字符表示一个字符串“\\”,所以,两个连续的“\\\\”就需要用“\\\\\\”来表示

Java中反斜线\\的使用彻底把我搞晕了,请高手为我好好梳理梳理
如果需要转义,前面也需要加一个\\。你可以简单理解,java中的\\之前必须有一个\\进行转义,即java中的\\均是以偶数出现的。可以将\\\\理解为一个\\。你的问题可以是这样的:\\\\. 等价与 \\.\\\\\\等价于 \\\\ 至于你说的\\\\\\我并没有在java正则表达式中见到过,能举个例子吗?

java中使用正则表达式替换字符串时转义符反斜杠'\\'异常问题
1. 第一层转义:Java 字符串中的反斜杠用于转义。表示一个字面意义上的反斜杠需写作 '\\ '。2. 第二层转义:正则表达式同样使用反斜杠作为转义字符。为将字面意义上的反斜杠传递给正则表达式,需再对每个反斜杠使用两个反斜杠,即'\\\\\\ '。解决策略不依赖于处理用户输入内容。直接使用正则表达式查找并...

java正则表达式如何匹配反斜杠?
可能这个问题对于初学者来说比较头疼,但是只要别人一点可能就明白了。JAVA中匹配反斜杠的正则表达式的书写方式为:1 String regex="\\\\\\";注意了,一定要写四个反斜杠,第一和第三个反斜杠是用作java字符串的转义,实际上只代表两个反斜杠。其实只要输入如下代码运行验证一下即可:System.out.print("\\...

Java怎么输出两个反斜杠\/\/,怎么输出两个双引号""等等?
要输出\/\/,直接 System.out.println("\/\/");就行,不需要转义。输出""可以用 System.out.println("\\"\\"");输出\\\\可以用 System.out.println("\\\\\\");

java中,输出反斜杠或者双引号的时候为什么要用一个反斜杠来框呢
因为 引号和反斜杠 在语法里都是有特殊含义的 所以为了避免 语意上的冲突,前面就加上了 反斜杠,相当于一次转码了,你也可以这样看,转义字符\\n是换行,那\\\\就表示的时\\,\\"表示的时“其实这样的应用 有很多,比如 底层数据通信, 要该规定协议,也就是 数据包的格式,那这个数据包 就有 头 ...

相似回答