第9讲 字符串String及一般操作

API

API即应用程序编程接口,英文全称Application Programming Interface。

API是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

字符串是API的一种。

String

1 String简述

String类java.lang包下,不需要导包

String类代表字符串,Java程序中所有的双引号字符串,都是String类的对象

特点:

  • 值在被创建后不能再改变
  • 可以被共享
  • 效果上相当于字符数组(char[]),底层原理是字节数组(byte[]

如果想修改字符串内容:

  1. 可以用subString()方法截取再重新拼接
  2. 可以用toCharArray()方法将字符串变成字符数组,修改后再new String(char[] chs)变回字符串

2 创建对象

方法说明
直接赋值如 String s = “abc”;
public String()创建一个空白字符串对象
public String(char[] chs)根据字符数组的内容,来创建字符串对象
public String(byte[] bys)根据字节数组的内容,来创建字符串对象

2.1 直接赋值

会复用字符串常量池里的字符串,节约内存且易写。

new出来的字符串不会复用,会开辟一个新空间。

String s4 = "abc";
// 输出: s4 = abc

2.2 构造方法

  1. public String(); //创建一个空白字符串对象
String s1 = new String();
// 输出: s1 = (空白)
  1. public String(char[] chs); //根据字符数组的内容,来创建字符串对象
char[] chs = {'a' , 'b' , 'c'};
String s2 = new String(chs);
// 输出: s2 = abc
  1. public String(byte[] bys); //根据字节数组的内容,来创建字符串对象
byte[] bys = {97 , 98 , 99};
// ASCLL:a在计算机中存储的是97这个值
String s3 = new String(bys);
// 输出: s3 = abc

3 常用成员方法

方法说明
boolean equals()比较数据值,且数据值必须完全相同
boolean equalsIgnoreCase()比较数据值忽略英文字母大小写
char charAt(int index)获取字符串上index索引处的字符
int length()获取字符串的长度
String substring(int beg, int end)截取下标[beg, end)区间内的元素
String substring(int beg)截取下标beg到末尾
String[] split(String regex)按regex将字符串分段,并返回一个数组
String replace(char oldChar, char newChar)将字符串中的oldChar字符替换成newChar

4 常见操作

4.1 比较

  • == 比较地址值 ( == 比较引用数据类型是比较的地址值)
  • equals() 比较数据值,且数据值必须完全相同
  • equalsIgnoreCase() 比较数据值忽略英文字母大小写
public class StringDemo1 {
    public static void main(String[] args) {
        String s1 = new String("abc");
        String s2 = "abc";
        String s3 = "Abc";

        boolean result = (s1 == s2);
        System.out.println(result);		//false
        result = s1.equals(s2);
        System.out.println(result);		//true
        result = s1.equals(s3);
        System.out.println(result);		//false
        result = s1.equalsIgnoreCase(s3);
        System.out.println(result);		//true
    }
}

4.2 遍历

方法:

int length() //获取字符串的长度

char charAt(int index) //获取字符串上index索引处的字符

public class StringDemo2 {
    public static void main(String[] args) {
        String s = "absc124xc";

        //1.获取字符串的长度
        for (int i = 0; i < s.length(); i++) {
            //2.获取字符串的每一个字符
            char c = s.charAt(i);
            System.out.print(c + ", ");
        }
    }
}

4.3 拼接

注意:

如果没有变量参与,编译之后(.class文件)就生成了拼接后的结果,会复用串池中的字符串

如果有变量参与,每一次的拼接,都会在内存中创建新的字符串对象,浪费内存。

String s = "hello"; // 假设:生成地址 001
s += "world";
/* 
	字符串world生成地址002
	s += 操作又会生成地址003
*/
Sout: s; 		//此时的s的地址是003
// 输出: helloworld

4.4 截取

方法:

String substring(int beg, int end) //截取下标[beg, end)区间内的元素

String substring(int beg) //截取下标beg到末尾

String[] split(String regex) //按regex将字符串分段,并返回一个数组

该操作对原字符串没有任何影响,因为字符串不能发生变化

案例1: 将手机号部分密文输出

public class stringDemo7 {
    public static void main(String[] args) {
        String phoneNumber = "14515451297";
        
        //1.截取
        String start = phoneNumber.substring(0, 3);
        String end = phoneNumber.substring(7);
        
        //2.拼接
        String result = start + "****" + end;
        System.out.println(result); //145****1297
    }
}

案例2: 从字符串"张三-19"中截取年龄

public class StringDemo8 {
    public static void main(String[] args) {
        String s = "张三-19";
        
        String[] split = s.split("-");
        //获取1号索引处元素
        System.out.println(split[1]); //19
    }
}

4.5 替换

方法:

String replace(char oldChar, char newChar) //将字符串中的oldChar字符替换成newChar

案例: 替换敏感词汇

//字符串替换
public class stringDemo9 {
    public static void main(String[] args) {
        //敏感词库
        String[] arr = {"NMD", "CNM", "TMD"};
        //获取发送的文字
        String talk = "你TMD玩的真好,CNM";
        //替换
        for (int i = 0; i < arr.length; i++) {
            talk = talk.replace(arr[i], "***");
        }
        System.out.println(talk);	//你***玩的真好,***
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值