Converts a String to a boolean (optimised for performance).
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* <p>Operations on boolean primitives and Boolean objects.</p>
*
* <p>This class tries to handle <code>null</code> input gracefully.
* An exception will not be thrown for a <code>null</code> input.
* Each method documents its behaviour in more detail.</p>
*
* @author Stephen Colebourne
* @author Matthew Hawthorne
* @author Gary Gregory
* @since 2.0
* @version $Id: BooleanUtils.java 589050 2007-10-27 05:07:45Z bayard $
*/
public class Main {
/**
* <p>Converts a String to a boolean (optimised for performance).</p>
*
* <p><code>'true'</code>, <code>'on'</code> or <code>'yes'</code>
* (case insensitive) will return <code>true</code>. Otherwise,
* <code>false</code> is returned.</p>
*
* <p>This method performs 4 times faster (JDK1.4) than
* <code>Boolean.valueOf(String)</code>. However, this method accepts
* 'on' and 'yes' as true values.
*
* <pre>
* BooleanUtils.toBoolean(null) = false
* BooleanUtils.toBoolean("true") = true
* BooleanUtils.toBoolean("TRUE") = true
* BooleanUtils.toBoolean("tRUe") = true
* BooleanUtils.toBoolean("on") = true
* BooleanUtils.toBoolean("yes") = true
* BooleanUtils.toBoolean("false") = false
* BooleanUtils.toBoolean("x gti") = false
* </pre>
*
* @param str the String to check
* @return the boolean value of the string, <code>false</code> if no match
*/
public static boolean toBoolean(String str) {
// Previously used equalsIgnoreCase, which was fast for interned 'true'.
// Non interned 'true' matched 15 times slower.
//
// Optimisation provides same performance as before for interned 'true'.
// Similar performance for null, 'false', and other strings not length 2/3/4.
// 'true'/'TRUE' match 4 times slower, 'tRUE'/'True' 7 times slower.
if (str == "true") {
return true;
}
if (str == null) {
return false;
}
switch (str.length()) {
case 2: {
char ch0 = str.charAt(0);
char ch1 = str.charAt(1);
return
(ch0 == 'o' || ch0 == 'O') &&
(ch1 == 'n' || ch1 == 'N');
}
case 3: {
char ch = str.charAt(0);
if (ch == 'y') {
return
(str.charAt(1) == 'e' || str.charAt(1) == 'E') &&
(str.charAt(2) == 's' || str.charAt(2) == 'S');
}
if (ch == 'Y') {
return
(str.charAt(1) == 'E' || str.charAt(1) == 'e') &&
(str.charAt(2) == 'S' || str.charAt(2) == 's');
}
return false;
}
case 4: {
char ch = str.charAt(0);
if (ch == 't') {
return
(str.charAt(1) == 'r' || str.charAt(1) == 'R') &&
(str.charAt(2) == 'u' || str.charAt(2) == 'U') &&
(str.charAt(3) == 'e' || str.charAt(3) == 'E');
}
if (ch == 'T') {
return
(str.charAt(1) == 'R' || str.charAt(1) == 'r') &&
(str.charAt(2) == 'U' || str.charAt(2) == 'u') &&
(str.charAt(3) == 'E' || str.charAt(3) == 'e');
}
}
}
return false;
}
}
Related examples in the same category
1. | Boolean Data Type | | |
2. | Boolean class creates primitives that wrap themselves around data items of the boolean data type | | |
3. | Looping Forever with true value | | |
4. | Boolean And Or | | |
5. | Convert String to Boolean | | |
6. | Convert Boolean to String | | |
7. | Java boolean value | | |
8. | Use toString method of Boolean class to convert it into String | | |
9. | Convert Java boolean Primitive to Boolean object | | |
10. | Convert Java String Object to Boolean Object | | |
11. | Compare Two Java boolean Arrays Example | | |
12. | Create an Boolean object from boolean value | | |
13. | Convert integer to boolean | | |
14. | Convert boolean to integer | | |
15. | Convert boolean value to Boolean | | |
16. | Create a boolean variable from string | | |
17. | Autoboxing/unboxing a Boolean and Character. | | |
18. | Converts a Boolean to a String returning 'on', 'off', or null. | | |
19. | Converts a Boolean to a String returning 'true', 'false', or null | | |
20. | Converts a Boolean to a String returning one of the input Strings. | | |
21. | Converts a Boolean to a String returning 'yes', 'no', or null | | |
22. | Converts a Boolean to a boolean handling null | | |
23. | Converts a Boolean to a boolean handling null by returning false | | |
24. | Converts a Boolean to an Integer specifying the conversion values. | | |
25. | Converts a Boolean to an int specifying the conversion values. | | |
26. | Converts a Boolean to a Integer using the convention that zero is false | | |
27. | Converts a String to a Boolean throwing an exception if no match. | | |
28. | Converts a String to a Boolean. | | |
29. | Converts a String to a Boolean throwing an exception if no match found. | | |
30. | Converts an Integer to a Boolean specifying the conversion values. | | |
31. | Converts an Integer to a Boolean using the convention that zero is false | | |
32. | Converts a boolean to a String returning 'on' or 'off' | | |
33. | Converts a boolean to a String returning 'true' or 'false' | | |
34. | Converts a boolean to an Integer using the convention that zero is false | | |
35. | Converts a boolean to an int using the convention that zero is false | | |
36. | Converts a boolean to a String returning 'yes' or 'no' | | |
37. | Performs an xor on a set of booleans. | | |
38. | Performs an xor on an array of Booleans. | | |
39. | Checks if a Boolean value is false, handling null by returning false | | |
40. | Checks if a Boolean value is not false, handling null by returning true | | |
41. | Checks if a Boolean value is not true, handling null by returning true | | |
42. | Checks if a Boolean value is true, handling null by returning false | | |
43. | Boolean factory that avoids creating new Boolean objecs all the time. | | |
44. | Converting a string to a boolean | | |
45. | Boolean Util | | |