String

String类

  • 字符串是一个常量,创建之后不可改变

  • 字符串字面值存储在字符串池中,可以共享

  • String s=“Hello”;产生一个对象

    String s1=“hello”;

    String s2=“hello”;

    s1和s2地址一样

  • String s=new String(“Hello”);产生两个对象,堆、池各一个

    String s1=new String(“Hello”);

    String s2=new String(“Hello”);

    s1和s2的地址不一样

    public class StringStudy {
        public static void main(String[] args) {
            String name1="LiuXinyu";
        //"LiuXinyu"存储在字符串池中
            name1="刘心雨";
            //"刘心雨"赋值给name1,并没有修改"LiuXinyu",而是重新开辟一个空间指向name1
            String name2="LiuXinyu";
            //在字符串池中寻找"LiuXinyu",若有指向"LiuXinyu"
            String name3="刘心雨";
            //与name1指向同一个字符串 ,与name1地址一样
            String name4 = new String("刘心雨");
            //开辟一个新地址,与name1地址不一样9
            String name5 = new String("刘心雨");
            System.out.println(name1==name3);
            //true(地址一样 )
            System.out.println(name1==name4);
            //false(地址不一样 )
            System.out.println(name4==name5);
            //false(地址不一样 )
            System.out.println(name1.equals(name3));
            //true(内容一样)
            System.out.println(name1.equals(name4));
            //true(内容一样)
            System.out.println(name4.equals(name5));
            //true(内容一样)
        }
    }
    

视频如下:https://www.bilibili.com/video/BV1vt4y197nY?p=20&spm_id_from=333.1007.top_right_bar_window_history.content.click

常用方法

  • public int length:返回字符串长度
  • public char charAt(int index);根据下标获取字符
  • public boolean contains(String str):判断当前字符串中是否包含str
public class StringLearn {
    public static void main(String[] args) {
        String name="Liuxinyu";
        System.out.println(name.length());
        //8(长度)
        System.out.println(name.charAt(2));
        //u(返回索引值)
        System.out.println(name.contains("xin"));
        //true(是否包含)
        System.out.println(name.contains("xia"));
        //false(不包含)
    }
}
  • public char[] toCharArray():将字符串转换成数组

  • public int indexOf(String str):查找str首次出现的下标,存在,返回该下标;不存在,返回-1

  • public int lastIndexOf(String str):查找字符串在当前字符串最后一次出现的下标索引

import java.util.Arrays;
public class StringLearn {
    public static void main(String[] args) {
        String name="LiuxinyuLiuxinyu";
        System.out.println(name.toCharArray());
        //LiuxinyuLiuxinyu
        System.out.println(Arrays.toString(name.toCharArray()));
        //[L, i, u, x, i, n, y, u, L, i, u, x, i, n, y, u]
        System.out.println(name.indexOf("xi"));
        //3(第一个字符的索引)
        System.out.println(name.lastIndexOf("xi"));
        //11(第一个字符的位置)

    }
}
  • public String trim():去掉字符串前后的空格
  • public String toUpperCase():将小写转为大写
  • public boolean endWith(String str):判断字符串是否以str结尾
public class StringLearn {
    public static void main(String[] args) {
        String name=" LiuxinyuLiuxinyu  ";
        System.out.println(name.trim());
        //LiuxinyuLiuxinyu
        System.out.println(name.toUpperCase());
        // LiuxinyuLiuxinyu
        System.out.println(name.endsWith("yu"));
        //false
        System.out.println(name.toLowerCase());
        // liuxinyuliuxinyu
    }
}
  • public String replace(char oldChar,char newChar):将旧字符替换成新字符

  • public String[] split(String str):根据str做拆分

  • public String concat(String str):将str连接在字符串后

public class StringLearn {
    public static void main(String[] args) {
        String name="Liu xin yu Liu xin yu";
        System.out.println(name.replace("Liu", "LIU"));//LIU xin yu LIU xin yu
        String[] arr=name.split(" ");
        String[] arr2=name.split("[Lx]");//用L或者x做分割
        for (int i=0;i< arr.length;i++) {//arr[0]Liu arr[1]xin arr[2]yu arr[3]Liu arr[4]xin arr[5]yu
            System.out.print("arr["+i+"]"+arr[i]+" ");
        }
        System.out.println();
        for (int i=0;i< arr2.length;i++) {//arr2[0] arr2[1]iu  arr2[2]in yu  arr2[3]iu  arr2[4]in yu 
            System.out.print("arr2["+i+"]"+arr2[i]+" ");
        }
        System.out.println();
        System.out.println(name.concat("beautiful"));//Liu xin yu Liu xin yubeautiful(连接)
    }
}

运行结果:

LIU xin yu LIU xin yu
arr[0]Liu arr[1]xin arr[2]yu arr[3]Liu arr[4]xin arr[5]yu 
arr2[0] arr2[1]iu  arr2[2]in yu  arr2[3]iu  arr2[4]in yu 
Liu xin yu Liu xin yubeautiful
  • s1.equals(s2):比较两个字符串内容是否相等
  • s1.equalsIgnoreCase(s2):忽略大小写比较
  • s1.compare(s2):先比较两个第一个,任何一次,比较两个大小,前面大为正.若前面大小一样,比较长度,前面长度减去后面长度
public class StringLearn {
    public static void main(String[] args) {
        String name1="ABCD";
        String name2="CBA";
        String name3="ABCD";
        String name4="abcd";
        System.out.println(name1.equals(name3));
        System.out.println(name1.equalsIgnoreCase(name4));
        System.out.println(name1.compareTo(name2));


    }
}

结果:

true
true
-2

  • subString(int beginindex,int endindex):截取字符串片段(开始到结束)

可变字符串

  • StringBuffer:可变长字符串,运行效率慢、线程安全

  • StringBuilder:可变长字符串,运行效率快、线程不安全

  • 两者方法一样

public class StringBufferStudy {
    public static void main(String[] args) {
        StringBuffer sb=new StringBuffer();
        //append() 追加字符串(在后面加入字符串)
        sb.append("Liu");
        System.out.println(sb.toString());
        sb.append("xinyu");
        System.out.println(sb.toString());
        //insert()插入
        sb.insert(0,"刘心雨 ");
        System.out.println(sb.toString());
        sb.insert(sb.length()," 20岁");
        System.out.println(sb.toString());
        //replace()替换(可以指定位置替换)
        sb.replace(1,4,"Lily ");
        System.out.println(sb.toString());
        //delete()删除(指定位置)
        sb.delete(0,5);
        System.out.println(sb.toString());
    }
}

输出结果:

Liu
Liuxinyu
刘心雨 Liuxinyu
刘心雨 Liuxinyu 20岁
刘Lily Liuxinyu 20岁
刘 Liuxinyu 20
  • append() 追加字符串(在后面加入字符串)
  • insert()插入
  • replace()替换(可以指定位置替换)
  • delete()删除(指定位置)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值