equals() is a method of all Java Objects. But char is not an Object type in Java, it is a primitive type, it does not have any method or properties, so to check equality they can just use the == equals operator.
Yes, char is just like any other primitive type, you can just compare them by == .
or cast char letterChar into an int and check if it equals 0 since the default value of a char is \u0000 - (the nul character on the ascii table, not the null reference which is what you are checking for when you say letterChar == null )- which when cast will be 0 .
A character is called a whitespace character in Java if and only if Character. isWhitespace(char) method returns true. The most commonly used whitespace characters are \n, \t, \r and space. The regular-expression pattern for whitespace characters is \s .
if (c == ' ')
char
is a primitive data type, so it can be compared with ==
.
Also, by using double quotes you create String
constant (" "
), while with single quotes it's a char
constant (' '
).
The code you needs depends on what you mean by "an empty space".
If you mean the ASCII / Latin-1 / Unicode space character (0x20) aka SP, then:
if (ch == ' ') {
// ...
}
If you mean any of the traditional ASCII whitespace characters (SP, HT, VT, CR, NL), then:
if (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n' || ch == '\x0b') {
// ...
}
If you mean any Unicode whitespace character, then:
if (Character.isWhitespace(ch)) {
// ...
}
Note that there are Unicode whitespace includes additional ASCII control codes, and some other Unicode characters in higher code planes; see the javadoc for Character.isWhitespace(char)
.
What you wrote was this:
if (Equals(ch, " ")) {
// ...
}
This is wrong on a number of levels. Firstly, the way that the Java compiler tries to interpret that is as a call to a method with a signature of boolean Equals(char, String)
.
Equals
wouldn't normally be the name of a method anyway. The Java convention is that method names start with a lower case letter.char
and String
are not comparable and cannot be cast to a common base type.There is such a thing as a Comparator in Java, but it is an interface not a method, and it is declared like this:
public interface Comparator<T> {
public int compare(T v1, T v2);
}
In other words, the method name is compare
(not Equals
), it returns an integer (not a boolean), and it compares two values that can be promoted to the type given by the type parameter.
Someone (in a deleted Answer!) said they tried this:
if (c == " ")
That fails for two reasons:
" "
is a String literal and not a character literal, and Java does not allow direct comparison of String
and char
values.
You should NEVER compare Strings or String literals using ==
. The ==
operator on a reference type compares object identity, not object value. In the case of String
it is common to have different objects with different identity and the same value. An ==
test will often give the wrong answer ... from the perspective of what you are trying to do here.
You could use
Character.isWhitespace(c)
or any of the other available methods in the Character class.
if (c == ' ')
also works.
Since char
is a primitive type, you can just write c == ' '
.
You only need to call equals()
for reference types like String
or Character
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With