zoukankan      html  css  js  c++  java
  • Java中利用Scanner键入的字符串与其他字符串的比较

    利用Scanner获取到键入的字符串与其他字符串作比较时,如果直接用关系运算符 == 比较,得到的结果总是false,因为实际比较的是两个变量引用的内存地址;

    而要比较其内容是否相等,可以使用Object的equals方法。

    例子:

    Scanner sc = new Scanner(System.in);
    String str1 = sc.next(); //从键盘中键入 你好
    String str2 = "你好";
    System.out.println(str1 == str2); //false
    System.out.println(str1.equals(str2)); //true

    下面的例子中两个字符串变量引用的是同一个字符串常量(“你好”),即“指向”了同一块内存地址,所以当用 == 比较这两个变量时得到的结果是true。

    String str1 = "你好";
    String str2 = "你好";
    System.out.println(str1 == str2); //true
    System.out.println(str1.equals(str2)); //true

    上面两个例子看起来似乎都是 两个字符串变量(str1,str2)引用了同一个字符串常量(“你好”)。

    但实际上,只有第二个例子中的 两个变量 引用了存放在data segement中的同一个字符串常量,即这两个变量“指向”同一块存放“你好”字符串常量的地址;

    第一个例子中,通过键入产生的字符串 相当于 String str1 = new String("你好"); new出来的一个新对象,不论之前是否有内容相同的对象,都会再new一个新的对象;

    str1所引用到的与直接定义的字符串变量str2所引用的对象不同,故用==比较为false。

  • 相关阅读:
    Git 使用juju
    svn Q&A
    ubuntu 常用命令
    java中set的交集、差集、并集的简单实现
    java 读写JSON(一)
    java类型转化之SimpleDateFormat-时间转化
    maven 基本常识以及命令
    maven遇到的问题
    java编程思想,对象导论
    条目5:避免创建不必要的对象
  • 原文地址:https://www.cnblogs.com/holab/p/8586872.html
Copyright © 2011-2022 走看看