java零基础入门-String

109 阅读7分钟

​持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第24天,点击查看活动详情

哈喽,各位小伙伴们好,我是喵手。

       今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流 学 习,互相学习,才能成长的更快,对吧。

       我是一名java开发,所以日常接触到最多的就是java啦,所以我趁自己有空,就来好好回忆,把自己学到的会的,进行输出,不图什么有回报,只想能帮助到更多的小伙伴,就好。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对喵手我创作道路上最好的鼓励与支持!

一、概述

       论前几期啊,我们是分别讲了Object类Date类FormDate类Calendar类System类StringBuilder类,不知道大家掌握的如何,如果没有及时巩固的同学,可以看我这里,我给大家罗列了下,快速学习通道,只希望能帮助到大家更好的学习与成长,这就是我写作的初衷。

二、前言

​       近期有个小伙伴在看我的文章,说我在讲完基本类型,只是顺带提了一嘴String,然后说他的老师在课上对这String讲了足足一节课,好家伙,我觉得啊,这勾起了我的回忆,当初我看String的源码及知识点时,也是看了很久,这怪我,疏忽大意了啊。

既然被这位小伙伴吐槽,那我就为大家在这期,简单跟大家来聊聊它吧。

二、本期教学目标

  • 掌握字符串概念
  • 掌握字符串子串提取
  • 掌握字符串拼接
  • 掌握不可变字符串概念
  • 掌握如何判断字符串是否相等
  • 掌握常用的StringApi

三、正文

1️⃣概念

       说起String字符串,我们都知道它是Unicode字符序列。比如:“hello”,它就是由5个Unicode字符组成,h e l l o 就是组成“hello”的Unicode的5个字符。在java中,我们都知道没有内置的字符串类型,而是在标准的java类库中提供了一个预定义类---String。每个用双引号括起来的字符串都是String类的一个实例。

具体如下:

String a = ""//空字符串

String b = "hello world!"

String c = "1"

2️⃣子串

       说到字符串,那自然我们会用到其本身提供的substring方法,该方法可以对字符串进行切割,从一个较大的字符串提取出一个子串。例如:

String str = "hello";

String subStr = str.substring(0,3);

       你们来解答一下,该subStr输出应该是什么?其实它就等于创建了一个新的字符串subStr = "hel"。

​         解释一下:然后对于substring方法,对于它的第二个参数,其表示是不想复制的第一个位置。这里要复制的位置为0,1,2(从0到2,包括2),在substring中从0开始计算,直到3位置,但是不包含3,其中substring(0,3) == >[0,3),表示这个范围。

3️⃣拼接

       除了字符串可以切割,它也可以拼接,虽然你们可能会说,直接用“+”不就拼接了两个字符串嘛,是没问题。比如:

String a = "bug";
String b = "菌";

String c = a + b;

给大家看下运行结果,是不是将a b字符串给拼接起来了?

       但是我这里想说的是,这里想介绍一下join()方法。其方法是可以将多个字符串给拼接起来,并且用一个界定符分隔开,还是很便利的。

具体演示代码如下:

    @Test
    public void test2() {

        String a = String.join("&","a","b","c");

        System.out.println(a);
    }

运行截图如下:

4️⃣不可变字符串

       我为什么说是不可变字符串呢?那是由于String类没有提供修改字符串的方法,比如对字符串进行某个字符修改,这没有提供,所以在java中,String类是不可变的,因为对于相同的字符串而言,它们其实是指向存储池中的同一个位置的。

       这样对于它不可变的好处就是能使字符串进行共享。

5️⃣检测字符串是否相等

       对于这个问题,项目中实在是太常见了,这不就用到了equals()方法,使用模板如下:

a.equals(b);

       如果对于字符串a与字符串b相等,则返回true,否则返回false。需要注意的是a与b可以是字符串变量,也可以是字符串字面量。具体演示如下;

    @Test
    public void test3() {

        String a = "a";
        String b = "a";
                

        System.out.println(a.equals(b));
    }

运行结果如下:

       但是想要检查两个字符串不区分大小的情况下是否相等,那就可以用这个equalsIgnoreCase()。举例如下:

    @Test
    public void test3() {

        String a = "a";
        String b = "A";


        System.out.println(a.equalsIgnoreCase(b));
    }

大家请看 如下运行截图:是不是也是返回了true。

       还有一点需要大家注意的,也是经常会犯迷糊的。一定不要用 == 运算符判断两个两字符串是否相等,这个运算符只能够确定两个字符串是否存放在同一个位置上,当然,如果字符串存放在同一个位置上,这两字符串必然相等。但是完全有可能将内容相同的多个字符串存放在不同的位置上。

比如如下演示:

    @Test
    public void test4() {

        String a = "hello";
        String b = "hel";

        System.out.println(a == "hello");

        System.out.println(a.substring(0, 3));
        System.out.println(a.substring(0, 3) == b);
    }

       你们可以看下运行结果。 是不是发现了b字符串的值是[ hel ]啊,对字符串a进行substring方法截取后的字符串内容同样也是[ hel ],但是二者竟然不相等,为什么? 

       其实这不就证实了我上面提到的,内容相同的字符串存储放置完全也有可能会不同,所以用 == 运算符进行字符串校验,判断结果自然就返回了false啦。​       是不是很生气,这个你们可以课后去研究研究,究竟背后的原理是啥?

6️⃣String Api

对于String类,它包含了50多个方法。如下我来分享点String常用的Api。

  • boolean blank(); //如果字符串为空或者由空格组成,返回true,否则返回false。
  • int compareTo(String str); //按字典顺序,如果字符串位于str之前,返回一个负数,如果 字符串位于str之后,返回一个正数;如果两字符串相等,返回0;
  • boolean empth() //判断字符串是否为空。为空返回true,否则返回false
  • ...

​​... ...

       好啦,以上就是本期内容的全部教学内容啦,如果对文中的任何知识点有疑问,欢迎评论区评论留言呀,我看见都会一一解答的。

四、文末

       教学是结束了,但是有些话不知我但讲不当讲,啊哈哈, 可我还是想说给你们听听。如下是我很喜欢的一句话,我打算送给你们,希望我们都能变得更好更优秀。

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!

-------------------------------------------

⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

-------------------------------------------