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。
Java中利用Scanner键入的字符串与其他字符串的比较的更多相关文章
- Java中利用随机数的猜拳游戏
Java中利用随机数的猜拳游戏,实现非常简单,重难点在于随机数的产生. 首先GameJude类是用于判断输赢的一个类: package testGame; public class GameJudge ...
- Java中Pattern类的quote方法将任何字符串(包括正则表达式)都转换成字符串常量,不具有任何匹配功能
Java中Pattern类的quote方法将任何字符串(包括正则表达式)都转换成字符串常量,不具有任何匹配功能. 下面是个例子: import org.junit.Test; import java. ...
- 在JAVA中利用public static final的组合方式对常量进行标识
在JAVA中利用public static final的组合方式对常量进行标识(固定格式). 对于在构造方法中利用final进行赋值的时候,此时在构造之前系统设置的默认值相对于构造方法失效. 常量(这 ...
- 在 Java 中不使用多余变量交换两个字符串
在 Java 中不使用多余变量交换两个字符串 public class Test { public static void main(String[] args) { String a = " ...
- java 中利用反射机制获取和设置实体类的属性值
摘要: 在java编程中,我们经常不知道传入自己方法中的实体类中到底有哪些方法,或者,我们需要根据用户传入的不同的属性来给对象设置不同的属性值,那么,java自带的反射机制可以很方便的达到这种目的,同 ...
- Java中byte与(16进制)字符串的互相转换
java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示,所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16 ...
- Java中利用MessageFormat对象实现类似C# string.Format方法格式化
我们在写C#代码的时候常常会使用到string.Format("待格式化字符串{0},{1},....",参数1,参数2,...),来格式化字符串,特别是拼接字符的时候,这种方式使 ...
- JAVA中利用反射机制进行对象和Map相互转换的方法
JAVA的反射机制主要作用是用来访问对象的属性.方法等等.所以,JAVA中对象和Map相互转换可以利用JAVA的反射机制来实现.例子如下: 一.对象转Map的方法 public static Map& ...
- Java中常用的API(三)——缓冲区字符串
前两节中分别介绍了Object和String,这一节主要介绍StringBuffer和StringBuilder. StringBuffer 由于String是不可变的,所以导致String对象泛滥, ...
随机推荐
- BZOJ 4004 [JLOI2015]装备购买 | 线性基
题目链接 Luogu P3265 题解 非常正常的线性基! 但是我不会线性基-- (吐槽:#define double long double 才过--) #include <cstdio> ...
- history新增方法
history对象包含用户访问过的URL,属于window对象的一部分,传统的使用中,它拥有length属性(浏览器历史列表URL数目) 及back().forward().go()方法. 而新的H5 ...
- luogu1600 [NOIp2016]天天爱跑步 (tarjanLca+dfs)
经过部分分的提示,我们可以把一条路径切成s到lca 和lca到t的链 这样就分为向上的链和向下的链,我们分开考虑: 向上:如果某一个链i可以对点x产生贡献,那么有deep[x]+w[x]=deep[S ...
- Android微信数据导出
在Nexus 5(Android 4.4)+WeChat 5.4,和Nexus 5(Android 5.0)+Wechat 6.0上测试可用. 获取加密的sqlite3数据库EnMicroMsg.db ...
- Linux 常用命令——which, whereis, locate, find
转载请注明出处:http://blog.csdn.net/drecik__/article/details/8455399 1. which 查找使用命令所在的位置 2. whereis 搜索文件,跟 ...
- 框架&样式表
框架 <frameset rows上下拆分,cols左右拆分><fram src选择文件></frameset>. 样式表:“div style”写在body内 ...
- redux与react-redux
Redux是一个数据状态管理插件,论是移动端还是 pc 端,当你使用 React 或者 vue 开发组件化的 SPA 程序时, 组件之间共享信息是一个非常大的问题.在react开发中,使用 React ...
- Linux网络基本网络配置
Linux网络基本网络配置方法介绍 网络信息查看 设置网络地址: cat /etc/sysconfig/network-scripts/ifcfg-eth0 你将会看到: DEVICE=eth0 BO ...
- scala生态圈概览
相信很多朋友都对 Scala 这个结合了面向对象编程范式和函数式编程范式的编程语言新宠有所耳闻吧?!那么一旦你所在的项目选择了 Scala 的技术栈,还有哪些工具,类库可以选择呢?各种类型的框架或者类 ...
- NOIP 普及组 2014 珠心算测验
传送门 https://www.cnblogs.com/violet-acmer/p/9898636.html 题解: 枚举两两间出所有的可能加和,然后遍历一遍这 n 个数,找出满足条件的总个数. 这 ...