How do I compare strings in Java?(Stackoverflow)
来源:互联网 发布:openstack golang 编辑:程序博客网 时间:2024/06/06 17:45
Question:
I've been using the ==
operator in my program to compare all my strings so far. However, I ran into a bug, changed one of them into .equals()
instead, and it fixed the bug.
Is ==
bad? When should it and should it not be used? What's the difference?
Answer:
==
tests for reference equality.
.equals()
tests for value equality.
Consequently, if you actually want to test whether two strings have the same value you should use.equals()
.
There are however a few situations where you can guarantee that two strings with the same value will be represented by the same object because of String interning. Those cases are specified by the Java Language Specification.
==
is for testing whether two strings are the same object.
// These two have the same valuenew String("test").equals("test") // --> true // ... but they are not the same objectnew String("test") == "test" // --> false // ... neither are thesenew String("test") == new String("test") // --> false // ... but these are because literals are interned by // the compiler and thus refer to the same object"test" == "test" // --> true // concatenation of string literals happens at compile time,// also resulting in the same object"test" == "te" + "st" // --> true// but .substring() is invoked at runtime, generating distinct objects"test" == "!test".substring(1) // --> false// interned strings can also be recalled by calling .intern()"test" == "!test".substring(1).intern() // --> true
It is important to note that ==
is a bit cheaper than equals()
(a single reference comparison instead of a method call), thus, in situations where it is applicable (i.e. you can guarantee that you are only dealing with interned strings) it can present an important performance improvement.However, these situations are rare.
More information here: What's wrong with using == to compare floats in Java?
- How do I compare strings in Java?(Stackoverflow)
- How to compare Strings in Java
- Compare strings in java
- How do I instantiate a Queue object in java?
- How do I join two lists in Java?
- How Do I Compare Two Files and Show The Differences?
- How do I debug JavaScript in Safari?
- How do I use Cygwin in Geophysics ?
- How do I install fonts in Fedora
- How do I write things in Swift?
- How to compare 2 arrays in java
- How to compare String in Java?
- How do I get start in QA/Test
- How do I include one DTD (or fragment) in another?
- How do I set breakpoints in modal dialogs?
- How do I create delegates in Objective-C?
- How do I change the default runlevel in Feodra 15?
- How do I disable video thumbnails in Windows 7?
- 第一篇Activity切换,TextView和EditView
- Database Management Systems (Foundations)
- 备忘:整形数据存储
- Database Management Systems (Application Development)
- 自画方式实现TimeLine效果
- How do I compare strings in Java?(Stackoverflow)
- Database Management Systems (Storage and Indexing)
- Database Management Systems (Query Evaluation)
- IDF实验室之牛刀小试啥?
- Database Management Systems (Transaction Management)
- Database Management Systems (Database Design and Tuning)
- Database Management Systems (Additional Topics)
- 详细的键值表
- Leetcode_191_Number of 1 Bits