写点什么

java 零基础入门 -String

作者:喵手
  • 2022 年 7 月 14 日
  • 本文字数:2783 字

    阅读完需:约 9 分钟

java零基础入门-String

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

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

我是一名 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()方法。其方法是可以将多个字符串给拼接起来,并且用一个界定符分隔开,还是很便利的。

具体演示代码如下:

@Testpublic 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 !!!

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

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

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

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

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

发布于: 刚刚阅读数: 6
用户头像

喵手

关注

还未添加个人签名 2022.07.05 加入

还未添加个人简介

评论

发布
暂无评论
java零基础入门-String_Java_喵手_InfoQ写作社区