同一个参数代入同一方法体为什么输出结果就是不一样。

方法,作用:写入一个字符串帮我把这个字符串归类。

public  static String getBQ(String div){
        if(div=="MAD·AMV"||div=="MMD·3D"||div=="原创·配音"||div=="综合")
        //省略一部分
        else if(div=="翻唱"||div=="VOCALOID·UTAU"||div=="演奏"||div=="三次元音乐"||div=="音乐视频"||div=="音乐选集")
            div="音乐";
            else
            div="其它";
            return div;
    }
    String yu=bili.getdata(q,"typename");
            o="翻唱";
            st.setString(27,bili.getBQ(yu)); 


            System.out.println(yu+"----"+o);//翻唱----翻唱
            System.out.println(yu.equals(o));//true
            System.out.println(bili.getdata(q,"typename"));//翻唱

            System.out.println(bili.getBQ(yu)+"----"+bili.getBQ(o));//其它----音乐
            System.out.print(bili.getBQ(yu).equals(bili.getBQ(o)));//false

注释是控制台输出结果,我纠结了半个小时左看右看,就是百思不得其解,同一个参数代入同一个方法体输出结果不同,究竟犯了什么小白(说的我不是小白似的)错误才会出现这情况。。
部分代码以及控制台输出结果
第一次来这里问问题,求各位老司机,码农,程序猿解答一下我的问题。

字符串比较要用equals,你yu和o两个不一样,区别应该在getdata中,getdata中字符串是new String的方式出来的。字符串==比较的是字符串地址。如果一个是new的(String yu = new String("翻唱"),一个是直接赋值(String o="翻唱")这种方式,两个yu==o是false,yu.equals(o)是true

 public  static String getBQ(String div){
        if(div.equals("MAD·AMV")||div.equals("MMD·3D")||div.equals("原创·配音")||div.equals("综合"))
        //省略一部分
        else if(div.equals("翻唱")||div.equals("VOCALOID·UTAU")||div.equals("演奏")||div.equals("三次元音乐")||div.equals("音乐视频")||div.equals("音乐选集"))
            div="音乐";
            else
            div="其它";
            return div;
    }

我没有看出问题在哪里,但是给你一个建议:不要把语句写的那么复杂,只有这样才能发现问题。

Java字符串比较要用equals,C#才用==,Java真是坑。

在JAVA中不可以用== 我们用equals.