java中斜杠"/"和反斜杠"\"分别代表什么意思

 我来答
康忆南DO
2018-07-24 · 超过148用户采纳过TA的回答
知道答主
回答量:136
采纳率:98%
帮助的人:53.4万
展开全部

概述

斜杠"/"就士普通的字符;

反斜杠"\"则在java中和不同的字符会组成不同的转义字符

解析


引用说明:

有正斜杠与反斜杠之分,正斜杠,一般就叫做斜杠,符号为“/”;反斜杠的符号为“\” 。

斜杠(/)在JAVA中没有什么特别的意义,就是代表一个字符‘/’; 


反斜杠(\)则不然,它和紧跟着它的那个字符构成转义字符,如

“\n”(表示换行)

“\””(表示字符‘”’)

所以在字符串中要表示字符'\'要用“\\”来表示

例:

如果这样定义一个字符串String s = “name\sex”是错误的

要这样定义String s = “name\\sex”; 

引用注意:

在正则表达式中的“\\”表示和后面紧跟着的那个字符构成一个转义字符(姑且先这样命名),代表着特殊的意义;所以如果要在正则表达式中表示一个反斜杠\,应当写成“\\\\”。

如果这样获得一个Matcher

Matcher m = Pattern.compile(“\\”).matcher(“\\”)将会报错

应当这样写Matcher m = Pattern.compile(“\\\\”).matcher(“\\”)才是正确且匹配的。

接下来,来看一下String类中replace(CharSequence target,CharSequence replacement)方法与replaceAll(String regex, String replacement)方法的区别:

#code:

#out:

可以看出上面两种都返回相同的替换结果。 
这里的关键是String.replaceAll()是用regular expression 来作为参数的。

但是java本身的字符串对于转义符\也有类似的处理。

首先,java会把“\\\\”解释成一个字符串(其中包含两个char)。

接下来,由于replaceAll是以正则表达式作为参数,所以“\\”被解释成一个regex。对于一个regex来说这就代表着一个字符,就是“\”。

对后面的那个8个\来说,最终会被解释成“\\”。 


换言之,假设String.replaceAll()是以普通字符串,而不是regex作为参数,那么这样写代码: String target = source.replaceAll('\\', '\\\\'); 就可以了。 

拓展内容

转义字符

所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。

字符型常量所表示的值是字符型变量所能包含的值。我们可以用ASCII表达式来表示一个字符型常量,或者用单引号内加反斜杠表示转义字符。

'A', '\x2f', '\013';

其中:\x表示后面的字符是十六进制数,\0表示后面的字符是八进制数。例如十进制的17用十六进制表示就是

‘\x11’,用八进制表示就是‘\021’;

注意:在Turbo C 2.0中,字符型常量表示数的范围是-128到127,除非你把它声明为unsigned,这样就是0到255。

上面我们见到的\x,\n,\a等等都是叫转义字符,它告诉编译器需要用特殊的方式进行处理。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式