Java数据中字符串操作的实现

Java数据中字符串操作的实现

在之前我一直想不通字符串的分割,匹配等等操作是怎实现的。知道后来的知识体系学习了解之后才知道原理,同时我也发现了自己为什么会想不到这一层道理。

先来说一说这些操作的实现吧:

如何实现字符串

字符串作为一种非原生的数据类型,我们会发现它其实也是由基本数据类型通过算法实现的。

数组

字符串的存储其实就是在方法内部使用char类型的数组数实现存储操作,也就是说在计算机的程序内部其实并不是真正的有一个string类型存在,而是人为封装的一个类而已。

其实质就是使用数组将字符串的每个字节一个一个的存储起来,将字符串拆分为基本的字符类型存储。

虽然基本数据类型在某种程度上也是一种人为实现的数据类型,但是相较于string还是底层了许多。

在Java中,其实一般的声明string类型的语句String a = "abc";的实质其实是:

public class test{
public static void main(){
    String a = new String("abc");
}
}
class String{
    private char []a;
    public String(~~~){
        ~~~~
    }
    ~~~~
}

类似这样的(可能语法上并不是这样,简单表明一下意思),其实质就是通过一个类来实现string的功能和定义。

那么为什么我们会产生string很像是基本数据类型的一种呢?很大一部分是因为我们在做字符串的拼接和赋值时和基本数据类型没有什么太大的差别。这就要归功于Java将string类型的加法方法和赋值方法直接在底层集合到了**+=**上,这也是为了方便使用。于是我们在使用时就会感觉和一般的基本数据类型没有什么太大的差别。

匹配

在说到我们在word中常用的字段匹配查找之前,我们要先注意到一个概念:子串

什么是子串呢?我们可以用集合和子集的概念来代换它,它与子集的概念最大不同的在于子串必须要是连贯的一个字符串才可以:

串"software"的子串有“soft”,“oft”,“war”等等,但“sft”并不是它的子串,因为“sft”在原串中的位置并不是连续的。

再说匹配,其实匹配就是将我想要去匹配的字段和原字段去做比对,将这个概念细化到底层一点其实就是将两个数组的每一个元素进行比较而已,两者都从0开始进行比对,如果第一次比对不一致的话,就让原字段从1开始再和匹配字段进行比较,直到循环到远足短的末尾。

当然,这只是最简单的匹配算法,其实还有很多的匹配算法针对不同的匹配环境或者是不同的匹配字段。在这里就不做详细的介绍了。

有关于字符串的正则切割

正则表达式我没有很详细的去了解,所以也不是很清楚它的具体运作原理。但是可以想到的是,既然string是以数组的形式进行存储的,那么实现字符串切割的方法大概就是通过遍历对特定的字符进行标记。实现在特定的字符节点进行分割。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值