/* *作者:呆萌老师 *☑csdn认证讲师 *☑51cto高级讲师 *☑腾讯课堂认证讲师 *☑网易云课堂认证讲师 *☑华为开发者学堂认证讲师 *☑爱奇艺千人名师计划成员 *在这里给大家分享技术、知识和生活 *各种干货,记得关注哦 *vx:it_daimeng */,我来为大家科普一下关于java编程中的字符串?下面希望有你要的答案,我们一起来看看吧!

java编程中的字符串(Java字符串)

java编程中的字符串

/* *作者:呆萌老师 *☑csdn认证讲师 *☑51cto高级讲师 *☑腾讯课堂认证讲师 *☑网易云课堂认证讲师 *☑华为开发者学堂认证讲师 *☑爱奇艺千人名师计划成员 *在这里给大家分享技术、知识和生活 *各种干货,记得关注哦! *vx:it_daimeng */

1、什么是字符串

字符串,又叫串,是一种数据结构,是一个内容受限的线性表。

字符串又有一种定义叫做:“不可变的字符序列”。

字符串关键字:String

其底层实现是1、在老版本的Java中,字符串的底层是一个字符类型的数组,后来优化成了byte数组。但总而言之其底层实现都是数组。

2、字符串的操作

String aString="呆萌老师";//直接通过“”号方式创建字符串 //通过new来创建字符串,通过传参的方式来确定字符串的内容 String bString=new String(aString);//直接传递一个字符串 System.out.println(bString); String str=new String("daimenglaoshi"); System.out.println(str); String cString=new String(new char[]{'a','s','c'});//传递一个char类型的数组 System.out.println(cString); String dString=new String(new char[]{'a','s','c'},0,1); System.out.println(dString); /*字符串的操作*/ //字符串拼接 String str1="呆萌老师"; String str2=str1 "是一个漂亮的女老师!";//通过“ ”实现字符串的拼接。 System.out.println(str2); //字符串的截取 String str3="呆萌老师"; System.out.println(str3.substring(2));//从第几个字符开始截取 System.out.println(str3.substring(1, 3));//从第几个到第几个 //字符串内容判断 System.out.println(str3.equals("呆萌老师"));

3、字符串的不可变性

我们对任何字符串的操作都相当于是创建了一个新的字符串。

String为什么不可变呢?

1、底层数组被final修饰,使得String类型的引用一旦被赋值将不可再指向新的数组。

2、私有的数组变量,并且String没有提供修改这个字符数组的方法,就使得我们字符数组一旦被赋值,除了无法更改以外,许多操作返回的字符串,都是被新创建的。

private final char value[];

3、final修饰的类

public final class String

当我们的类被修饰之后,这个类将无法被继承,因此从继承上来说,杜绝了子类对父类方法的覆盖。

String不可变的好处。

1、因为String不可变,所以才方便计算其哈希码,以至于方便进行其他的哈希操作。

private int hash;

2、因为不可变,所以String是线程安全的,因此不用考虑在线程运行过程中它的值被其他线程所修改。

4、字符串常量池

我们计算机的内存资源是有限的,在有限的存储空间中,如果每创建一个对象都分配一个空间这样很显然就是不行的。因此为了提高我们内存的复用性,我们字符串这一块有一个十分重要的点叫做字符串常量池。

当我们在创建字符串的时候,会先在字符串常量池中寻找有没有已经创建好的一样的内容,如果已经创建好了,这个字符串引用就会去指向这个应景创建好的值,如果说没有,那么·才会分配处一片空间来创建。

因此值相同的字符串,其哈希值一定相等。

String aString="呆萌老师";//直接通过“”号方式创建字符串 System.out.println(aString.hashCode()); String str3="呆萌老师"; System.out.println(str3.hashCode());

,