欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java自学-数字与字符串 比较字符串

程序员文章站 2022-07-02 12:51:33
Java 比较字符串 示例 1 : 是否是同一个对象 str1和str2的内容一定是一样的! 但是,并不是同一个字符串对象 package character; public class TestString { public static void main(String[] args) { St ......

java 比较字符串

示例 1 : 是否是同一个对象

str1和str2的内容一定是一样的!
但是,并不是同一个字符串对象

package character;
 
public class teststring {
 
    public static void main(string[] args) {
 
        string str1 = "the light";
         
        string str2 = new string(str1);
         
        //==用于判断是否是同一个字符串对象
        system.out.println( str1  ==  str2);
         
    }
 
}

示例 2 : 是否是同一个对象-特例

str1 = "the light";
str3 = "the light";

一般说来,编译器每碰到一个字符串的字面值,就会创建一个新的对象
所以在第6行会创建了一个新的字符串"the light"
但是在第7行,编译器发现已经存在现成的"the light",那么就直接拿来使用,而没有进行重复创建

package character;
 
public class teststring {
 
    public static void main(string[] args) {
        string str1 = "the light"; //第6行
        string str3 = "the light"; //第7行
        system.out.println( str1  ==  str3);
    }
 
}

示例 3 : 内容是否相同

使用equals进行字符串内容的比较,必须大小写一致
equalsignorecase,忽略大小写判断内容是否一致

package character;
  
public class teststring {
  
    public static void main(string[] args) {
  
        string str1 = "the light";
          
        string str2 = new string(str1);
         
        string str3 = str1.touppercase();
 
        //==用于判断是否是同一个字符串对象
        system.out.println( str1  ==  str2);
         
        system.out.println(str1.equals(str2));//完全一样返回true
         
        system.out.println(str1.equals(str3));//大小写不一样,返回false
        system.out.println(str1.equalsignorecase(str3));//忽略大小写的比较,返回true
         
    }
  
}

示例 4 : 是否以子字符串开始或者结束

startswith //以...开始
endswith //以...结束

package character;
  

public class teststring {
  
    public static void main(string[] args) {
        string str1 = "the light";
         
        string start = "the";
        string end = "ight";
         
        system.out.println(str1.startswith(start));//以...开始
        system.out.println(str1.endswith(end));//以...结束
          
    }
  
}

练习

创建一个长度是100的字符串数组
使用长度是2的随机字符填充该字符串数组
统计这个字符串数组里重复的字符串有多少种(忽略大小写)
Java自学-数字与字符串 比较字符串

答案

package character;
 
public class teststring {
 
    public static void main(string[] args) {
 
        string[] ss = new string[100];
        // 初始化
        for (int i = 0; i < ss.length; i++) {
            ss[i] = randomstring(2);
        }
        // 打印
        for (int i = 0; i < ss.length; i++) {
            system.out.print(ss[i] + " ");
            if (19 == i % 20)
                system.out.println();
        }
 
        for (string s1 : ss) {
            int repeat = 0;
            for (string s2 : ss) {
                if (s1.equalsignorecase(s2)) {
                    repeat++;
                    if (2 == repeat) {
                        // 当repeat==2的时候,就找打了一个非己的重复字符串
 
                        putintoduplicatedarray(s1);
                        break;
                    }
                }
            }
        }
 
        system.out.printf("总共有 %d种重复的字符串%n", pos);
        if (pos != 0) {
            system.out.println("分别是:");
            for (int i = 0; i < pos; i++) {
                system.out.print(foundduplicated[i] + " ");
            }
        }
    }
 
    static string[] foundduplicated = new string[100];
    static int pos;
 
    private static void putintoduplicatedarray(string s) {
        for (int i = 0; i < pos; i++){
            if (foundduplicated[i].equalsignorecase(s))
                return;
        }
 
        foundduplicated[pos++] = s;
    }
 
    private static string randomstring(int length) {
        string pool = "";
        for (short i = '0'; i <= '9'; i++) {
            pool += (char) i;
        }
        for (short i = 'a'; i <= 'z'; i++) {
            pool += (char) i;
        }
        for (short i = 'a'; i <= 'z'; i++) {
            pool += (char) i;
        }
        char cs[] = new char[length];
        for (int i = 0; i < cs.length; i++) {
            int index = (int) (math.random() * pool.length());
            cs[i] = pool.charat(index);
        }
        string result = new string(cs);
        return result;
    }
 
}