返回顶部
首页 > 资讯 > 精选 >java的String类如何使用
  • 812
分享到

java的String类如何使用

2023-06-30 16:06:59 812人浏览 独家记忆
摘要

本文小编为大家详细介绍“java的String类如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“java的String类如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、认识String1.jdk

本文小编为大家详细介绍“java的String类如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“java的String类如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

java的String类如何使用

一、认识String

1.jdk中的String

首先我们看看JDK中的String类源码,它实现了很多接口,可以看到String类被final修饰了,这就说明String类不可以被继承,String不存在子类,这样所有使用JDK的人,用到的String类都是同一个,如果String允许被继承,每个人都可以对String进行扩展,每个人使用的String都不是同一个版本,两个不同的人使用相同的方法,表现出不同的结果,这就导致代码没办法进行开发
继承和方法覆写在带来灵活性的同时,也会带来很多子类行为不一致的问题
java的String类如何使用

2.创建字符串的四种方式

方式一:直接赋值(常用)
String str = " hello Word "

方式二:通过构造方法产生对象
String str1 = new String(" hello word ");

方式三:通过字符数组产生对象
char[] data = new char[]{‘a’ , ‘b’ ,‘c’};

方式四:通过String的静态方法valueOf(任意数据类型) = >转为字符串(常用)
String str2 = String.valueOf(10);
java的String类如何使用

3.字符串的字面量

字面量:直接写出来的数值叫做字面量
10 – > int字面量
10.1 --> double字面量
true --> boolean字面量
" abc " – > String字面量
字符串的字面量其实就是一个字符串对象
String str = “hello word”;
String str2 = str;
此时这既是一个字符串的字面量,也是字符串的对象,为了方便理解,画个图,此时是为了方便理解我们暂时先认为它储存在堆上,其实实在方法区中存放
java的String类如何使用
若此时让str2 = “Hello”;此时对str的输出并没有影响,因为被" "括起来的Hello也是一个字符串对象,说明此时在堆上新开辟了一块空间,而此时str2保存的就是新对象的地址空间,对str没有影响
java的String类如何使用

4.字符串比较相等

所有的引用数据类型在比较是否相等时,使用equals方法比较,JDK的常用类,都已经覆写了equals方法,直接使用即可
引用数据类型使用 == 比较的是地址
下图是两个引用指向了同一块地址空间,和字符串的常量池有关
java的String类如何使用
下图产生了两个对象,两块地址空间,使用==返回的就是false
java的String类如何使用
equals的比较大小是区分大小写的比较
java的String类如何使用
equalsIgnoreCase方法是不区分大小写的比较
java的String类如何使用

二、字符串的常量池

1.什么是字符串常量池

java的String类如何使用
当使用直接赋值法产生字符串对象的时候,JVM会维护一个字符串的常量池,若该对象在堆中还不存,就产生一个字符串对象加入到字符串常量池中;当继续使用直接赋值法产生字符串对象的时候,JVM发现该引用指向的内容在常量池中已经存在了,此时就不再新建字符串对象,而是直接复用已有的对象,这也是为什么上图的三个引用指向的是同一块地址
java的String类如何使用
当第一次产生对象的时候,常量池中还什么都没有,就在常量池中产生一个字符串对象存入,当第二第三次产生对象时,JVM发现常量池中已经存在相同的内容,就不再产生新的对象,直接指向和str1相同的地址空间

java的String类如何使用
程序都是从右向左执行的,此时第一行代码的右边就是一个字符串常量,也是一个字符串对象,所以先在常量池中开辟一块空间,然后新建一个字符串对象存入,程序再往左执行,遇到new关键字,此时新建一个对象存入堆中,然后str1 指向堆中的对象,在指向第二行第三行代码时,发现常量池中已经存在该对象,不再新建,遇到new关键字就新建对象,内存图如下:
java的String类如何使用

2.手工入池方法

String类提供的intern方法,这是一个本地方法:
java的String类如何使用
调用intern方法会将当前字符串引用指向的对象保存到字符串常量池中,有两种情况:
1.若当前常量池中已经存在了该对象,则不再产生新的对象,返回常量池中的String对象
2.若当前常量池中不存在该对象,则将该对象入池,返回入池后的地址。

看一下下面这几行代码的输出
java的String类如何使用
因为intern方法是有返回值的,此时str1只是调用了intern方法,并没有接收返回值,所以str1还是指向堆中的对象,str2指向常量池中的对象,所以返回false;
java的String类如何使用
只要接收一下调用intern方法的返回值,就会返回true;
java的String类如何使用
此时就将str1指向的对象手动入池了,池中已有该对象,直接让str1指向该对象
java的String类如何使用
2.再看看下面这几行代码的输出
java的String类如何使用
手动入池时,池中还没有任何东西,直接移入常量池中
java的String类如何使用


三、字符串的不可变性

1.为什么不可变

注意:所谓的字符串不可变,指的是字符串的内容不可变,而不是字符串的引用不能变
java的String类如何使用
这里的不可变指的是" hello " , " world " , " helloworld " , " !!! " , 以及拼接后的"helloworld!!!"这些已经创建好的字符串对象,这些对象一旦声明后就无法修改其内容,但是引用是可以改变的,一会指向hello,一会指向helloworld,一会指向hello world!!!,这都是可以的
java的String类如何使用
字符串就是就是一个字符数组—> char[],字符串其实在字符数组中保存。字符串的内容为什么不能改变?我们看看字符串的源码就知道了。
java的String类如何使用
我们可以看到String内部的字符数组是被封装起来的,String类的外部无法访问到这个字符数组,更何谈改变字符串的内容
String str = " hello ";
java的String类如何使用

