对一道Java基础题目的思考

[size=large][size=medium]有人面试回来,把许多Java基础题目发到论坛,呵呵 ,大公司一般都考基础或者很高级的。
对其中一道基础题目刚开始不是很理解

String classPath2 = "java.lang.String";
System.out.println(classPath2.replaceAll(".", "/"));

结果输出的许多斜杠("/")。刚开始有点不相信。想为何输出的全是斜线呢???
然后我换一个和replaceAll类似的replace方法测试。结果得到预料的结果java/lang/String。我就推测为何他们这么不一样呢?
由于没有下载Java源码,不好确定他们内部如何实现。稍微想了下找到一种很简单的方法。

在IDE自动提示中,我让他显示replace和replaceAll中所有的重载方法。结果发现replace里的方法全是普通字符或者字符串类型,而replaceAll方法的第一参数显示regx,凭这里看出replaceAll方法第一个参数是个正则。
而点号用在正则中正好代表匹配所有字符。所以字符全被斜杠替换了。原来如此!!!!
根据这个推断我再把原有的字符串长度打印,然后再打印匹配后出现的字符串斜杠的长度,结果他们的长度正好一样。

String classPath = "java.lang.String";
System.out.println(classPath.replace(".", "/"));
String classPath2 = "java.lang.String";
System.out.println("classpath2--length\t"+classPath2.length());
String classpath3=classPath2.replaceAll(".", "/");
System.out.println("classpath3--\t"+classpath3+"\t"+classpath3.length());


如果实在想只是替换点号那就需要转义下
[/size][size=large][/size][/size]
基础很重要啊,千里之行始于足下,万丈高楼平地起
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值