这篇文章主要介绍“Java数据结构之字符串怎么用”,在日常操作中,相信很多人在Java数据结构之字符串怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java数据结构之字符串怎么用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!串(string)是由零个或多个字符组成的有限序列,又名字符串。我们可以从这段段基本概念中知道:零个或多个字符组成:说明字符串的内部元素类型为字符。有限:说明字符串的内容长度是有一定限制的,小于一个最大范围,但是在该范围内,实际的长度是不确定的。序列:说明字符串中的相邻字符存在前驱和后继的关系。在Java中没有内置的字符串类型,每个用双引号括起来的字符串都是Java中String类的一个实例。也就是说Java中String并不是数据类型,在Java中所有的字符串都是String的实例化对象。Java中的StringJava中的String类代表字符串,Java 程序中的所有字符串文字(例如“abc”)都为此类的实例。也就是说,Java程序中所有的双引号字符串,都是 String 类的对象。String 类在 java.lang 包下,所以使用的时候不需要导包!在Java中免费云主机域名String最重要的特点就是:String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了。我们将这种特性称为String的不可变性。字符串的不可变性不可变性:当你给一个字符串重新赋值之后,老值并没有在内存中销毁,而是重新开辟一块空间存储新值。也就是说一旦一个String对象在内存中创建,它将是不可改变的,所有的String类中方法并不是改变String对象自己,而是重新创建一个新的String对象
。例如:当s的值发生改变之后,ddccmm这个值并没有覆盖dcm,只是重新开发了一个新的空间去储存ddccmm然后将s指向它。如果我们在实际开发中对很含有大量字符的字符串进行遍历赋值修改,会对内存中产生很多无法释放的字符串对象,造成内存垃圾。正因为String对象的不可变性,如果需要对字符串进行大量的修改、添加字符、删除字符等操作尽量不要使用String对象,因为这样会频繁的创建新的对象导致程序的执行效率下降。这时我们可以使用Java中另外一个字符串类StringBuilder。我们在做题的时候关于字符串一般用的都是String类,但是考虑到我们有时候也会用到StringBuilder类这里我就对StringBuilder类进行稍微细致一点的讲解。StringBuilder
是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指StringBuilde
r对象中的内容是可变的。2.1 StringBuilder类常用的方法
可以看出来,构建一个StringBuilder
的对象只能使用它的构造方法来构造,不像String
一样可以直接String s= "123"
来创建因为StringBuilder
类对象是可变的,所以当我们对一个字符串需要进行改变比较多的时候一般定义为StringBuilder
类。2.2 String和StringBuilder的区别String
对象是不可改变的。每次使用String
类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。StringBuilder
对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是您可以为它可容纳的最大字符数指定一个值,当修改 StringBuilder
时,在达到容量之前,它不会为其自己重新分配空间。当达到容量时,将自动分配新的空间且容量翻倍。也就是说当对字符串进行改变时,都是对当前对象的状态进行更新的。可以使用重载的构造函数之一来指定 StringBuilder
类的容量。2.3 String类与StringBuilder类的相互转换String类转换为StringBuilder类StringBuilder类转换为String类3.1初始化String对象的两种方法:虽然两种方法看起来是一样的但是本质上是不一样的。
String 创建的字符串存储在公共池中,而 new 创建的字符串对象在堆上。那存放在公共池(常量池)与堆中有什么不一样吗?我们来举个例子:输出:
可见前三个字符串的地址相同,后两个各不相同!这是因为直接创建的字符串时,会先在公共池中找有没有这样的字符串,如果有那就将引用直接指向它,而不去开发新的空间。在这里s1,s2,s3这三个引用指向了公共池中的同一块内存。对象创建时,每次都会在堆上开新的空间来存放字符串,也就是说s4,s5分别指向在堆上的两块不同的内存,只不过这两块内存里面都储存着相同的东西。这里再次强调一下,我们在做题的时候遇到关于字符串相关题目我们几乎都是使用String类来解决问题,除了在字符串进行大量更改时我们可能会暂时用到StringBuilder类。这里的暂时就是我们在对字符串更改等操作之后一般还是要把字符串转换为String类的。所以我们要学习的API主要还是String类的API。对应刷题我StringBuilder的API我们只需要学习上面提到的两个就够了。String 类在 java.lang 包下,所以使用的时候不需要导包!4.1 基本数据类型转换成字符串有三种办法:(1)基本类型数据的值+“” (最常用,最简单);
(2)使用包装类中的静态方法 static String toString(int i)
返回一个表示指定整数的String 对象。如:在Integer中:Integer.toString(6)
;
(3)使用String类中的静态方法 static String valueOf(int i)
返回int 参数的字符串表示形式。如:String.valueOf(6)
;String 类别中已经提供了将基本数据型态转换成String 的 static 方法也就是 String.valueOf() 这个参数多载的方法 :因为是静态方法所以不需要实例化。4.2 字符串转换为基本数据类型一般使用包装类的静态方法parseXX("字符串")
要将 String 转换成基本数据类型大多需要使用基本数据型态的包装类别,如:String 转换成 byte可以使用 Byte.parseByte(String s)
注意这里也是静态方法,只不过都是对应包装类的静态方法4.3 使用length()
得到一个字符串的字符个数4.4 使用toCharArray()
将一个字符串转换成字符数组4.5 判断两个字符串的内容是否相等返回true/false
4.6 与位置相关的字符串4.7 将一个字符串按照指定内容劈开split(String)
,返回字符串数组。4.8 contains(String)
判断一个字符串里面是否包含指定的内容,返回true/false
4.9 使用substring()
截取字符串,返回子串4.10 字符串大小写转换4.11 使用replace()
进行字符串内容替换387. 字符串中的第一个唯一字符
题解:把字符串的单个字符转化为对应数组下标,遍历一遍字符串获得26个字母分别出现几次。然后在遍历一遍字符串看哪个字符先出现次数为1,就输出对应下标。或者我们也可以把字符串先转换为字符数组来解题,原理都是一样的!到此,关于“Java数据结构之字符串怎么用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注百云主机网站,小编会继续努力为大家带来更多实用的文章!
这篇文章主要讲解了“Python的dict和set如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python的dict和set如何使用”吧!Python内置了字典:dict的支持,dict全称dicti…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。