Java语言——API(String类和StringBuffer类)

API(Application Programming Interface):应用程序编程接口

java.lang包——核心包

String类

特点:它的对象创建后不能被更改

String str="abc";
//声明字符串变量
String str;
//赋值
str="abc";
复制代码

特殊性:

  1. 所有引用数据类型都必须使用new关键字创建,而字符串类型还能通过直接赋值创建
  2. 字符串常量是一个对象,因此可以调用字符串常量的方法
  3. 字符串类型属于引用数据类型,但在方法调用时采用的是传值调用
  4. 字符串类型1可以用加号“+”运算符将字符串类的对象与其他各种类型(基本数据类型或引用数据类型)的对象连接起来
  5. 字符串类型可以用赋值运算符“=”和“+=”进行赋值
  6. 字符串的值本身是常量,是不可变的

常用API

构造方法

常用方法 说明
public String() 创建一个空白字符串,不含有任何内容
String s1=new String();
System.out.println(s1);
复制代码
常用方法 说明
public String(String original) 根据传入的字符串内容,来创建字符串对象
String s2=new String("我是");
System.out.println(s2);
复制代码
常用方法 说明
public String(char[] chs) 根据字符数组的内容,来创建字符串对象
char[] chars={'a','b','中'};
String s3=new String(chars);
System.out.println(s3);
复制代码
常用方法 说明
public String(byte[] chs) 根据字节数组的内容,来创建字符串对象
byte[] bytes={97,12,34,14};
String s4=new String(bytes);//a"
复制代码
常用方法 说明
public String(StringBuffer buffer) 从一个缓冲性字符串创建字符串实例

常用方法

长度
常用方法 说明
public int length() 返回此字符串的长度
String name="Ilove";
int length=name.length();
System.out.println(length);
复制代码
比较
常用方法 说明
public boolean equals(Object anObject) 将此字符串与指定对象进行比较。只关心字符内容是否一致
public boolean equalsIgnoreCase(String anotherString) 将字符串与指定对象进行比较,忽略大小写比较字符串。只关心字符内容是否一致
package com.qfedu.string;
import java.util.Scanner;
public class Demo02 {
    public static void main(String[] args) {
//        正确登录名和密码
        String okName="itheima";
        String okPassword="123456";
//        请您输入登录名和密码
        Scanner sc=new Scanner(System.in);
        System.out.println("登录名称:");
        String name=sc.next();
        System.out.println("密码:");
        String password=sc.next();
//        判断用户输入的登录名和密码与正确的内容是否相等
//        ==比较的是地址
        if (okName.equals(name)&&okPassword.equals(password)){
            System.out.println("登录成功");
        }else {
            System.out.println("用户名或密码错误了!!!");
        }
//        忽略大小写比较内容:一般用于比较验证码这样的逻辑业务
        String sysCode="23AdFH";
        String code="23aDfH";
        System.out.println(sysCode.equals(code));
        System.out.println(sysCode.equalsIgnoreCase(code));
    }
}
复制代码
常用方法 说明
public boolean contains(CharSequence s) 字符串是否包含某个字符串
String  name3="金三胖是最厉害的80后,金三胖棒棒的!我好爱金三胖";
System.out.println(name3.contains("金三胖"));
复制代码
常用方法 说明
public boolean startsWith(String prefix) 字符串是否以指定的前缀开始
public boolean endsWith(String prefix) 字符串是否以指定的后缀结束
String  name3="金三胖是最厉害的80后,金三胖棒棒的!我好爱金三胖";
System.out.println(name3.startsWith("金三胖"));
System.out.println(name3.endsWith("金三胖"));
复制代码
常用方法 说明
public int compareTo(String str) 比较两个字符串的大小

字符串的大小是基于字符的Unicode码值,返回的整数值是该字符Unicode码值之差

String s5="123a";
String s6="123A";
int result=s5.compareTo(s6);
System.out.println(result);
复制代码
检索
常用方法 说明
public int indexOf(char ch) 返回字符在字符串中的位置(索引)
public int indexOf(String str) 返回字符串在字符串中的位置(索引)
public int lastIndexOf(int ch) 返回字符在字符串中的位置(索引),反向查找
int lastIndexOf(String str) 返回字符串在字符串中的位置(索引),反向查找
字串
常用方法 说明
public String substring(int beginIndex,int endIndex) 根据开始和结束索引进行截取,得到新的字符串(包前不包后)
public String substring(int beginIndex) 从传入的索引处截取,截取到末尾,得到新的字符串
String name2="java是最厉害的编程语言";
String rs=name2.substring(0,9);
System.out.println(rs);
复制代码
替换
常用方法 说明
public String replace(CharSequence target,CharSequence replacement) 使用新值,将字符串中的旧值替换,得到新的字符串
String  name3="金三胖是最厉害的80后,金三胖棒棒的!我好爱金三胖";
String rs3=name3.replace("金三胖","***");
System.out.println(rs3);
复制代码
大小写
常用方法 说明
public String toLowerCase 返回一个新的字符串,其中所有的字符转换为小写
public String toUpperCase 返回一个新的字符串,其中所有字符转换为大写
其他API
常用方法 说明
public char charAt(int index) 获取某个索引位置处的字符
String name="Ilove";
char c=name.charAt(1);
System.out.println(c);
复制代码
常用方法 说明
public char[] toCharArray() 将当前字符串转换成字符数组返回
char[] chars=name.toCharArray();
for (int i=0;i<chars.length;i++) {
    char ch=chars[i];
    System.out.println(ch);
}
复制代码
常用方法 说明
public String[] split(String regex) 根据传入的规则切割字符串,得到字符串数组返回
String name4="王宝强,贾乃亮,陈羽凡";
String[] names=name4.split(",");
System.out.println(names[0]);
复制代码
常用方法 说明
public String trim() 返回一个新的字符串,其中前导空白和尾部空白均被删除
public String toString() 返回字符串对象本身的值
public String concat(String str) 连接两个字符串
public byte[] getBytes() 返回String编码的byte数组
String s1="java";
byte[] b=s1.getBytes();
for(byte b1:b){
    System.out.print(b1+"-");//106-97-118-97-
}
复制代码

