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());

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值