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。

  • 相关阅读:
    gitLab、docker
    Spring源码分析
    Tomcat堆内存分析
    Kafka入门一
    Java NIO
    spring注解
    websocket即时通讯
    pycharm安装dlib库
    python+opencv人脸识别是否戴口罩
    2021年暑假周总结1
  • 原文地址:https://www.cnblogs.com/holab/p/8586872.html
Copyright © 2011-2022 走看看