关于String类型

一、String类介绍

在这里插入图片描述
1.可以看出String是被final所修饰,继承Object
(所有的类都默认继承Oject类)
2.常见的定义方法

        //第一种方法
        String str1 = "abcd";
        //第二种方法
        String str2 = new String("abcd");
        //第三种方法
        char[] value = {'a','b','c','d'};
        String str3 = new String(value);

3.字符串的存储方式
字符串是在堆中的字符串常量池进行存储。一旦一个字符串被存储到常量池中,只有一个,如果后续还有存储字符串时,会检查常量池中是否有该字符串常量。只要是双引号引起来的,都会被存放到字符串常量池中。
第一种方式定义字符串常量的内存图:直接将字符串保存到字符串常量池中,然后引用
第一种方式定义字符串常量的内存图
第二种方式定义字符串常量的内存图:str2存放在堆中开辟一些内存存放new String(abcd)的地址,然后该内存中的一个小内存用来存放abcd在常量池的地址
在这里插入图片描述
第三种方式定义字符串常量的内存图:将在堆中开辟空间存放a b c d的空间的地址存放到value中,然后将他拷贝一份,在引用一个new String(value)对象,将new String(value)的地址存放到str3中,在将拷贝的地址存放到new String(value)中value中(两个value没有任何关系,一个是存放数组的变量名,一个是引用)
在这里插入图片描述

二、String的常见操作

1.字符串的大小比较

        String str1 = "abcde";
        String str2 = "abCde";
        System.out.println(str1.compareTo(str2));

在这里插入图片描述
相差的值是ascll码表中的值

2.字符串的内容比较

        String str1 = "abcde";
        String str2 = "abCde";
        System.out.println(str1.equals(str2));

相同输出true,不同输出false;
注意:srt1不能为null

3.字符转字符串

        char[] value = {'a','b','c','d'};
        //第一种方法
        String str1 = new String(value);
        //第二种方法
        String str2 = new String(value,1,3);
        //offset是数组的起始位置,count是偏移量,不能越界

4.字符串转字符

        String str1 = "hello";
        //单个转换
        char a = str1.charAt(0);//将字符串的几号下标变成字符
        //整体转换
        char[] b = str1.toCharArray();

三、字符串查找

1.找字符串的子串

            String str = "abcde";
            boolean flg = str.contains("cde");
            System.out.println(flg);

2.寻找字符串并返回下标

            String str = "abcdede";
            System.out.println(str.indexOf("cd"));//输出1,如果没有该字符串,输出-1
            System.out.println(str.indexOf("cd",3));//从三号位置开始找,输出-1
            System.out.println(str.lastIndexOf("cd",4));//在四号位置开始从后往前找

3.判断字符串是否是以给定内容开始以及给定内容结束

            String str = "abcde";
            System.out.println(str.startsWith("a"));//返回boolean类型
            System.out.println(str.startsWith("c",2));//从二号位置开始
            System.out.println(str.endsWith("e"));//没有偏移量

四、字符串的替换

替换给定指定内容

            String str  = "abcdab";
            System.out.println(str.replaceAll("ab","ef"));//将ab全部替换成ef
            System.out.println(str.replaceFirst("ab","ef"));//将第一次出现的ab替换成ef

五、字符串的分割

            String str = "1999-05-13";
            String[] ret = str.split("-");//返回值是一个字符串数组
            for (int i = 0; i < ret.length; i++) {
                System.out.println(ret[i]);

在这里插入图片描述

            String str = "1999-05-13";
            String[] ret = str.split("-",2);//分成两组
            for (int i = 0; i < ret.length; i++) {
                System.out.println(ret[i]);

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值