A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HM许涛 中级黑马   /  2013-4-18 14:58  /  2009 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

以下两段代码,一个显示2、一个显示3。不是很理解原因。个人猜测是否有隐藏的开头之类的部分,但是找不到相关文档说明,希望有知道的不吝赐教。
class Noname1
{
        public static void main(String[] args)
        {
                String str="a黑马程序a训练营";
                sop("数量=  "+str.split("a").length);
        }
        static void sop(String str)
        {
                System.out.println(str);
        }
}
执行结果显示为 3。
class Noname1
{
        public static void main(String[] args)
        {
                String str="黑马程序a训练营a";
                sop("数量=  "+str.split("a").length);
        }
        static void sop(String str)
        {
                System.out.println(str);
        }
}
结果为 2。

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

4 个回复

倒序浏览
public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串。
该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。
哥们懂了没....

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
刘胜寒 发表于 2013-4-18 15:14
public String[] split(String regex)根据给定正则表达式的匹配拆分此字符串。
该方法的作用就像是使用给 ...

嗯,谢谢哈,不是太理解,我再去学习下正则表达式
回复 使用道具 举报
其实在java中很多方法在涉及到头和尾的操作时,都是只要头,不要尾的,比如说String中的toString()方法
这个spli()t也是一样的,你在切割的时候,当a在头部的时候,你切割获得了一个空字符串对象,即"",这个不是null,也不是一个空格,是一个空字符串。所以是三个。
而第二种,a是放在了结尾了,即使切到了结尾的空字符串,但是并不返回,即取不到,所以返回的字符串数组只有两个元素。所以长度为2

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马