Java KeyEvent - why "Unknown" != "Unknown"? [duplicate] - java

This question already has answers here:
How do I compare strings in Java?
(23 answers)
Closed 7 years ago.
Why does
KeyEvent.getKeyText(0).substring(0, 7) == "Unknown"
return false when
System.out.print(KeyEvent.getKeyText(0).substring(0, 7));
prints exactly "Unknown"?

In Java Strings are objects, so you should not compare with ==. You have to call equals on strings to compare there content.
If you compare them with == you compare them by reference.
KeyEvent.getKeyText(0).substring(0, 7).equals("Unknown");
An alternative would be contains:
KeyEvent.getKeyText(0).contains("Unknown");
See this post: Java String.equals versus ==

Related

comparing two identical java byte arrays returns false [duplicate]

This question already has answers here:
Compare two Byte Arrays? (Java)
(6 answers)
Comparing two integer arrays in Java
(10 answers)
equals vs Arrays.equals in Java
(9 answers)
Closed 2 years ago.
System.out.println("test".getBytes() == "test".getBytes() ? "same" : "diff");
System.out.println("test".getBytes().equals("test".getBytes()) ? "same" : "diff");
In both of those lines diff is output. They're the same thing so shouldn't it be same that is output?
Try this.
System.out.println(Arrays.compare("test".getBytes(), "test".getBytes()) == 0 ? "same" : "diff");

Conversion of character to String not working [duplicate]

This question already has answers here:
How do I compare strings in Java?
(23 answers)
Closed 7 years ago.
String s="rahul".substring(0, 1);
s==Character.toString('r') //2nd
2nd evaluates to false but it should evaluate to true since i am converting 'r' to a String.
Why i am getting false as a result?
By doing this i am able to make the condition true
//char s=name.charAt(0);
// s=='r'
;
Try it as:
s.equals(Character.toString('r'). For more details What's the difference between ".equals" and "=="?
Instead of comparing Strings with == you should use equals().
String s="rahul".substring(0, 1);
System.out.println(s.equals(Character.toString('r')));
Use .equals instead, see code below:
//current code
System.out.println(s==Character.toString('r'));
//change to be as follows
s.equals( Character.toString('r'));
System.out.println(s.equals( Character.toString('r')));

Java - Compare item of String array with a String [duplicate]

This question already has answers here:
How do I compare strings in Java?
(23 answers)
String.equals versus == [duplicate]
(20 answers)
Closed 8 years ago.
I really don't understand what's wrong right now.
String s = "a,b,c,d";
String[] test = s.split(",");
System.out.println(test[0]);
System.out.println(test[0] == "a");
Console prints:
a
false
That doesn't make sense at all. test[0] is "a" and ("a" == "a") is false ?
Excuse me for my bad english.
Thanks!
== tests for reference equality.
.equals() tests for value equality.
Look this question.

Why == for Integer.valueOf(500) returns false but true for 5? [duplicate]

This question already has answers here:
Java: Integer equals vs. ==
(7 answers)
Closed 8 years ago.
System.out.println(Integer.valueOf(5) == Integer.valueOf(5));
System.out.println(Integer.valueOf(500) == Integer.valueOf(500));
The output is
true
false
Why does the first line returns true but the second line returns false? What's the trick here since both are calling valueOf() on Integer class.
There's cached instances of low numbered Integer objects but not any of higher valued Integer objects.
If you didn't notice before, you are comparing objects, not ints.

String manipulation boolean [duplicate]

This question already has answers here:
How do I compare strings in Java?
(23 answers)
Closed 8 years ago.
String a ="abc";
return (a.substring(1)=="bc");
I tried to print the result of
a.substring(1)
which is also
"bc"
Why the result is false?
I think it's true.
== compares references and the value of primitives (int, long etc), use a.substring(1).equals("bc") instead.
It should be like this:
String s = "abc";
System.out.println(s.substring(1).equals("bc"));

Categories