当前位置 : 主页 > 编程语言 > java >

Java字符串

来源:互联网 收集:自由互联 发布时间:2022-07-13
/* *作者:呆萌老师 *☑csdn认证讲师 *☑51cto高级讲师 *☑腾讯课堂认证讲师 *☑网易云课堂认证讲师 *☑华为开发者学堂认证讲师 *☑爱奇艺千人名师计划成员 *在这里给大家分享技术、知
/*
*作者:呆萌老师
*☑csdn认证讲师
*☑51cto高级讲师
*☑腾讯课堂认证讲师
*☑网易云课堂认证讲师
*☑华为开发者学堂认证讲师
*☑爱奇艺千人名师计划成员
*在这里给大家分享技术、知识和生活
*各种干货,记得关注哦!
*/

Java字符串_数组

1、什么是字符串

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

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

        字符串关键字:String

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

2、字符串的操作

"呆萌老师";//直接通过“”号方式创建字符串
//通过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("呆萌老师"));

Java字符串_数组_02

3、字符串的不可变性

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

String为什么不可变呢?

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

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

private final char

Java字符串_字符串常量池_03

3、final修饰的类

public final class String

Java字符串_数组_04

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

String不可变的好处。

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

private int

Java字符串_字符串_05

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

4、字符串常量池

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

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

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

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

Java字符串_数组_06

更多请关注

​​https://edu.51cto.com/course/20204.html​​

上一篇:Flask框架远程命令执行-学习笔记
下一篇:没有了
网友评论