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,所以需要你再加一个\代表转义符。

追问

你只回答了一半呢。

追答

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

相似回答