qq_15676309 2015-04-02 14:06 采纳率: 66.7%
浏览 1667
已采纳

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

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

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

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

  • 写回答

4条回答 默认 最新

  • danielinbiti 2015-04-02 14:35
    关注

    字符串比较要用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;
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装
  • ¥40 复杂的限制性的商函数处理