字符之谜

本文深入探讨了Java编程中字符的基本概念及其转义字符的应用,包括转义字符的解读时机、正则表达式的特殊字符处理、URL语法理解和参数字符的使用。通过实例解析,帮助开发者更好地理解并运用这些特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符,从字面理解,就是一些char型的东东,然而放到程序里,就引申出了多种解读方式

1、转义字符

在程序中,转义字符何时被编译器解读呢?它的解读时刻可以理解成在编译之前,编译器先进行转义字符的替换。

比如下面的程序段:

(a)//\u0022是"

       System.out.println("a\u0022.length()+\u0022b".length);

打印2

(b)有一行注释是:/*from F:/a/b/c/unit*/

这是合法的吗?注意编译器查找到\u会认为后面接的是unicode码,而注释之后没有跟四位数字,那么编译器会拒绝编译

万变不离其宗,阅读程序时,注意到转义的Unicode码,然后将其转换再编译。

提示:不要随便使用Unicode的转义字符,除非迫不得已

2、正则表达式的特殊字符

这是关于正则表达式的理解.

string.replaceAll支持正则表达式,因此在使用这个函数时要主要到。

如:已有一个类com.javapluzzlers.Me

Me.class.getName().replaceAll(".","/")+".class";

替换后会是com/javapluzzlers/Me.class吗?

运行后发现不是。因为“.”在正则里表示匹配任意的字符,替换后会是一串/////////////.class,

3、URL

由于java支持标签,那么如果再程序段存在一条http://blog.youkuaiyun.com这样的语句,那么这个程序段会被编译吗?答案是会的。

因为http:被理解为标签,而//blog.youkuaiyun.com被理解为注释,显然不存在任何语法错误。

4、参数字符

考察下StringBuffer。

StringBuffer sf = new StringBuffer('M');

sf.add("a");

System.out.println(sf);

打印什么?会是Ma吗。

查看API会发现,StringBuffer并不存在参数为char的构造函数,但是存在参数为int 的构造函数,因此声明语句实际是声明了一个容量是’M‘(77)大小的buffer。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值