string contains不区分大小写_Java之常用类——String、StringBuffer、StringBuilder类及Enum类...

String类 acc00ff8eef975f4688efe8b14ba9ac3.gif

作为java.lang包中非常常用的一个类,我们有必要来了解一下这个类的一些构造方法和常用方法:

1

构造方法

在前期的学习中我们知道了String类可以直接用String s = "向软件工程师进发的小白";或String s = new ("向软件工程师进发的小白");这种方式来新建一个字符串对象,今天,我们就来学习新的一些构造方法:

8f822e0efc2833c32f4541322574c811.png

其中,我们只需要知道其实Stirng类的构造方法中还能够传入byte数组或者char数组来组成一个字符串就行,而数组后面还可以跟两个参数:一个是初始位置,一个是截取的长度。

2

常用方法

作为一个字符串类型,我们肯定要知道它有哪些方法可以调用,才能提高我们的开发效率,之前我们讲了它的equals方法和toStirng方法,今天我们就讲些除了这两个其他常用的:

1ea65999e460fe998c5cc6852afd1873.png

当你需要取得字符串某一特殊位置的字符时,就需要用这个方法。

54f20a7c05a7952b6a9440ac9b7b63f3.png

equals方法只能判断相等不相等,而compareTo方法就能比较两个字符串哪个大了,如果调用者大,返回大于0的整数;如果调用者等于传入的,返回0;如果调用者小,返回小于0的整数

cdf5609c953ebc4433cab89ca8b91c32.png

当你需要判断字符串里面有没有固定的字符序列(字符串)时,就需要contains方法。

d1359fa8bde3b606a1074943b0240b79.png

当你需要判断字符串是否以某个字符串结尾,就需要用这个方法。

49f71328c12814f6a90198e29b4dc42a.png

equals方法比较要考虑大小写,这个方法就可以忽略大小写。

2c5bec39e74157d63d4c0bcf3a18bda2.png

当你需要找某个指定的字符串在该字符串中第一次出现的位置时,需要用这个方法。

ea609942fb3d4d32a55a2e0f6ca57c18.png

判断这个字符串是否为空。

e453ba66b0d692b3f3538607b82db67a.png

当你需要找某个指定的字符串在该字符串的最后出现的位置时,需要用这个方法。

10e952c7892eb4006682bcec168d3727.png

这个方法要和数组的length属性分开。返回字符串的长度用的是length方法,返回数组的长度用的是length属性

7ae6c1bd9d2bf9654add2e598aa61385.png

更改字符串里固定字符的值。796553bce65ce1c80a5662b9edfc125b.png

不用管正则表达式,传入一个字符串进入,这个方法用这个字符串为界限,划分成数组中的若干值。

0c7fc9de5f80fee0faa5ea647d0096f9.png

判断是否以指定字符串开头。

24586e0d0bed3ac98504a28871da2f62.png

输入起始下标或者输入起始和末尾的下标,截取出指定的字符串。

521467c803159958f1b5d6d8b823ece4.png

转换为字符类型的数组。

98e8b2c9b43e39ff9ce0141e0056ebc0.png

转换为小写。

aaf9e6db11f0a743b708182ba93917ba.png

转换为大写。

6fe8eaa77279f2e2f00e20936fb6eb39.png

将字符串前和后的空白省略。

a1371b16bde10eb347df258f2f098402.png

静态方法,将传入的对象转换为字符串。对于valueOf我们之前其实在方法覆盖和重载的对比中我们就有简要提到过,我们现在再看看println的源代码,会发现底层都会调用String.valueOf这个方法,所以我们可以知道输出到控制台的东西都会转换为字符串。

StringBuffer与StringBuilder

关于java.lang包下的类,其实还有两个与String类差不多的两个类:StringBuffer与StringBuilder类。这两者非常相像的,区别就是前者线程安全,后者线程不安全(以后就知道了)。:

对于String类型,我们之前在Java运行内存图说过,只要在类中用""括起来的都是字符串常量,会依次在我们的JVM中的常量池中慢慢堆积。因此,如果我们用String类型在进行一些字符串的拼接的时候会显得效果不那么理想,因为每有一个新的字符串,常量池中就会多一个字符串常量。而StringBuffer和StringBuilder就是来解决这样的问题的。

那这两个类是怎么解决这样的问题呢?一切还要从源代码说起(以StringBuffer为例):

77c1c9ea6cddd44c9ff99a933c1c64a4.png

先看它的简单的三个构造方法,发现它只是调用了父类的构造方法,因此我们继续往上看:

b393054234ee2e25d6d1ca23db1725e0.pngb393054234ee2e25d6d1ca23db1725e0.png

我们会发现它的父类是一个AbstractStringBuilder类,通过它的这三个构造方法及父类的构造方法我们可以看出:

5708c8b365fac6465d70bc045d5988a1.png

1、它的默认初始容量是16,我们可以在构造方法中传入一个int类型的初始容量大小或者在构造方法中传入字符串使之有内容。

2、这个类的底层是个byte数组,所以我们在进行字符串拼接的时候不会像String类那样新建一个字符串常量。

3、如果容量超过16,会自动扩容。

而作为一个字符串类,至少要知道它要怎么拼接字符串:

2cac4d73953f7fc17a6786e994fae3c2.png

其他的删除等的其他方法读者可以自行查找。

0cc0f17fbb4b71cdfbf64b12db5258b3.png

对于要经常进行拼接的字符串,我们就使用StringBuffer或StringBuilder类来进行。减少给JVM的压力。

扩容会降低效率,建议用StringBuffer和StringBuilder类时先赋一个大概的值。减少扩容的次数。

Enum类 acc00ff8eef975f4688efe8b14ba9ac3.gif

对于这个Enum枚举类,我们也是简要介绍一下。在我们平时的编程的时候,经常会用到标记。最常用的就是boolean类型的标记,比如:我们在判断一个方法执行成功或者失败,我们返回一个boolean类型的值。true表示执行成功,false表示执行失败。

但有没有可能我们用于标记的记号不够用呢?这种情况是有的,这时候我们可以用int类型或者其他数据类型来充当标记的记号。但其实这种方法不太好,因为这种标记有任意种数值来表示一种结果,如果后期我们修改了标识或者其他情况,这种标记无疑是很难辨认的。因此,我们就需要Enum类:

这个类也是一个引用数据类型,需要我们自己创建一个类来写。比如:我想要一个枚举类用于判断当一个数大于0,走右边;等于0,走中间;小于0,走左边。

6f5b2c4d18d6a0a47c9b9ec954893669.png

Enum中的属性可以看成是常量。这个类也可以加方法,这里不再介绍。

要作为一个标记的类型,最好能保证这个类型里的值都能够被作为记号来识别。这就解释了为什么像int这种类型的值不推荐做标记。因为他们的值实在是太多了,不能都作为记号,难以辨别。所以enum就能很好的解决这个问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值