2.如何修改字符串内容

在运行时通过反射破坏value数组的封装
2.更换使用StringBuilder或者StringBuffer类 - - 已经不是一个类型了
a.StringBuilder:线程安全,性能较强
b.StringBuffer:线程安全,性能较差
除此之外两个类的用法完全相同

若需要频繁的进行字符串的拼接,使用StringBuilder类的append方法,这里只产生了一个对象,一会变成hello,一会变成hello world
java的String类如何使用

3.StringBuilder类的具体使用

StringBuilder类和String是两个独立的类,StringBuilder类就是为了解决字符串的拼接问题产生的
StringBuilder类和String类的相互转换:

StringBuilder变为String类调用toString方法即可
java的String类如何使用

String类转变为StringBuilder类,使用StringBuilder的构造方法或者append方法
java的String类如何使用
java的String类如何使用
其他常用方法:
a.字符串的反转操作,sb提供的reverse();
java的String类如何使用

b.删除指定范围的数据,delete(int start,int end);删除从start开始,到end之前的所有内容,左闭右开区间
java的String类如何使用

c.插入操作,insert(int start,各种数据类型):从start索引位置开始插入,插入的起始索引为start
java的String类如何使用

读到这里,这篇“java的String类如何使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: java的String类如何使用

本文链接: https://lsjlt.com/news/330159.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java的String类如何使用
    本文小编为大家详细介绍“java的String类如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“java的String类如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、认识String1.JDK...
    99+
    2023-06-30
  • 如何使用String类的equals、==和intern()
    本篇内容主要讲解“如何使用String类的equals、==和intern()”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用String类的equals、==和intern()”吧!&n...
    99+
    2023-06-16
  • Python中String类型如何使用
    这篇文章给大家介绍Python中String类型如何使用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Python String类型应用代码示例:>>> 'hello wo...
    99+
    2023-06-17
  • Java的String类的用法
    本篇内容主要讲解“Java的String类的用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java的String类的用法”吧!Java String类字符串广泛应用在Java编程中,在Jav...
    99+
    2023-06-02
  • Java的Period类如何使用
    这篇文章主要介绍“Java的Period类如何使用”,在日常操作中,相信很多人在Java的Period类如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java的Period类如何使用”的疑惑有所帮助!...
    99+
    2023-06-30
  • Java的Duration类如何使用
    本文小编为大家详细介绍“Java的Duration类如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java的Duration类如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Duration和Pe...
    99+
    2023-06-30
  • Java的Class类和Object类如何使用
    这篇文章主要介绍“Java的Class类和Object类如何使用”,在日常操作中,相信很多人在Java的Class类和Object类如何使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java的Class类...
    99+
    2023-06-02
  • Java ThreadLocal类如何使用
    今天小编给大家分享一下Java ThreadLocal类如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。如图...
    99+
    2023-07-02
  • 如何使用Java Optional类
    这篇文章主要讲解了“如何使用Java Optional类”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Java Optional类”吧!注意:示例代码要求使用Java 11及更高版本...
    99+
    2023-06-02
  • Java中String类的使用方法有哪些
    这篇文章主要介绍“Java中String类的使用方法有哪些”,在日常操作中,相信很多人在Java中String类的使用方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中String类的使用方法...
    99+
    2023-06-25
  • Java中的String类使用方法有哪些
    今天小编给大家分享一下Java中的String类使用方法有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。StringSt...
    99+
    2023-07-06
  • java中string类如何判断相等
    在Java中,String类有两种方法可以用来判断字符串是否相等:1. 使用equals()方法:这是String类提供的用于比较两...
    99+
    2023-10-18
    java
  • java中如何将bigdecimal转string类型
    可以使用BigDecimal类的toString()方法将BigDecimal类型转换为String类型。示例如下: BigDeci...
    99+
    2024-04-02
  • java中byte[]类型如何转换为String类型
    在 Java 中将 byte[] 类型转换为 String 类型,可以使用 String 的构造函数或者静态方法。 使用 String 构造函数 byte[] byteArray = {97, 98, 99}; String str = n...
    99+
    2023-09-08
    java servlet 开发语言
  • 如何使用Java 8的时间类
    这篇文章主要讲解了“如何使用Java 8的时间类”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Java 8的时间类”吧! 为什么会在Jdk8中加入很多时间类非线程安全jav...
    99+
    2023-06-15
  • java 中的内部类如何使用
    这篇文章将为大家详细讲解有关java 中的内部类如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。java 中内部类的实例详解一:内部类可直接访问外部类的成员变量,包括外部类私有的成员变...
    99+
    2023-05-31
    java ava
  • Java中如何使用Collection类
    Java中如何使用Collection类,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Collection接口Collection是最基本的集合接口,一个Collectio...
    99+
    2023-06-17
  • Java中如何使用Math类
    这篇文章将为大家详细讲解有关Java中如何使用Math类,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java常用类库Math类Math包含用于执行基本数字运算的方法,例如基本指数,对数,平...
    99+
    2023-06-20
  • Java中如何使用Objects类
    Java中如何使用Objects类,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1 Objects1.1 Objects方法工具类,常用于检查操作返回值方法名作用static ...
    99+
    2023-06-20
  • Java中FileWriter类如何使用
    今天就跟大家聊聊有关Java中FileWriter类如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。FileWriter字符输出流构造方法public FileWri...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作