字符串类

可变字符序列与不可变字符序列

String不是可变字符序列,而StringBuilder是可变字符序列。可变字符序列的意思是从始至终只创建一个对象,而不可变字符序列就是当字符串的值发生改变时我们需要重新创建一个对象。

循环问题

正因为这种特性,一般循环中我们不使用String。

String

String对象创建出来之后,该对象就无法改变

怎么证明这个结论呢,在API查找它是否有set方法。

构造方法

String(byte[] bytes) 

将byte数据转换成字符数据

String(byte[] bytes, int offset, int length)

指定转换的数组位置和长度

String(char[] value)

char字符数组可以转换成字符串

方法

boolean equals(Object anObject)

区分大小写的比较

boolean equalsIgnoreCase(String anotherString)

不区分大小写的比较

boolean contains(CharSequence s)

是否包含字符串(区分大小写)

boolean startsWith(String prefix)

是否以String prefix开头

boolean endsWith(String suffix)

是否以String prefix结尾

boolean isEmpty()

是否为空(注意:如果值是null,不是String对象,不能调用该方法,调用该方法的前提是你得有个string对象,不管它里面的内容是不是空的)

int length()

获取字符串长度(键盘上的字符都算)

char charAt(int index)

像数组一样,根据索引获取字符(索引位置从0开始)

int indexOf(int ch)

根据字符找索引(注意,它是根据int类型,比如a是97。而且返回的是第一次出现的位置

可以传入的是一个字符类型的,它会自动给我们提升为int类型,即可以用int类型接收一个char类型的数值

如果不存在就返回-1

int indexOf(String str)

根据字符串找索引

int indexOf(int ch, int fromIndex)

从fromIndex索引位置(包括该索引)开始找字符对应的第一次出现的索引位置

int indexOf(String str, int fromIndex)

从fromIndex索引位置(包括该索引)开始找字符串对应的第一次出现的索引位置

向前找

String  substring(int beginIndex)

根据索引值截取字符串,包括该索引

String  substring(int beginIndex, int endIndex)

两头截取字符串

byte[] getBytes()

将字符串中每个字符转换成字节,装进字节数组中

char[] toCharArray()

字符串转换成字符数组

各种类型转换成字符串

String toLowerCase()

转换成小写字符串

String toUpperCase()

转换成大写字符串

 String concat(String str)

拼接字符串(+能和任意类型拼接)

replace

会替换原有所有满足的字符

 String trim()

去除两端的空格

字符串的比较(三种结果)

一个字符一个字符地比较,遇见相同的往后取值,不相同的就获取当前两个字符的差值。下面的后者是不区分大小写的比较

字符串的遍历

跟数组一样,都用索引一个一个地取值

字符统计

public class Test2 {
    public static void main(String[] agrs) {
        String s="wo?453AB";

        int i=0;
        int y=0;
        int z=0;
        int u=0;
        for(int m=0;m<s.length();m++)
        if(s.charAt(m)>='a'&&s.charAt(m)<='z')
            i++;
        else {
            if(s.charAt(m)>='A'&&s.charAt(m)<='Z')
                y++;
            else {
                if(s.charAt(m)>='1'&&s.charAt(m)<='9')
                    z++;
                else
                    u++;
                    
            }
                
        }
        System.out.println("小写字母是"+i);
        System.out.println("大写字母是"+y);
        System.out.println("数字是"+z);
        System.out.println("其他"+u);
            
        
    }

}

身份验证

import java.util.Scanner;

public class Test1 {
    public static void main(String[] agrs) {
        
        
        Scanner s=new Scanner(System.in);
        String user;
        String password;
        int chance = 5;
        while(chance>0) {
            System.out.println("user:");
             user=s.nextLine();
             System.out.println("password:");
                password=s.nextLine();
               
                if(user.equals("root")&& password.equals("123")) {
                    System.out.println("succsess");
                    break;
                }
                    
                else 
                    {
                    chance--;
                    System.out.println("chance:"+chance);
                    if(chance==0) {
                        System.out.println("fail");
                    break;
                    }
            
        }
       
            }
            
}
}

 大字符串中存在小字符串的次数

public class Test4 {
    public static void main(String[] args) {
        
        String s2="love";
        
        String s1="iilovvoelovelovvoeiloveyloveoulove";
        int a;
        int i=0;
        while(s1.contains(s2)) {
        i++;
        
        a=s1.indexOf(s2)+s2.length();
        s1=s1.substring(a);
        }
        
        System.out.print(i);
        
        
        
        
        
        
    }

}
原文地址:https://www.cnblogs.com/S-Mustard/p/7602730.html