两个字符串转成大写后一直判断相等是怎么回事啊

最近学习java,想练习自己写一个equals()和equalsIgnoreCase(),equalsIgnoreCase()我是想将两个字符串全部转为小写,然后一个一个比对,但是不知道为什么转完以后再比对,只要长度一样就会返回true。

public class exp5 {
    public static void main(String[] args) {
        String s1 = "asjnlpp";
        String s2 = "ASJNlpl";
        System.out.println("结果为:"+equals(s1,s2));
        System.out.println("忽略大小写结果为:"+equalsIgnoreCase(s1,s2));
        //System.out.println(s1.equalsIgnoreCase(s2));
    }
    public static boolean equals(String s1,String s2) {
        if (s1 == s2) {
            return true;
        }
        byte[] s11 = s1.getBytes();
        byte[] s22 = s2.getBytes();
        if (s11.length == s22.length) {
            for (int i = 0; i < s11.length; i++) {
                if (s11[i] == s22[i]) {
                    return true;
                } else {
                    return false;
                }
            }
        }
        return false;
    }

    public static boolean equalsIgnoreCase(String s1,String s2){
        if(s1 == s2){
            return true;
        }
        String str1 = s1.toLowerCase();
        System.out.println(str1);
        String str2 = s2.toLowerCase();
        System.out.println(str2);
        return equals(str1,str2);
    }
}

主要就是这一步判断有问题,为什么啊

 for (int i = 0; i < s11.length; i++) {
                if (s11[i] == s22[i]) {
                    return true;
                } else {
                    return false;
                }

求解答

第17行和第19行,表示转为byte[]数组后,有一个元素相同则返回true,所以两行代码错了,可以修改为当不同,则返回false,然后再到循环结束后返回true应该就可以了。

修改如下:



public class exp5 {
    public static void main(String[] args) {
        String s1 = "asjnlpp";
        String s2 = "ASJNlpl";
        System.out.println("结果为:"+equals(s1,s2));
        System.out.println("忽略大小写结果为:"+equalsIgnoreCase(s1,s2));
        //System.out.println(s1.equalsIgnoreCase(s2));
    }
    public static boolean equals(String s1,String s2) {
        if (s1 == s2) {
            return true;
        }
        byte[] s11 = s1.getBytes();
        byte[] s22 = s2.getBytes();
        if (s11.length == s22.length) {
            for (int i = 0; i < s11.length; i++) {
                if (s11[i] != s22[i]) {// 当比较转byte[]数组后,有一个元素不同,则返回false
                    return false;
                } 
            }
            // 比较完整个byte[]数组,每个元素都相同,则字符串相同,返回true
            return true;
        }
        return false;
    }
 
    public static boolean equalsIgnoreCase(String s1,String s2){
        if(s1 == s2){
            return true;
        }
        String str1 = s1.toLowerCase();
        System.out.println(str1);
        String str2 = s2.toLowerCase();
        System.out.println(str2);
        return equals(str1,str2);
    }
}
 
 

img