CharSequence是一个接口,包括CharBuffer、Segment、String、StringBuffer、StringBuilder等实现

案例1(验证码)

package com.qfedu.string;
import java.util.Random;
public class Demo04 {
//    验证码
    public static void main(String[] args) {
//        定义可能出现的字符信息
        String datas="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
//        每次生成一个随机的索引,提取对应的字符连接起来即可
        String code="";
        Random r=new Random();
        for (int i=0;i<5;i++){
//            随机一个索引
            int index=r.nextInt(datas.length());
            char c=datas.charAt(index);
            code+=c;
        }
//        输出字符串变量即可
        System.out.println(code);
    }
}
复制代码

案例2(登录)

package com.qfedu.string;
import java.util.Scanner;
public class Demp05 {
//    登录
    public static void main(String[] args) {
//        定义正确的登录名和密码
        String okLoginName="admin";
        String okPassword="123456";
//        定义一个循环,循环三次让用户登录
        Scanner sc=new Scanner(System.in);
        for (int i=1;i<=3;i++){
            System.out.println("请输入登录名称");
            String loginName=sc.next();
            System.out.println("请输入登陆密码");
            String password=sc.next();
//            判断登录是否成功
            if (okLoginName.equals(loginName)){
//                判断密码是否正确
                if (okPassword.equals(password)){
                    System.out.println("登陆成功!");
                    break;
                }else {
//                    密码错误
                    System.out.println("您的密码不正确!您还剩余"+(3-i)+"次机会登录");
                }
            }else {
                System.out.println("您的登录名称不正确!您还剩余"+(3-i)+"次机会登录");
            }
        }
    }
}
复制代码

案例3(隐私号码)

package com.qfedu.string;
import java.util.Scanner;
public class Demo06 {
//    隐私号码
    public static void main(String[] args) {
//        键入录入一个手机号码
        Scanner sc=new Scanner(System.in);
        System.out.println("请您输入您的手机号码");
        String tel=sc.next();
//        截取号码的前三位,后四位
        String before=tel.substring(0,3);
        String after=tel.substring(7);
        String s=before+"****"+after;
        System.out.println(s);
    }
}
复制代码

StringBuffer类:缓存型字符串

只能通过构造方法创建

常用方法 说明
public StringBuffer() 创建一个空白的可变的字符串对象,不包括人任何内容
public StringBuffer(String str) 创建一个指定字符串内容的可变字符串对象,容量为str+16
public StringBuffer(int capacity) 构造长度为0,容量为capacity的字符串缓冲区

常用API

常用方法 说明
int capacity() 返回当前容量
void ensureCapacity(int minCapacity) 确保容量至少等于指定的最小值minCapacity
boolean equals(Object o) 从Object继承而来,不能比较StringBuffer的值
public int length() 返回此字符串的长度
public char charAt(int index) 获取某个索引位置处的字符
public int indexOf(char ch) 返回字符在字符串中的位置(索引)
public int lastIndexOf(int ch) 返回字符在字符串中的位置(索引),反向查找
public String substring(int beginIndex,int endIndex) 根据开始和结束索引进行截取,得到新的字符串(包前不包后)
public String substring(int beginIndex) 从传入的索引处截取,截取到末尾,得到新的字符串
public String toString() 返回字符串对象本身的值
StringBuffer append(String str) 将指定的字符串追加到此实例的值的尾部
StringBuffer append(StringBuffer sb) 将指定的StringBuffer追加到此实例的值的尾部
StringBuffer insert(int offset,String str) 将字符串插入此实例的offset位置处
StringBuffer delete(int start,int end) 移除此实例从start到end之间的字符
StringBuffer reverse() 将此实例的字符串逆序排列
StringBuffer replace(int start,int end,String str) 用str替换此实例从start到end之间的字符

String和StringBuffer比较

比较项 String类 StringBuffer类
占用空间 实际字符 实际字符+缓冲区
占用的空间能否被修改 不能 可以,在字符串及缓冲区内修改
何时使用新的空间 每次操作会使用新的空间 缓冲区大小不够时才使用新的空间
运行效率 低,使用i虚拟的空间会降低效率 很高
使用场合 容易编写和理解,适用一般性的需要 大量字符处理,特别时循环处理字符

String类和StringBuffer类的互换

Sting s="abc"
StringBuffer sb=new StringBuffer(s);
String s=sb.toString();
复制代码

猜你喜欢

转载自juejin.im/post/7128789537362280479