黑马程序员技术交流社区

标题: 字符题目 [打印本页]

作者: fengche    时间: 2013-10-19 15:47
标题: 字符题目
本帖最后由 fengche 于 2013-10-19 17:30 编辑
  1. public class AnimalFarm{
  2.     public static void main(String[] args){
  3.         final String pig = "length: 10";
  4.         final String dog = "length: " + pig.length();
  5.         System.out. println("Animals are equal: "
  6.                             + pig == dog);
  7.     }
  8. 打印结果false而没有Animals are equal:这是为什么?
  9. }
复制代码

作者: 風諾    时间: 2013-10-19 15:52
本帖最后由 風諾 于 2013-10-19 15:54 编辑

class AnimalFarm{
    public static void main(String[] args){
        final String pig = "length: 10";
        final String dog = "length: " + pig.length();
        System.out. println("Animals are equal: "
                            + (pig == dog));//运算顺序从左到右,加括号吧
    }
}

不加括号就先是字符串相加,而后才判断 == 了

作者: 上篮高手    时间: 2013-10-19 16:07
        System.out. println("Animals are equal: "+ pig == dog);
        System.out. println(("Animals are equal: "+ pig) == dog);
        System.out. println("Animals are equal: "+ (pig == dog));

打印结果:
   
          false
          false
          Animals are equal: false

相信你已经明白了
         
作者: 赖波    时间: 2013-10-19 17:02
本帖最后由 赖波 于 2013-10-19 17:24 编辑
  1. <div class="blockcode"><blockquote>
  2. <blockquote>
复制代码
public class AnimalFarm{
    public static void main(String[] args){
       final  String pig = "length: 10";
       final String dog = "length: " + pig.length();
       System.out.println("Animals are equal: "+ pig == dog);
       System.out.println("--------------以下测试--------------");
        System.out.println("pig的hashCode:"+pig.hashCode());//一般hashCode值是内存地址显然这不是
        System.out.println("dog的hashCode:"+dog.hashCode());
        System.out.println("pig的长度:"+pig.length());
        System.out.println("dog的长度:"+dog.length());
        boolean flag=pig==dog;
        System.out. println("pig,dog用==的比较:"+flag);
        System.out. println("pig,dog用equals的比较:"+pig.equals(dog));
        /*以上可以得出:字符串,用"equals"去比较,"=="不好,
         * 再看帮助文档:
         *
         * String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现(*这重点,可以说String是对象了*)。
   字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。因为 String 对象是不可变的,所以可以共享。
         * "equals"方法是这样说的:将此字符串与指定的对象比较
         * "=="方法是比较内存地址的
         *
         * */
    }
}

作者: 赖波    时间: 2013-10-19 17:26
赖波 发表于 2013-10-19 17:02
public class AnimalFarm{
    public static void main(String[] args){
       final  String pig = "len ...

唉,真的偏了,非常感谢给我感情技术分
作者: 周志龙    时间: 2013-10-19 18:36

如果楼主已经解惑,请将帖子改为提问结束




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2