inefficient indexof when String has one length
When a String has length just one, could be replaced by equivalent character literals, gaining some performance enhancement. I found 107 changes. diff -r e323c74edabd src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java --- a/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java Sat Apr 26 07:31:04 2014 -0300 @@ -547,7 +547,7 @@ i = strLowerCase.indexOf("<stringvalue>", i); if (i > 0) { i += "<stringvalue>".length(); - int i2 = str.indexOf("<", i); + int i2 = str.indexOf('<', i); return str.substring(i, i2); } } diff -r e323c74edabd src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java --- a/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java Sat Apr 26 07:31:04 2014 -0300 @@ -512,7 +512,7 @@ } static String qualifiedStringValue(String s1, String s234) { // Qualification by dot must decompose uniquely. Second string might already be qualified. - assert(s1.indexOf(".") < 0); + assert(s1.indexOf('.') < 0); return s1+"."+s234; } diff -r e323c74edabd src/share/classes/com/sun/jndi/cosnaming/CorbanameUrl.java --- a/src/share/classes/com/sun/jndi/cosnaming/CorbanameUrl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/jndi/cosnaming/CorbanameUrl.java Sat Apr 26 07:31:04 2014 -0300 @@ -102,7 +102,7 @@ } location = url.substring(addrStart, addrEnd); - int keyStart = location.indexOf("/"); + int keyStart = location.indexOf('/'); if (keyStart >= 0) { // Has key string if (keyStart == (location.length() -1)) { diff -r e323c74edabd src/share/classes/com/sun/jndi/rmi/registry/RegistryContext.java --- a/src/share/classes/com/sun/jndi/rmi/registry/RegistryContext.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/jndi/rmi/registry/RegistryContext.java Sat Apr 26 07:31:04 2014 -0300 @@ -336,7 +336,7 @@ String url = "rmi://"; // Enclose IPv6 literal address in '[' and ']' - url = (host.indexOf(":") > -1) ? url + "[" + host + "]" : + url = (host.indexOf(':') > -1) ? url + "[" + host + "]" : url + host; if (port > 0) { url += ":" + Integer.toString(port); diff -r e323c74edabd src/share/classes/com/sun/jndi/toolkit/url/GenericURLContext.java --- a/src/share/classes/com/sun/jndi/toolkit/url/GenericURLContext.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/jndi/toolkit/url/GenericURLContext.java Sat Apr 26 07:31:04 2014 -0300 @@ -149,7 +149,7 @@ * foo:rest/of/name foo: */ protected String getURLPrefix(String url) throws NamingException { - int start = url.indexOf(":"); + int start = url.indexOf(':'); if (start < 0) { throw new OperationNotSupportedException("Invalid URL: " + url); @@ -160,7 +160,7 @@ start += 2; // skip double slash // find last slash - int posn = url.indexOf("/", start); + int posn = url.indexOf('/', start); if (posn >= 0) { start = posn; } else { diff -r e323c74edabd src/share/classes/com/sun/rmi/rmid/ExecOptionPermission.java --- a/src/share/classes/com/sun/rmi/rmid/ExecOptionPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rmi/rmid/ExecOptionPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -303,7 +303,7 @@ offset = pname.length() - 1; - while ((last = pname.lastIndexOf(".", offset)) != -1) { + while ((last = pname.lastIndexOf('.', offset)) != -1) { pname = pname.substring(0, last+1) + "*"; x = permissions.get(pname); @@ -318,7 +318,7 @@ pname = p.getName(); offset = pname.length() - 1; - while ((last = pname.lastIndexOf("=", offset)) != -1) { + while ((last = pname.lastIndexOf('=', offset)) != -1) { pname = pname.substring(0, last+1) + "*"; x = permissions.get(pname); diff -r e323c74edabd src/share/classes/com/sun/rowset/CachedRowSetImpl.java --- a/src/share/classes/com/sun/rowset/CachedRowSetImpl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rowset/CachedRowSetImpl.java Sat Apr 26 07:31:04 2014 -0300 @@ -6831,7 +6831,7 @@ // table name else isolate table name. indexFrom = command.toLowerCase().indexOf("from"); - indexComma = command.indexOf(",", indexFrom); + indexComma = command.indexOf(',', indexFrom); if(indexComma == -1) { // implies only one table diff -r e323c74edabd src/share/classes/com/sun/rowset/JoinRowSetImpl.java --- a/src/share/classes/com/sun/rowset/JoinRowSetImpl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rowset/JoinRowSetImpl.java Sat Apr 26 07:31:04 2014 -0300 @@ -910,7 +910,7 @@ // now remove the last "," strWhereClause = strWhereClause.substring - (0, strWhereClause.lastIndexOf(",")); + (0, strWhereClause.lastIndexOf(',')); // Add from clause strWhereClause = strWhereClause.concat(" from "); @@ -920,7 +920,7 @@ //Remove the last "," strWhereClause = strWhereClause.substring - (0, strWhereClause.lastIndexOf(",")); + (0, strWhereClause.lastIndexOf(',')); // Add the where clause strWhereClause = strWhereClause.concat(" where "); diff -r e323c74edabd src/share/classes/com/sun/rowset/internal/WebRowSetXmlWriter.java --- a/src/share/classes/com/sun/rowset/internal/WebRowSetXmlWriter.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rowset/internal/WebRowSetXmlWriter.java Sat Apr 26 07:31:04 2014 -0300 @@ -240,7 +240,7 @@ // Remove the string after "@xxxx" // before writing it to the xml file. String strProviderInstance = (caller.getSyncProvider()).toString(); - String strProvider = strProviderInstance.substring(0, (caller.getSyncProvider()).toString().indexOf("@")); + String strProvider = strProviderInstance.substring(0, (caller.getSyncProvider()).toString().indexOf('@')); propString("sync-provider-name", strProvider); propString("sync-provider-vendor", "Oracle Corporation"); diff -r e323c74edabd src/share/classes/com/sun/rowset/internal/XmlReaderContentHandler.java --- a/src/share/classes/com/sun/rowset/internal/XmlReaderContentHandler.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rowset/internal/XmlReaderContentHandler.java Sat Apr 26 07:31:04 2014 -0300 @@ -1147,7 +1147,7 @@ if (nullValue) { rs.setSyncProvider(null); } else { - String str = s.substring(0,s.indexOf("@")+1); + String str = s.substring(0,s.indexOf('@')+1); rs.setSyncProvider(str); } break; diff -r e323c74edabd src/share/classes/com/sun/rowset/internal/XmlResolver.java --- a/src/share/classes/com/sun/rowset/internal/XmlResolver.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rowset/internal/XmlResolver.java Sat Apr 26 07:31:04 2014 -0300 @@ -39,7 +39,7 @@ public class XmlResolver implements EntityResolver { public InputSource resolveEntity(String publicId, String systemId) { - String schemaName = systemId.substring(systemId.lastIndexOf("/")); + String schemaName = systemId.substring(systemId.lastIndexOf('/')); if(systemId.startsWith("http://java.sun.com/xml/ns/jdbc")) { return new InputSource(this.getClass().getResourceAsStream(schemaName)); diff -r e323c74edabd src/share/classes/com/sun/security/auth/module/JndiLoginModule.java --- a/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java Sat Apr 26 07:31:04 2014 -0300 @@ -694,7 +694,7 @@ throw new LoginException("Error: no CallbackHandler available " + "to garner authentication information from the user"); - String protocol = userProvider.substring(0, userProvider.indexOf(":")); + String protocol = userProvider.substring(0, userProvider.indexOf(':')); Callback[] callbacks = new Callback[2]; callbacks[0] = new NameCallback(protocol + " " diff -r e323c74edabd src/share/classes/com/sun/security/auth/module/LdapLoginModule.java --- a/src/share/classes/com/sun/security/auth/module/LdapLoginModule.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/security/auth/module/LdapLoginModule.java Sat Apr 26 07:31:04 2014 -0300 @@ -400,7 +400,7 @@ // Add any JNDI properties to the environment for (String key : options.keySet()) { - if (key.indexOf(".") > -1) { + if (key.indexOf('.') > -1) { ldapEnvironment.put(key, options.get(key)); } } diff -r e323c74edabd src/share/classes/com/sun/tools/example/debug/gui/CommandInterpreter.java --- a/src/share/classes/com/sun/tools/example/debug/gui/CommandInterpreter.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/tools/example/debug/gui/CommandInterpreter.java Sat Apr 26 07:31:04 2014 -0300 @@ -857,7 +857,7 @@ bpSpec = runtime.createClassLineBreakpoint(classId, lineNumber); } else { // Try stripping method from class.method token. - int idot = token.lastIndexOf("."); + int idot = token.lastIndexOf('.'); if ( (idot <= 0) || /* No dot or dot in first char */ (idot >= token.length() - 1) ) { /* dot in last char */ return null; diff -r e323c74edabd src/share/classes/com/sun/tools/example/debug/tty/Commands.java --- a/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Sat Apr 26 07:31:04 2014 -0300 @@ -1079,7 +1079,7 @@ } } else { // Try stripping method from class.method token. - int idot = token.lastIndexOf("."); + int idot = token.lastIndexOf('.'); if ( (idot <= 0) || /* No dot or dot in first char */ (idot >= token.length() - 1) ) { /* dot in last char */ printBreakpointCommandUsage(atForm, inForm); diff -r e323c74edabd src/share/classes/com/sun/tools/hat/internal/server/AllClassesQuery.java --- a/src/share/classes/com/sun/tools/hat/internal/server/AllClassesQuery.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/tools/hat/internal/server/AllClassesQuery.java Sat Apr 26 07:31:04 2014 -0300 @@ -67,7 +67,7 @@ continue; } String name = clazz.getName(); - int pos = name.lastIndexOf("."); + int pos = name.lastIndexOf('.'); String pkg; if (name.startsWith("[")) { // Only in ancient heap dumps pkg = "<Arrays>"; diff -r e323c74edabd src/share/classes/java/lang/Class.java --- a/src/share/classes/java/lang/Class.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/Class.java Sat Apr 26 07:31:04 2014 -0300 @@ -1296,7 +1296,7 @@ String simpleName = getSimpleBinaryName(); if (simpleName == null) { // top level class simpleName = getName(); - return simpleName.substring(simpleName.lastIndexOf(".")+1); // strip the package name + return simpleName.substring(simpleName.lastIndexOf('.')+1); // strip the package name } // According to JLS3 "Binary Compatibility" (13.1) the binary // name of non-package classes (not top level) is the binary diff -r e323c74edabd src/share/classes/java/lang/ClassLoader.java --- a/src/share/classes/java/lang/ClassLoader.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/ClassLoader.java Sat Apr 26 07:31:04 2014 -0300 @@ -2136,7 +2136,7 @@ return result.booleanValue(); // Check for most specific package entry - int dotIndex = className.lastIndexOf("."); + int dotIndex = className.lastIndexOf('.'); if (dotIndex < 0) { // default package result = packageAssertionStatus.get(null); if (result != null) @@ -2147,7 +2147,7 @@ result = packageAssertionStatus.get(className); if (result != null) return result.booleanValue(); - dotIndex = className.lastIndexOf(".", dotIndex-1); + dotIndex = className.lastIndexOf('.', dotIndex-1); } // Return the classloader default diff -r e323c74edabd src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java --- a/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Sat Apr 26 07:31:04 2014 -0300 @@ -84,7 +84,7 @@ private InvokerBytecodeGenerator(LambdaForm lambdaForm, int localsMapSize, String className, String invokerName, MethodType invokerType) { if (invokerName.contains(".")) { - int p = invokerName.indexOf("."); + int p = invokerName.indexOf('.'); className = invokerName.substring(0, p); invokerName = invokerName.substring(p+1); } diff -r e323c74edabd src/share/classes/java/net/CookieManager.java --- a/src/share/classes/java/net/CookieManager.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/net/CookieManager.java Sat Apr 26 07:31:04 2014 -0300 @@ -294,7 +294,7 @@ // the path is the directory of the page/doc String path = uri.getPath(); if (!path.endsWith("/")) { - int i = path.lastIndexOf("/"); + int i = path.lastIndexOf('/'); if (i > 0) { path = path.substring(0, i + 1); } else { @@ -364,7 +364,7 @@ static private boolean isInPortList(String lst, int port) { - int i = lst.indexOf(","); + int i = lst.indexOf(','); int val = -1; while (i > 0) { try { @@ -375,7 +375,7 @@ } catch (NumberFormatException numberFormatException) { } lst = lst.substring(i+1); - i = lst.indexOf(","); + i = lst.indexOf(','); } if (!lst.isEmpty()) { try { diff -r e323c74edabd src/share/classes/java/net/InetAddress.java --- a/src/share/classes/java/net/InetAddress.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/net/InetAddress.java Sat Apr 26 07:31:04 2014 -0300 @@ -1138,7 +1138,7 @@ // This is supposed to be an IPv6 literal // Check if a numeric or string zone id is present int pos; - if ((pos=host.indexOf ("%")) != -1) { + if ((pos=host.indexOf ('%')) != -1) { numericZone = checkNumericZone (host); if (numericZone == -1) { /* remainder of string must be an ifname */ ifname = host.substring (pos+1); diff -r e323c74edabd src/share/classes/java/net/SocketPermission.java --- a/src/share/classes/java/net/SocketPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/net/SocketPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -777,7 +777,7 @@ // Literal IPv6 address host = getName().substring(1, getName().indexOf(']')); } else { - int i = getName().indexOf(":"); + int i = getName().indexOf(':'); if (i == -1) host = getName(); else { diff -r e323c74edabd src/share/classes/java/net/SocksSocketImpl.java --- a/src/share/classes/java/net/SocksSocketImpl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/net/SocksSocketImpl.java Sat Apr 26 07:31:04 2014 -0300 @@ -368,7 +368,7 @@ String host = epoint.getHostString(); // IPv6 litteral? if (epoint.getAddress() instanceof Inet6Address && - (!host.startsWith("[")) && (host.indexOf(":") >= 0)) { + (!host.startsWith("[")) && (host.indexOf(':') >= 0)) { host = "[" + host + "]"; } try { @@ -684,7 +684,7 @@ String host = saddr.getHostString(); // IPv6 litteral? if (saddr.getAddress() instanceof Inet6Address && - (!host.startsWith("[")) && (host.indexOf(":") >= 0)) { + (!host.startsWith("[")) && (host.indexOf(':') >= 0)) { host = "[" + host + "]"; } try { diff -r e323c74edabd src/share/classes/java/net/URI.java --- a/src/share/classes/java/net/URI.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/net/URI.java Sat Apr 26 07:31:04 2014 -0300 @@ -1851,9 +1851,9 @@ sb.append("//"); if (authority.startsWith("[")) { // authority should (but may not) contain an embedded IPv6 address - int end = authority.indexOf("]"); + int end = authority.indexOf(']'); String doquote = authority, dontquote = ""; - if (end != -1 && authority.indexOf(":") != -1) { + if (end != -1 && authority.indexOf(':') != -1) { // the authority contains an IPv6 address if (end == authority.length()) { dontquote = authority; @@ -1889,8 +1889,8 @@ * because we must not quote a literal IPv6 address */ if (opaquePart.startsWith("//[")) { - int end = opaquePart.indexOf("]"); - if (end != -1 && opaquePart.indexOf(":")!=-1) { + int end = opaquePart.indexOf(']'); + if (end != -1 && opaquePart.indexOf(':')!=-1) { String doquote, dontquote; if (end == opaquePart.length()) { dontquote = opaquePart; diff -r e323c74edabd src/share/classes/java/security/BasicPermission.java --- a/src/share/classes/java/security/BasicPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/security/BasicPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -430,7 +430,7 @@ offset = path.length()-1; - while ((last = path.lastIndexOf(".", offset)) != -1) { + while ((last = path.lastIndexOf('.', offset)) != -1) { path = path.substring(0, last+1) + "*"; //System.out.println("check "+path); diff -r e323c74edabd src/share/classes/java/security/Provider.java --- a/src/share/classes/java/security/Provider.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/security/Provider.java Sat Apr 26 07:31:04 2014 -0300 @@ -927,7 +927,7 @@ } private String[] getTypeAndAlgorithm(String key) { - int i = key.indexOf("."); + int i = key.indexOf('.'); if (i < 1) { if (debug != null) { debug.println("Ignoring invalid entry in provider " diff -r e323c74edabd src/share/classes/java/security/Security.java --- a/src/share/classes/java/security/Security.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/security/Security.java Sat Apr 26 07:31:04 2014 -0300 @@ -1114,7 +1114,7 @@ // implementation of an algorithm. We are only interested // in entries which lead to the implementation // classes. - if (currentKey.indexOf(" ") < 0) { + if (currentKey.indexOf(' ') < 0) { result.add(currentKey.substring( serviceName.length() + 1)); } diff -r e323c74edabd src/share/classes/java/util/PropertyPermission.java --- a/src/share/classes/java/util/PropertyPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/util/PropertyPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -547,7 +547,7 @@ offset = name.length()-1; - while ((last = name.lastIndexOf(".", offset)) != -1) { + while ((last = name.lastIndexOf('.', offset)) != -1) { name = name.substring(0, last+1) + "*"; //System.out.println("check "+name); diff -r e323c74edabd src/share/classes/java/util/jar/JarVerifier.java --- a/src/share/classes/java/util/jar/JarVerifier.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/util/jar/JarVerifier.java Sat Apr 26 07:31:04 2014 -0300 @@ -278,7 +278,7 @@ // now we are parsing a signature block file - String key = uname.substring(0, uname.lastIndexOf(".")); + String key = uname.substring(0, uname.lastIndexOf('.')); if (signerCache == null) signerCache = new ArrayList<>(); diff -r e323c74edabd src/share/classes/java/util/logging/LogManager.java --- a/src/share/classes/java/util/logging/LogManager.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/util/logging/LogManager.java Sat Apr 26 07:31:04 2014 -0300 @@ -866,7 +866,7 @@ int ix = 1; for (;;) { - int ix2 = name.indexOf(".", ix); + int ix2 = name.indexOf('.', ix); if (ix2 < 0) { break; } @@ -889,7 +889,7 @@ } LogNode node = root; while (name.length() > 0) { - int ix = name.indexOf("."); + int ix = name.indexOf('.'); String head; if (ix > 0) { head = name.substring(0, ix); diff -r e323c74edabd src/share/classes/java/util/logging/XMLFormatter.java --- a/src/share/classes/java/util/logging/XMLFormatter.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/util/logging/XMLFormatter.java Sat Apr 26 07:31:04 2014 -0300 @@ -174,7 +174,7 @@ // Check to see if the parameter was not a messagetext format // or was not null or empty if ( parameters != null && parameters.length != 0 - && record.getMessage().indexOf("{") == -1 ) { + && record.getMessage().indexOf('{') == -1 ) { for (int i = 0; i < parameters.length; i++) { sb.append(" <param>"); try { diff -r e323c74edabd src/share/classes/javax/management/MBeanPermission.java --- a/src/share/classes/javax/management/MBeanPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/management/MBeanPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -290,7 +290,7 @@ // Parse ObjectName - int openingBracket = name.indexOf("["); + int openingBracket = name.indexOf('['); if (openingBracket == -1) { // If "[on]" missing then ObjectName("*:*") // @@ -329,7 +329,7 @@ // Parse member - int poundSign = name.indexOf("#"); + int poundSign = name.indexOf('#'); if (poundSign == -1) setMember("*"); diff -r e323c74edabd src/share/classes/javax/management/modelmbean/DescriptorSupport.java --- a/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Sat Apr 26 07:31:04 2014 -0300 @@ -329,7 +329,7 @@ inFld = false; } else if (inFld && inDesc) { // want kw=value, eg, name="myname" value="myvalue" - int eq_separator = tok.indexOf("="); + int eq_separator = tok.indexOf('='); if (eq_separator > 0) { String kwPart = tok.substring(0,eq_separator); String valPart = tok.substring(eq_separator+1); @@ -458,7 +458,7 @@ if ((fields[i] == null) || (fields[i].equals(""))) { continue; } - int eq_separator = fields[i].indexOf("="); + int eq_separator = fields[i].indexOf('='); if (eq_separator < 0) { // illegal if no = or is first character if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) { diff -r e323c74edabd src/share/classes/javax/management/modelmbean/RequiredModelMBean.java --- a/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java Sat Apr 26 07:31:04 2014 -0300 @@ -934,7 +934,7 @@ String opMethodName; // Parse for class name and method - int opSplitter = opName.lastIndexOf("."); + int opSplitter = opName.lastIndexOf('.'); if (opSplitter > 0) { opClassName = opName.substring(0,opSplitter); opMethodName = opName.substring(opSplitter+1); @@ -943,7 +943,7 @@ /* Ignore anything after a left paren. We keep this for compatibility but it isn't specified. */ - opSplitter = opMethodName.indexOf("("); + opSplitter = opMethodName.indexOf('('); if (opSplitter > 0) opMethodName = opMethodName.substring(0,opSplitter); diff -r e323c74edabd src/share/classes/javax/security/auth/PrivateCredentialPermission.java --- a/src/share/classes/javax/security/auth/PrivateCredentialPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/security/auth/PrivateCredentialPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -495,7 +495,7 @@ // perform new initialization from the permission name - if (getName().indexOf(" ") == -1 && getName().indexOf("\"") == -1) { + if (getName().indexOf(' ') == -1 && getName().indexOf('\"') == -1) { // name only has a credential class specified credentialClass = getName(); diff -r e323c74edabd src/share/classes/javax/security/sasl/Sasl.java --- a/src/share/classes/javax/security/sasl/Sasl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/security/sasl/Sasl.java Sat Apr 26 07:31:04 2014 -0300 @@ -600,7 +600,7 @@ // implementation of an algorithm. We are only interested // in entries which lead to the implementation // classes. - if (currentKey.indexOf(" ") < 0) { + if (currentKey.indexOf(' ') < 0) { String className = providers[i].getProperty(currentKey); if (!classes.contains(className)) { classes.add(className); diff -r e323c74edabd src/share/classes/javax/swing/JEditorPane.java --- a/src/share/classes/javax/swing/JEditorPane.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/swing/JEditorPane.java Sat Apr 26 07:31:04 2014 -0300 @@ -964,7 +964,7 @@ // The type could have optional info is part of it, // for example some charset info. We need to strip that // of and save it. - int parm = type.indexOf(";"); + int parm = type.indexOf(';'); if (parm > -1) { // Save the paramList. String paramList = type.substring(parm); diff -r e323c74edabd src/share/classes/javax/swing/plaf/nimbus/NimbusStyle.java --- a/src/share/classes/javax/swing/plaf/nimbus/NimbusStyle.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/swing/plaf/nimbus/NimbusStyle.java Sat Apr 26 07:31:04 2014 -0300 @@ -653,7 +653,7 @@ // strip off the prefix, if there is one. String fullKey = key.toString(); - String partialKey = fullKey.substring(fullKey.indexOf(".") + 1); + String partialKey = fullKey.substring(fullKey.indexOf('.') + 1); Object obj = null; int xstate = getExtendedState(ctx, v); diff -r e323c74edabd src/share/classes/sun/applet/AppletClassLoader.java --- a/src/share/classes/sun/applet/AppletClassLoader.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/applet/AppletClassLoader.java Sat Apr 26 07:31:04 2014 -0300 @@ -168,7 +168,7 @@ */ protected Class findClass(String name) throws ClassNotFoundException { - int index = name.indexOf(";"); + int index = name.indexOf(';'); String cookie = ""; if(index != -1) { cookie = name.substring(index, name.length()); @@ -608,7 +608,7 @@ // deal with URL rewriting String cookie = null; - int index = name.indexOf(";"); + int index = name.indexOf(';'); if(index != -1) { cookie = name.substring(index, name.length()); name = name.substring(0, index); diff -r e323c74edabd src/share/classes/sun/awt/FontConfiguration.java --- a/src/share/classes/sun/awt/FontConfiguration.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/awt/FontConfiguration.java Sat Apr 26 07:31:04 2014 -0300 @@ -272,9 +272,9 @@ if (configFile != null) { return configFile; } - int decimalPointIndex = osVersion.indexOf("."); + int decimalPointIndex = osVersion.indexOf('.'); if (decimalPointIndex != -1) { - osMajorVersion = osVersion.substring(0, osVersion.indexOf(".")); + osMajorVersion = osVersion.substring(0, osVersion.indexOf('.')); configFile = findImpl(baseName + "." + osName + "." + osMajorVersion); if (configFile != null) { return configFile; diff -r e323c74edabd src/share/classes/sun/font/Type1Font.java --- a/src/share/classes/sun/font/Type1Font.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/font/Type1Font.java Sat Apr 26 07:31:04 2014 -0300 @@ -492,7 +492,7 @@ //Conversion: Expand abbreviations in style portion (everything after '-'), // replace '-' with space and insert missing spaces - pos = name.indexOf("-"); + pos = name.indexOf('-'); if (pos >= 0) { res = expandName(name.substring(0, pos), false); res += " " + expandName(name.substring(pos+1), true); @@ -513,8 +513,8 @@ //Conversion: Truncate style portion (everything after '-') // and insert missing spaces - if (tmp.indexOf("-") > 0) { - tmp = tmp.substring(0, tmp.indexOf("-")); + if (tmp.indexOf('-') > 0) { + tmp = tmp.substring(0, tmp.indexOf('-')); } return expandName(tmp, false); diff -r e323c74edabd src/share/classes/sun/jvmstat/monitor/AbstractMonitor.java --- a/src/share/classes/sun/jvmstat/monitor/AbstractMonitor.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/jvmstat/monitor/AbstractMonitor.java Sat Apr 26 07:31:04 2014 -0300 @@ -84,7 +84,7 @@ * {@inheritDoc} */ public String getBaseName() { - int baseIndex = name.lastIndexOf(".")+1; + int baseIndex = name.lastIndexOf('.') + 1; return name.substring(baseIndex); } diff -r e323c74edabd src/share/classes/sun/jvmstat/monitor/HostIdentifier.java --- a/src/share/classes/sun/jvmstat/monitor/HostIdentifier.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/jvmstat/monitor/HostIdentifier.java Sat Apr 26 07:31:04 2014 -0300 @@ -138,8 +138,8 @@ String frag = u.getFragment(); URI u2 = null; - int c1index = uriString.indexOf(":"); - int c2index = uriString.lastIndexOf(":"); + int c1index = uriString.indexOf(':'); + int c2index = uriString.lastIndexOf(':'); if (c2index != c1index) { /* * this is the scheme:hostname:port case. Attempt to diff -r e323c74edabd src/share/classes/sun/management/snmp/jvminstr/NotificationTargetImpl.java --- a/src/share/classes/sun/management/snmp/jvminstr/NotificationTargetImpl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/management/snmp/jvminstr/NotificationTargetImpl.java Sat Apr 26 07:31:04 2014 -0300 @@ -70,8 +70,8 @@ String addrStr; if (target.startsWith("[")) { - final int index = target.indexOf("]"); - final int index2 = target.lastIndexOf(":"); + final int index = target.indexOf(']'); + final int index2 = target.lastIndexOf(':'); if(index == -1) throw new IllegalArgumentException("Host starts with [ but " + "does not end with ]"); @@ -85,8 +85,8 @@ if (addrStr.startsWith("[")) throw new IllegalArgumentException("More than one [[...]]"); } else { - final int index = target.indexOf(":"); - final int index2 = target.lastIndexOf(":"); + final int index = target.indexOf(':'); + final int index2 = target.lastIndexOf(':'); if(index == -1) throw new IllegalArgumentException("Missing port separator \":\""); addrStr = target.substring(0, index); @@ -98,7 +98,7 @@ address = InetAddress.getByName(addrStr); //THE CHECK SHOULD BE STRONGER!!! - final int index = target.lastIndexOf(":"); + final int index = target.lastIndexOf(':'); community = target.substring(index + 1, target.length()); diff -r e323c74edabd src/share/classes/sun/misc/ExtensionInfo.java --- a/src/share/classes/sun/misc/ExtensionInfo.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/ExtensionInfo.java Sat Apr 26 07:31:04 2014 -0300 @@ -273,8 +273,8 @@ else { // Look for index of "." in the string - int sIdx = source.indexOf("."); - int tIdx = target.indexOf("."); + int sIdx = source.indexOf('.'); + int tIdx = target.indexOf('.'); if (sIdx == -1) sIdx = source.length() - 1; @@ -304,10 +304,10 @@ String versionError = mf.format(args); // Look for "-" for pre-release - int prIndex = token.indexOf("-"); + int prIndex = token.indexOf('-'); // Look for "_" for patch release - int patchIndex = token.indexOf("_"); + int patchIndex = token.indexOf('_'); if (prIndex == -1 && patchIndex == -1) { diff -r e323c74edabd src/share/classes/sun/misc/JarIndex.java --- a/src/share/classes/sun/misc/JarIndex.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/JarIndex.java Sat Apr 26 07:31:04 2014 -0300 @@ -172,7 +172,7 @@ if ((jarFiles = indexMap.get(fileName)) == null) { /* try the package name again */ int pos; - if((pos = fileName.lastIndexOf("/")) != -1) { + if((pos = fileName.lastIndexOf('/')) != -1) { jarFiles = indexMap.get(fileName.substring(0, pos)); } } @@ -195,7 +195,7 @@ public void add(String fileName, String jarName) { String packageName; int pos; - if((pos = fileName.lastIndexOf("/")) != -1) { + if((pos = fileName.lastIndexOf('/')) != -1) { packageName = fileName.substring(0, pos); } else { packageName = fileName; diff -r e323c74edabd src/share/classes/sun/misc/URLClassPath.java --- a/src/share/classes/sun/misc/URLClassPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/URLClassPath.java Sat Apr 26 07:31:04 2014 -0300 @@ -793,7 +793,7 @@ boolean validIndex(final String name) { String packageName = name; int pos; - if((pos = name.lastIndexOf("/")) != -1) { + if((pos = name.lastIndexOf('/')) != -1) { packageName = name.substring(0, pos); } @@ -803,7 +803,7 @@ while (enum_.hasMoreElements()) { entry = enum_.nextElement(); entryName = entry.getName(); - if((pos = entryName.lastIndexOf("/")) != -1) + if((pos = entryName.lastIndexOf('/')) != -1) entryName = entryName.substring(0, pos); if (entryName.equals(packageName)) { return true; @@ -900,7 +900,7 @@ */ JarIndex newIndex = newLoader.getIndex(); if(newIndex != null) { - int pos = jarName.lastIndexOf("/"); + int pos = jarName.lastIndexOf('/'); newIndex.merge(this.index, (pos == -1 ? null : jarName.substring(0, pos + 1))); } diff -r e323c74edabd src/share/classes/sun/net/ftp/impl/FtpClient.java --- a/src/share/classes/sun/net/ftp/impl/FtpClient.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/net/ftp/impl/FtpClient.java Sat Apr 26 07:31:04 2014 -0300 @@ -259,7 +259,7 @@ d = null; } if (d != null && time != null) { - int c = time.indexOf(":"); + int c = time.indexOf(':'); now.setTime(d); now.set(Calendar.HOUR, Integer.parseInt(time.substring(0, c))); now.set(Calendar.MINUTE, Integer.parseInt(time.substring(c + 1))); @@ -295,7 +295,7 @@ public FtpDirEntry parseLine(String line) { String name = null; - int i = line.lastIndexOf(";"); + int i = line.lastIndexOf(';'); if (i > 0) { name = line.substring(i + 1).trim(); line = line.substring(0, i); @@ -306,7 +306,7 @@ FtpDirEntry file = new FtpDirEntry(name); while (!line.isEmpty()) { String s; - i = line.indexOf(";"); + i = line.indexOf(';'); if (i > 0) { s = line.substring(0, i); line = line.substring(i + 1); @@ -314,7 +314,7 @@ s = line; line = ""; } - i = s.indexOf("="); + i = s.indexOf('='); if (i > 0) { String fact = s.substring(0, i); String value = s.substring(i + 1); diff -r e323c74edabd src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java --- a/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java Sat Apr 26 07:31:04 2014 -0300 @@ -325,7 +325,7 @@ while (i.hasNext()) { String parentDomain = i.next(); int start = 0; - while ((start = parentDomain.indexOf(".")) != -1 + while ((start = parentDomain.indexOf('.')) != -1 && start < parentDomain.length() -1) { try { results = resolve(ctx, host+"."+parentDomain, ids, 0); diff -r e323c74edabd src/share/classes/sun/net/util/IPAddressUtil.java --- a/src/share/classes/sun/net/util/IPAddressUtil.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/net/util/IPAddressUtil.java Sat Apr 26 07:31:04 2014 -0300 @@ -149,7 +149,7 @@ byte[] dst = new byte[INADDR16SZ]; int srcb_length = srcb.length; - int pc = src.indexOf ("%"); + int pc = src.indexOf ('%'); if (pc == srcb_length -1) { return null; } diff -r e323c74edabd src/share/classes/sun/net/www/ParseUtil.java --- a/src/share/classes/sun/net/www/ParseUtil.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/net/www/ParseUtil.java Sat Apr 26 07:31:04 2014 -0300 @@ -356,8 +356,8 @@ * because we must not quote a literal IPv6 address */ if (opaquePart.startsWith("//[")) { - int end = opaquePart.indexOf("]"); - if (end != -1 && opaquePart.indexOf(":")!=-1) { + int end = opaquePart.indexOf(']'); + if (end != -1 && opaquePart.indexOf(':')!=-1) { String doquote, dontquote; if (end == opaquePart.length()) { dontquote = opaquePart; @@ -408,8 +408,8 @@ } else if (authority != null) { sb.append("//"); if (authority.startsWith("[")) { - int end = authority.indexOf("]"); - if (end != -1 && authority.indexOf(":")!=-1) { + int end = authority.indexOf(']'); + if (end != -1 && authority.indexOf(':')!=-1) { String doquote, dontquote; if (end == authority.length()) { dontquote = authority; diff -r e323c74edabd src/share/classes/sun/reflect/misc/ReflectUtil.java --- a/src/share/classes/sun/reflect/misc/ReflectUtil.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/reflect/misc/ReflectUtil.java Sat Apr 26 07:31:04 2014 -0300 @@ -341,6 +341,6 @@ * (not to be confused with a Java Language anonymous inner class). */ public static boolean isVMAnonymousClass(Class<?> cls) { - return cls.getName().indexOf("/") > -1; + return cls.getName().indexOf('/') > -1; } } diff -r e323c74edabd src/share/classes/sun/rmi/runtime/Log.java --- a/src/share/classes/sun/rmi/runtime/Log.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/rmi/runtime/Log.java Sat Apr 26 07:31:04 2014 -0300 @@ -434,7 +434,7 @@ * Mimic old log messages that only contain unqualified names. */ private static String unqualifiedName(String name) { - int lastDot = name.lastIndexOf("."); + int lastDot = name.lastIndexOf('.'); if (lastDot >= 0) { name = name.substring(lastDot + 1); } diff -r e323c74edabd src/share/classes/sun/rmi/transport/proxy/CGIHandler.java --- a/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java Sat Apr 26 07:31:04 2014 -0300 @@ -141,7 +141,7 @@ { try { String command, param; - int delim = QueryString.indexOf("="); + int delim = QueryString.indexOf('='); if (delim == -1) { command = QueryString; param = ""; diff -r e323c74edabd src/share/classes/sun/security/jgss/wrapper/Krb5Util.java --- a/src/share/classes/sun/security/jgss/wrapper/Krb5Util.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/jgss/wrapper/Krb5Util.java Sat Apr 26 07:31:04 2014 -0300 @@ -39,7 +39,7 @@ static String getTGSName(GSSNameElement name) throws GSSException { String krbPrinc = name.getKrbName(); - int atIndex = krbPrinc.indexOf("@"); + int atIndex = krbPrinc.indexOf('@'); String realm = krbPrinc.substring(atIndex + 1); StringBuffer buf = new StringBuffer("krbtgt/"); buf.append(realm).append('@').append(realm); diff -r e323c74edabd src/share/classes/sun/security/provider/PolicyFile.java --- a/src/share/classes/sun/security/provider/PolicyFile.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/provider/PolicyFile.java Sat Apr 26 07:31:04 2014 -0300 @@ -1856,7 +1856,7 @@ int colonIndex; String prefix = value; String suffix; - if ((colonIndex = value.indexOf(":")) != -1) { + if ((colonIndex = value.indexOf(':')) != -1) { prefix = value.substring(0, colonIndex); } diff -r e323c74edabd src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java --- a/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java Sat Apr 26 07:31:04 2014 -0300 @@ -338,7 +338,7 @@ } String sigType; if (keyType.contains("_")) { - int k = keyType.indexOf("_"); + int k = keyType.indexOf('_'); sigType = keyType.substring(k + 1); keyType = keyType.substring(0, k); } else { diff -r e323c74edabd src/share/classes/sun/security/ssl/X509KeyManagerImpl.java --- a/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java Sat Apr 26 07:31:04 2014 -0300 @@ -302,7 +302,7 @@ final String sigKeyAlgorithm; KeyType(String algorithm) { - int k = algorithm.indexOf("_"); + int k = algorithm.indexOf('_'); if (k == -1) { keyAlgorithm = algorithm; sigKeyAlgorithm = null; diff -r e323c74edabd src/share/classes/sun/security/util/HostnameChecker.java --- a/src/share/classes/sun/security/util/HostnameChecker.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/util/HostnameChecker.java Sat Apr 26 07:31:04 2014 -0300 @@ -300,8 +300,8 @@ template = template.toLowerCase(Locale.ENGLISH); // Retreive leftmost component - int templateIdx = template.indexOf("."); - int nameIdx = name.indexOf("."); + int templateIdx = template.indexOf('.'); + int nameIdx = name.indexOf('.'); if (templateIdx == -1) templateIdx = template.length(); @@ -326,7 +326,7 @@ */ private static boolean matchWildCards(String name, String template) { - int wildcardIdx = template.indexOf("*"); + int wildcardIdx = template.indexOf('*'); if (wildcardIdx == -1) return name.equals(template); @@ -349,7 +349,7 @@ // update the match scope name = name.substring(beforeStartIdx + beforeWildcard.length()); - wildcardIdx = afterWildcard.indexOf("*"); + wildcardIdx = afterWildcard.indexOf('*'); } return name.endsWith(afterWildcard); } diff -r e323c74edabd src/share/classes/sun/security/util/SignatureFileVerifier.java --- a/src/share/classes/sun/security/util/SignatureFileVerifier.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/util/SignatureFileVerifier.java Sat Apr 26 07:31:04 2014 -0300 @@ -98,7 +98,7 @@ } finally { Providers.stopJarVerification(obj); } - this.name = name.substring(0, name.lastIndexOf(".")) + this.name = name.substring(0, name.lastIndexOf('.')) .toUpperCase(Locale.ENGLISH); this.md = md; this.signerCache = signerCache; diff -r e323c74edabd src/share/classes/sun/security/x509/CRLExtensions.java --- a/src/share/classes/sun/security/x509/CRLExtensions.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/x509/CRLExtensions.java Sat Apr 26 07:31:04 2014 -0300 @@ -185,7 +185,7 @@ String name; String id = attr.getPrefix(); if (id.equalsIgnoreCase(X509CertImpl.NAME)) { // fully qualified - int index = alias.lastIndexOf("."); + int index = alias.lastIndexOf('.'); name = alias.substring(index + 1); } else name = alias; diff -r e323c74edabd src/share/classes/sun/tools/jconsole/ConnectDialog.java --- a/src/share/classes/sun/tools/jconsole/ConnectDialog.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/ConnectDialog.java Sat Apr 26 07:31:04 2014 -0300 @@ -325,7 +325,7 @@ } else { String host = remoteTF.getText().trim(); String port = "0"; - int index = host.lastIndexOf(":"); + int index = host.lastIndexOf(':'); if (index >= 0) { port = host.substring(index + 1); host = host.substring(0, index); diff -r e323c74edabd src/share/classes/sun/tools/jconsole/inspector/Utils.java --- a/src/share/classes/sun/tools/jconsole/inspector/Utils.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/inspector/Utils.java Sat Apr 26 07:31:04 2014 -0300 @@ -210,7 +210,7 @@ public static String getArrayClassName(String name) { String className = null; if (name.startsWith("[")) { - int index = name.lastIndexOf("["); + int index = name.lastIndexOf('['); className = name.substring(index, name.length()); if (className.startsWith("[L")) { className = className.substring(2, className.length() - 1); @@ -241,7 +241,7 @@ if (className == null) { return name; } - int index = name.lastIndexOf("["); + int index = name.lastIndexOf('['); StringBuilder brackets = new StringBuilder(className); for (int i = 0; i <= index; i++) { brackets.append("[]"); diff -r e323c74edabd src/share/classes/sun/tools/jconsole/inspector/XOperations.java --- a/src/share/classes/sun/tools/jconsole/inspector/XOperations.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/inspector/XOperations.java Sat Apr 26 07:31:04 2014 -0300 @@ -112,7 +112,7 @@ if (methodLabel.getText().length() > 20) { methodLabel.setText(methodLabel.getText(). substring(methodLabel.getText(). - lastIndexOf(".") + 1, + lastIndexOf('.') + 1, methodLabel.getText().length())); } diff -r e323c74edabd src/share/classes/sun/tools/jconsole/inspector/XTree.java --- a/src/share/classes/sun/tools/jconsole/inspector/XTree.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/inspector/XTree.java Sat Apr 26 07:31:04 2014 -0300 @@ -475,7 +475,7 @@ private static Map<String, String> extractKeyValuePairs( String props, ObjectName mbean) { Map<String, String> map = new LinkedHashMap<String, String>(); - int eq = props.indexOf("="); + int eq = props.indexOf('='); while (eq != -1) { String key = props.substring(0, eq); String value = mbean.getKeyProperty(key); @@ -484,7 +484,7 @@ if (props.startsWith(",")) { props = props.substring(1); } - eq = props.indexOf("="); + eq = props.indexOf('='); } return map; } @@ -821,7 +821,7 @@ } private void buildKeyValue() { - int index = tokenValue.indexOf("="); + int index = tokenValue.indexOf('='); if (index < 0) { key = tokenValue; value = tokenValue; -- Atenciosamente. Otávio Gonçalves de Santana blog: http://otaviosantana.blogspot.com.br/ twitter: http://twitter.com/otaviojava site: http://www.otaviojava.com.br (11) 98255-3513
Hi Otávio, while I personally like using chars instead of Strings where applicable, I would assume these constant replacements are all cases where the JIT will be quick to inline and eliminate the overhead. So the benefit, if any, would be in interpreted code. Testing these assumptions with a simple but representative JMH[1] microbenchmark[2]: Benchmark Mode Samples Mean Mean error Units o.s.MyBenchmark.indexOfChar thrpt 20 32290.764 359.347 ops/ms o.s.MyBenchmark.indexOfString thrpt 20 32353.865 398.929 ops/ms o.s.MyBenchmark.lastIndexOfChar thrpt 20 32444.428 462.630 ops/ms o.s.MyBenchmark.lastIndexOfString thrpt 20 32001.738 388.791 ops/ms So no real difference, as suspected. Running with -Xint: Benchmark Mode Samples Mean Mean error Units o.s.MyBenchmark.indexOfChar thrpt 20 3170.130 108.933 ops/ms o.s.MyBenchmark.indexOfString thrpt 20 3119.518 44.703 ops/ms o.s.MyBenchmark.lastIndexOfChar thrpt 20 3281.374 25.589 ops/ms o.s.MyBenchmark.lastIndexOfString thrpt 20 3154.710 45.224 ops/ms Not much - if anything - here either. I think more evidence that this would have some actual benefit is warranted. /Claes [1] http://openjdk.java.net/projects/code-tools/jmh/ [2] package org.sample; import org.openjdk.jmh.annotations.*; import java.util.Random; @State(Scope.Thread) public class MyBenchmark { /* * Generate a lot of randomly generated strings of various sizes */ static int NUM = 100000; static int MAX_SIZE = 1000; static String[] STRINGS = new String[NUM]; static { Random r = new Random(); for (int i = 0; i < NUM; i++) { StringBuilder sb = new StringBuilder(r.nextInt(MAX_SIZE) + 1); for (int j = 0; j < sb.capacity(); j++) { sb.append((char)(r.nextInt(70) + '0')); } STRINGS[i] = sb.toString(); } } private int i = 0; @GenerateMicroBenchmark public int indexOfString() { if (i >= NUM) { i = 0; } return STRINGS[i++].indexOf("6"); } @GenerateMicroBenchmark public int lastIndexOfString() { if (i >= NUM) { i = 0; } return STRINGS[i++].indexOf("6"); } @GenerateMicroBenchmark public int indexOfChar() { if (i >= NUM) { i = 0; } return STRINGS[i++].indexOf('6'); } @GenerateMicroBenchmark public int lastIndexOfChar() { if (i >= NUM) { i = 0; } return STRINGS[i++].indexOf('6'); } } On 2014-04-26 12:56, Otávio Gonçalves de Santana wrote:
When a String has length just one, could be replaced by equivalent character literals, gaining some performance enhancement.
I found 107 changes.
diff -r e323c74edabd src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java --- a/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java Sat Apr 26 07:31:04 2014 -0300 @@ -547,7 +547,7 @@ i = strLowerCase.indexOf("<stringvalue>", i); if (i > 0) { i += "<stringvalue>".length(); - int i2 = str.indexOf("<", i); + int i2 = str.indexOf('<', i); return str.substring(i, i2); } } diff -r e323c74edabd src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java --- a/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java Sat Apr 26 07:31:04 2014 -0300 @@ -512,7 +512,7 @@ } static String qualifiedStringValue(String s1, String s234) { // Qualification by dot must decompose uniquely. Second string might already be qualified. - assert(s1.indexOf(".") < 0); + assert(s1.indexOf('.') < 0); return s1+"."+s234; }
diff -r e323c74edabd src/share/classes/com/sun/jndi/cosnaming/CorbanameUrl.java --- a/src/share/classes/com/sun/jndi/cosnaming/CorbanameUrl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/jndi/cosnaming/CorbanameUrl.java Sat Apr 26 07:31:04 2014 -0300 @@ -102,7 +102,7 @@ } location = url.substring(addrStart, addrEnd);
- int keyStart = location.indexOf("/"); + int keyStart = location.indexOf('/'); if (keyStart >= 0) { // Has key string if (keyStart == (location.length() -1)) { diff -r e323c74edabd src/share/classes/com/sun/jndi/rmi/registry/RegistryContext.java --- a/src/share/classes/com/sun/jndi/rmi/registry/RegistryContext.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/jndi/rmi/registry/RegistryContext.java Sat Apr 26 07:31:04 2014 -0300 @@ -336,7 +336,7 @@ String url = "rmi://";
// Enclose IPv6 literal address in '[' and ']' - url = (host.indexOf(":") > -1) ? url + "[" + host + "]" : + url = (host.indexOf(':') > -1) ? url + "[" + host + "]" : url + host; if (port > 0) { url += ":" + Integer.toString(port); diff -r e323c74edabd src/share/classes/com/sun/jndi/toolkit/url/GenericURLContext.java --- a/src/share/classes/com/sun/jndi/toolkit/url/GenericURLContext.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/jndi/toolkit/url/GenericURLContext.java Sat Apr 26 07:31:04 2014 -0300 @@ -149,7 +149,7 @@ * foo:rest/of/name foo: */ protected String getURLPrefix(String url) throws NamingException { - int start = url.indexOf(":"); + int start = url.indexOf(':');
if (start < 0) { throw new OperationNotSupportedException("Invalid URL: " + url); @@ -160,7 +160,7 @@ start += 2; // skip double slash
// find last slash - int posn = url.indexOf("/", start); + int posn = url.indexOf('/', start); if (posn >= 0) { start = posn; } else { diff -r e323c74edabd src/share/classes/com/sun/rmi/rmid/ExecOptionPermission.java --- a/src/share/classes/com/sun/rmi/rmid/ExecOptionPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rmi/rmid/ExecOptionPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -303,7 +303,7 @@
offset = pname.length() - 1;
- while ((last = pname.lastIndexOf(".", offset)) != -1) { + while ((last = pname.lastIndexOf('.', offset)) != -1) {
pname = pname.substring(0, last+1) + "*"; x = permissions.get(pname); @@ -318,7 +318,7 @@ pname = p.getName(); offset = pname.length() - 1;
- while ((last = pname.lastIndexOf("=", offset)) != -1) { + while ((last = pname.lastIndexOf('=', offset)) != -1) {
pname = pname.substring(0, last+1) + "*"; x = permissions.get(pname); diff -r e323c74edabd src/share/classes/com/sun/rowset/CachedRowSetImpl.java --- a/src/share/classes/com/sun/rowset/CachedRowSetImpl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rowset/CachedRowSetImpl.java Sat Apr 26 07:31:04 2014 -0300 @@ -6831,7 +6831,7 @@ // table name else isolate table name.
indexFrom = command.toLowerCase().indexOf("from"); - indexComma = command.indexOf(",", indexFrom); + indexComma = command.indexOf(',', indexFrom);
if(indexComma == -1) { // implies only one table diff -r e323c74edabd src/share/classes/com/sun/rowset/JoinRowSetImpl.java --- a/src/share/classes/com/sun/rowset/JoinRowSetImpl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rowset/JoinRowSetImpl.java Sat Apr 26 07:31:04 2014 -0300 @@ -910,7 +910,7 @@
// now remove the last "," strWhereClause = strWhereClause.substring - (0, strWhereClause.lastIndexOf(",")); + (0, strWhereClause.lastIndexOf(','));
// Add from clause strWhereClause = strWhereClause.concat(" from "); @@ -920,7 +920,7 @@
//Remove the last "," strWhereClause = strWhereClause.substring - (0, strWhereClause.lastIndexOf(",")); + (0, strWhereClause.lastIndexOf(','));
// Add the where clause strWhereClause = strWhereClause.concat(" where "); diff -r e323c74edabd src/share/classes/com/sun/rowset/internal/WebRowSetXmlWriter.java --- a/src/share/classes/com/sun/rowset/internal/WebRowSetXmlWriter.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rowset/internal/WebRowSetXmlWriter.java Sat Apr 26 07:31:04 2014 -0300 @@ -240,7 +240,7 @@ // Remove the string after "@xxxx" // before writing it to the xml file. String strProviderInstance = (caller.getSyncProvider()).toString(); - String strProvider = strProviderInstance.substring(0, (caller.getSyncProvider()).toString().indexOf("@")); + String strProvider = strProviderInstance.substring(0, (caller.getSyncProvider()).toString().indexOf('@'));
propString("sync-provider-name", strProvider); propString("sync-provider-vendor", "Oracle Corporation"); diff -r e323c74edabd src/share/classes/com/sun/rowset/internal/XmlReaderContentHandler.java --- a/src/share/classes/com/sun/rowset/internal/XmlReaderContentHandler.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rowset/internal/XmlReaderContentHandler.java Sat Apr 26 07:31:04 2014 -0300 @@ -1147,7 +1147,7 @@ if (nullValue) { rs.setSyncProvider(null); } else { - String str = s.substring(0,s.indexOf("@")+1); + String str = s.substring(0,s.indexOf('@')+1); rs.setSyncProvider(str); } break; diff -r e323c74edabd src/share/classes/com/sun/rowset/internal/XmlResolver.java --- a/src/share/classes/com/sun/rowset/internal/XmlResolver.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rowset/internal/XmlResolver.java Sat Apr 26 07:31:04 2014 -0300 @@ -39,7 +39,7 @@ public class XmlResolver implements EntityResolver {
public InputSource resolveEntity(String publicId, String systemId) { - String schemaName = systemId.substring(systemId.lastIndexOf("/")); + String schemaName = systemId.substring(systemId.lastIndexOf('/'));
if(systemId.startsWith("http://java.sun.com/xml/ns/jdbc")) { return new InputSource(this.getClass().getResourceAsStream(schemaName)); diff -r e323c74edabd src/share/classes/com/sun/security/auth/module/JndiLoginModule.java --- a/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java Sat Apr 26 07:31:04 2014 -0300 @@ -694,7 +694,7 @@ throw new LoginException("Error: no CallbackHandler available " + "to garner authentication information from the user");
- String protocol = userProvider.substring(0, userProvider.indexOf(":")); + String protocol = userProvider.substring(0, userProvider.indexOf(':'));
Callback[] callbacks = new Callback[2]; callbacks[0] = new NameCallback(protocol + " " diff -r e323c74edabd src/share/classes/com/sun/security/auth/module/LdapLoginModule.java --- a/src/share/classes/com/sun/security/auth/module/LdapLoginModule.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/security/auth/module/LdapLoginModule.java Sat Apr 26 07:31:04 2014 -0300 @@ -400,7 +400,7 @@
// Add any JNDI properties to the environment for (String key : options.keySet()) { - if (key.indexOf(".") > -1) { + if (key.indexOf('.') > -1) { ldapEnvironment.put(key, options.get(key)); } } diff -r e323c74edabd src/share/classes/com/sun/tools/example/debug/gui/CommandInterpreter.java --- a/src/share/classes/com/sun/tools/example/debug/gui/CommandInterpreter.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/tools/example/debug/gui/CommandInterpreter.java Sat Apr 26 07:31:04 2014 -0300 @@ -857,7 +857,7 @@ bpSpec = runtime.createClassLineBreakpoint(classId, lineNumber); } else { // Try stripping method from class.method token. - int idot = token.lastIndexOf("."); + int idot = token.lastIndexOf('.'); if ( (idot <= 0) || /* No dot or dot in first char */ (idot >= token.length() - 1) ) { /* dot in last char */ return null; diff -r e323c74edabd src/share/classes/com/sun/tools/example/debug/tty/Commands.java --- a/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Sat Apr 26 07:31:04 2014 -0300 @@ -1079,7 +1079,7 @@ } } else { // Try stripping method from class.method token. - int idot = token.lastIndexOf("."); + int idot = token.lastIndexOf('.'); if ( (idot <= 0) || /* No dot or dot in first char */ (idot >= token.length() - 1) ) { /* dot in last char */ printBreakpointCommandUsage(atForm, inForm); diff -r e323c74edabd src/share/classes/com/sun/tools/hat/internal/server/AllClassesQuery.java --- a/src/share/classes/com/sun/tools/hat/internal/server/AllClassesQuery.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/tools/hat/internal/server/AllClassesQuery.java Sat Apr 26 07:31:04 2014 -0300 @@ -67,7 +67,7 @@ continue; } String name = clazz.getName(); - int pos = name.lastIndexOf("."); + int pos = name.lastIndexOf('.'); String pkg; if (name.startsWith("[")) { // Only in ancient heap dumps pkg = "<Arrays>"; diff -r e323c74edabd src/share/classes/java/lang/Class.java --- a/src/share/classes/java/lang/Class.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/Class.java Sat Apr 26 07:31:04 2014 -0300 @@ -1296,7 +1296,7 @@ String simpleName = getSimpleBinaryName(); if (simpleName == null) { // top level class simpleName = getName(); - return simpleName.substring(simpleName.lastIndexOf(".")+1); // strip the package name + return simpleName.substring(simpleName.lastIndexOf('.')+1); // strip the package name } // According to JLS3 "Binary Compatibility" (13.1) the binary // name of non-package classes (not top level) is the binary diff -r e323c74edabd src/share/classes/java/lang/ClassLoader.java --- a/src/share/classes/java/lang/ClassLoader.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/ClassLoader.java Sat Apr 26 07:31:04 2014 -0300 @@ -2136,7 +2136,7 @@ return result.booleanValue();
// Check for most specific package entry - int dotIndex = className.lastIndexOf("."); + int dotIndex = className.lastIndexOf('.'); if (dotIndex < 0) { // default package result = packageAssertionStatus.get(null); if (result != null) @@ -2147,7 +2147,7 @@ result = packageAssertionStatus.get(className); if (result != null) return result.booleanValue(); - dotIndex = className.lastIndexOf(".", dotIndex-1); + dotIndex = className.lastIndexOf('.', dotIndex-1); }
// Return the classloader default diff -r e323c74edabd src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java --- a/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Sat Apr 26 07:31:04 2014 -0300 @@ -84,7 +84,7 @@ private InvokerBytecodeGenerator(LambdaForm lambdaForm, int localsMapSize, String className, String invokerName, MethodType invokerType) { if (invokerName.contains(".")) { - int p = invokerName.indexOf("."); + int p = invokerName.indexOf('.'); className = invokerName.substring(0, p); invokerName = invokerName.substring(p+1); } diff -r e323c74edabd src/share/classes/java/net/CookieManager.java --- a/src/share/classes/java/net/CookieManager.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/net/CookieManager.java Sat Apr 26 07:31:04 2014 -0300 @@ -294,7 +294,7 @@ // the path is the directory of the page/doc String path = uri.getPath(); if (!path.endsWith("/")) { - int i = path.lastIndexOf("/"); + int i = path.lastIndexOf('/'); if (i > 0) { path = path.substring(0, i + 1); } else { @@ -364,7 +364,7 @@
static private boolean isInPortList(String lst, int port) { - int i = lst.indexOf(","); + int i = lst.indexOf(','); int val = -1; while (i > 0) { try { @@ -375,7 +375,7 @@ } catch (NumberFormatException numberFormatException) { } lst = lst.substring(i+1); - i = lst.indexOf(","); + i = lst.indexOf(','); } if (!lst.isEmpty()) { try { diff -r e323c74edabd src/share/classes/java/net/InetAddress.java --- a/src/share/classes/java/net/InetAddress.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/net/InetAddress.java Sat Apr 26 07:31:04 2014 -0300 @@ -1138,7 +1138,7 @@ // This is supposed to be an IPv6 literal // Check if a numeric or string zone id is present int pos; - if ((pos=host.indexOf ("%")) != -1) { + if ((pos=host.indexOf ('%')) != -1) { numericZone = checkNumericZone (host); if (numericZone == -1) { /* remainder of string must be an ifname */ ifname = host.substring (pos+1); diff -r e323c74edabd src/share/classes/java/net/SocketPermission.java --- a/src/share/classes/java/net/SocketPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/net/SocketPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -777,7 +777,7 @@ // Literal IPv6 address host = getName().substring(1, getName().indexOf(']')); } else { - int i = getName().indexOf(":"); + int i = getName().indexOf(':'); if (i == -1) host = getName(); else { diff -r e323c74edabd src/share/classes/java/net/SocksSocketImpl.java --- a/src/share/classes/java/net/SocksSocketImpl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/net/SocksSocketImpl.java Sat Apr 26 07:31:04 2014 -0300 @@ -368,7 +368,7 @@ String host = epoint.getHostString(); // IPv6 litteral? if (epoint.getAddress() instanceof Inet6Address && - (!host.startsWith("[")) && (host.indexOf(":") >= 0)) { + (!host.startsWith("[")) && (host.indexOf(':') >= 0)) { host = "[" + host + "]"; } try { @@ -684,7 +684,7 @@ String host = saddr.getHostString(); // IPv6 litteral? if (saddr.getAddress() instanceof Inet6Address && - (!host.startsWith("[")) && (host.indexOf(":") >= 0)) { + (!host.startsWith("[")) && (host.indexOf(':') >= 0)) { host = "[" + host + "]"; } try { diff -r e323c74edabd src/share/classes/java/net/URI.java --- a/src/share/classes/java/net/URI.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/net/URI.java Sat Apr 26 07:31:04 2014 -0300 @@ -1851,9 +1851,9 @@ sb.append("//"); if (authority.startsWith("[")) { // authority should (but may not) contain an embedded IPv6 address - int end = authority.indexOf("]"); + int end = authority.indexOf(']'); String doquote = authority, dontquote = ""; - if (end != -1 && authority.indexOf(":") != -1) { + if (end != -1 && authority.indexOf(':') != -1) { // the authority contains an IPv6 address if (end == authority.length()) { dontquote = authority; @@ -1889,8 +1889,8 @@ * because we must not quote a literal IPv6 address */ if (opaquePart.startsWith("//[")) { - int end = opaquePart.indexOf("]"); - if (end != -1 && opaquePart.indexOf(":")!=-1) { + int end = opaquePart.indexOf(']'); + if (end != -1 && opaquePart.indexOf(':')!=-1) { String doquote, dontquote; if (end == opaquePart.length()) { dontquote = opaquePart; diff -r e323c74edabd src/share/classes/java/security/BasicPermission.java --- a/src/share/classes/java/security/BasicPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/security/BasicPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -430,7 +430,7 @@
offset = path.length()-1;
- while ((last = path.lastIndexOf(".", offset)) != -1) { + while ((last = path.lastIndexOf('.', offset)) != -1) {
path = path.substring(0, last+1) + "*"; //System.out.println("check "+path); diff -r e323c74edabd src/share/classes/java/security/Provider.java --- a/src/share/classes/java/security/Provider.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/security/Provider.java Sat Apr 26 07:31:04 2014 -0300 @@ -927,7 +927,7 @@ }
private String[] getTypeAndAlgorithm(String key) { - int i = key.indexOf("."); + int i = key.indexOf('.'); if (i < 1) { if (debug != null) { debug.println("Ignoring invalid entry in provider " diff -r e323c74edabd src/share/classes/java/security/Security.java --- a/src/share/classes/java/security/Security.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/security/Security.java Sat Apr 26 07:31:04 2014 -0300 @@ -1114,7 +1114,7 @@ // implementation of an algorithm. We are only interested // in entries which lead to the implementation // classes. - if (currentKey.indexOf(" ") < 0) { + if (currentKey.indexOf(' ') < 0) { result.add(currentKey.substring( serviceName.length() + 1)); } diff -r e323c74edabd src/share/classes/java/util/PropertyPermission.java --- a/src/share/classes/java/util/PropertyPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/util/PropertyPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -547,7 +547,7 @@
offset = name.length()-1;
- while ((last = name.lastIndexOf(".", offset)) != -1) { + while ((last = name.lastIndexOf('.', offset)) != -1) {
name = name.substring(0, last+1) + "*"; //System.out.println("check "+name); diff -r e323c74edabd src/share/classes/java/util/jar/JarVerifier.java --- a/src/share/classes/java/util/jar/JarVerifier.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/util/jar/JarVerifier.java Sat Apr 26 07:31:04 2014 -0300 @@ -278,7 +278,7 @@
// now we are parsing a signature block file
- String key = uname.substring(0, uname.lastIndexOf(".")); + String key = uname.substring(0, uname.lastIndexOf('.'));
if (signerCache == null) signerCache = new ArrayList<>(); diff -r e323c74edabd src/share/classes/java/util/logging/LogManager.java --- a/src/share/classes/java/util/logging/LogManager.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/util/logging/LogManager.java Sat Apr 26 07:31:04 2014 -0300 @@ -866,7 +866,7 @@
int ix = 1; for (;;) { - int ix2 = name.indexOf(".", ix); + int ix2 = name.indexOf('.', ix); if (ix2 < 0) { break; } @@ -889,7 +889,7 @@ } LogNode node = root; while (name.length() > 0) { - int ix = name.indexOf("."); + int ix = name.indexOf('.'); String head; if (ix > 0) { head = name.substring(0, ix); diff -r e323c74edabd src/share/classes/java/util/logging/XMLFormatter.java --- a/src/share/classes/java/util/logging/XMLFormatter.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/util/logging/XMLFormatter.java Sat Apr 26 07:31:04 2014 -0300 @@ -174,7 +174,7 @@ // Check to see if the parameter was not a messagetext format // or was not null or empty if ( parameters != null && parameters.length != 0 - && record.getMessage().indexOf("{") == -1 ) { + && record.getMessage().indexOf('{') == -1 ) { for (int i = 0; i < parameters.length; i++) { sb.append(" <param>"); try { diff -r e323c74edabd src/share/classes/javax/management/MBeanPermission.java --- a/src/share/classes/javax/management/MBeanPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/management/MBeanPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -290,7 +290,7 @@
// Parse ObjectName
- int openingBracket = name.indexOf("["); + int openingBracket = name.indexOf('['); if (openingBracket == -1) { // If "[on]" missing then ObjectName("*:*") // @@ -329,7 +329,7 @@
// Parse member
- int poundSign = name.indexOf("#"); + int poundSign = name.indexOf('#');
if (poundSign == -1) setMember("*"); diff -r e323c74edabd src/share/classes/javax/management/modelmbean/DescriptorSupport.java --- a/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Sat Apr 26 07:31:04 2014 -0300 @@ -329,7 +329,7 @@ inFld = false; } else if (inFld && inDesc) { // want kw=value, eg, name="myname" value="myvalue" - int eq_separator = tok.indexOf("="); + int eq_separator = tok.indexOf('='); if (eq_separator > 0) { String kwPart = tok.substring(0,eq_separator); String valPart = tok.substring(eq_separator+1); @@ -458,7 +458,7 @@ if ((fields[i] == null) || (fields[i].equals(""))) { continue; } - int eq_separator = fields[i].indexOf("="); + int eq_separator = fields[i].indexOf('='); if (eq_separator < 0) { // illegal if no = or is first character if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) { diff -r e323c74edabd src/share/classes/javax/management/modelmbean/RequiredModelMBean.java --- a/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java Sat Apr 26 07:31:04 2014 -0300 @@ -934,7 +934,7 @@ String opMethodName;
// Parse for class name and method - int opSplitter = opName.lastIndexOf("."); + int opSplitter = opName.lastIndexOf('.'); if (opSplitter > 0) { opClassName = opName.substring(0,opSplitter); opMethodName = opName.substring(opSplitter+1); @@ -943,7 +943,7 @@
/* Ignore anything after a left paren. We keep this for compatibility but it isn't specified. */ - opSplitter = opMethodName.indexOf("("); + opSplitter = opMethodName.indexOf('('); if (opSplitter > 0) opMethodName = opMethodName.substring(0,opSplitter);
diff -r e323c74edabd src/share/classes/javax/security/auth/PrivateCredentialPermission.java --- a/src/share/classes/javax/security/auth/PrivateCredentialPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/security/auth/PrivateCredentialPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -495,7 +495,7 @@
// perform new initialization from the permission name
- if (getName().indexOf(" ") == -1 && getName().indexOf("\"") == -1) { + if (getName().indexOf(' ') == -1 && getName().indexOf('\"') == -1) {
// name only has a credential class specified credentialClass = getName(); diff -r e323c74edabd src/share/classes/javax/security/sasl/Sasl.java --- a/src/share/classes/javax/security/sasl/Sasl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/security/sasl/Sasl.java Sat Apr 26 07:31:04 2014 -0300 @@ -600,7 +600,7 @@ // implementation of an algorithm. We are only interested // in entries which lead to the implementation // classes. - if (currentKey.indexOf(" ") < 0) { + if (currentKey.indexOf(' ') < 0) { String className = providers[i].getProperty(currentKey); if (!classes.contains(className)) { classes.add(className); diff -r e323c74edabd src/share/classes/javax/swing/JEditorPane.java --- a/src/share/classes/javax/swing/JEditorPane.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/swing/JEditorPane.java Sat Apr 26 07:31:04 2014 -0300 @@ -964,7 +964,7 @@ // The type could have optional info is part of it, // for example some charset info. We need to strip that // of and save it. - int parm = type.indexOf(";"); + int parm = type.indexOf(';'); if (parm > -1) { // Save the paramList. String paramList = type.substring(parm); diff -r e323c74edabd src/share/classes/javax/swing/plaf/nimbus/NimbusStyle.java --- a/src/share/classes/javax/swing/plaf/nimbus/NimbusStyle.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/swing/plaf/nimbus/NimbusStyle.java Sat Apr 26 07:31:04 2014 -0300 @@ -653,7 +653,7 @@
// strip off the prefix, if there is one. String fullKey = key.toString(); - String partialKey = fullKey.substring(fullKey.indexOf(".") + 1); + String partialKey = fullKey.substring(fullKey.indexOf('.') + 1);
Object obj = null; int xstate = getExtendedState(ctx, v); diff -r e323c74edabd src/share/classes/sun/applet/AppletClassLoader.java --- a/src/share/classes/sun/applet/AppletClassLoader.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/applet/AppletClassLoader.java Sat Apr 26 07:31:04 2014 -0300 @@ -168,7 +168,7 @@ */ protected Class findClass(String name) throws ClassNotFoundException {
- int index = name.indexOf(";"); + int index = name.indexOf(';'); String cookie = ""; if(index != -1) { cookie = name.substring(index, name.length()); @@ -608,7 +608,7 @@
// deal with URL rewriting String cookie = null; - int index = name.indexOf(";"); + int index = name.indexOf(';'); if(index != -1) { cookie = name.substring(index, name.length()); name = name.substring(0, index); diff -r e323c74edabd src/share/classes/sun/awt/FontConfiguration.java --- a/src/share/classes/sun/awt/FontConfiguration.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/awt/FontConfiguration.java Sat Apr 26 07:31:04 2014 -0300 @@ -272,9 +272,9 @@ if (configFile != null) { return configFile; } - int decimalPointIndex = osVersion.indexOf("."); + int decimalPointIndex = osVersion.indexOf('.'); if (decimalPointIndex != -1) { - osMajorVersion = osVersion.substring(0, osVersion.indexOf(".")); + osMajorVersion = osVersion.substring(0, osVersion.indexOf('.')); configFile = findImpl(baseName + "." + osName + "." + osMajorVersion); if (configFile != null) { return configFile; diff -r e323c74edabd src/share/classes/sun/font/Type1Font.java --- a/src/share/classes/sun/font/Type1Font.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/font/Type1Font.java Sat Apr 26 07:31:04 2014 -0300 @@ -492,7 +492,7 @@
//Conversion: Expand abbreviations in style portion (everything after '-'), // replace '-' with space and insert missing spaces - pos = name.indexOf("-"); + pos = name.indexOf('-'); if (pos >= 0) { res = expandName(name.substring(0, pos), false); res += " " + expandName(name.substring(pos+1), true); @@ -513,8 +513,8 @@ //Conversion: Truncate style portion (everything after '-') // and insert missing spaces
- if (tmp.indexOf("-") > 0) { - tmp = tmp.substring(0, tmp.indexOf("-")); + if (tmp.indexOf('-') > 0) { + tmp = tmp.substring(0, tmp.indexOf('-')); }
return expandName(tmp, false); diff -r e323c74edabd src/share/classes/sun/jvmstat/monitor/AbstractMonitor.java --- a/src/share/classes/sun/jvmstat/monitor/AbstractMonitor.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/jvmstat/monitor/AbstractMonitor.java Sat Apr 26 07:31:04 2014 -0300 @@ -84,7 +84,7 @@ * {@inheritDoc} */ public String getBaseName() { - int baseIndex = name.lastIndexOf(".")+1; + int baseIndex = name.lastIndexOf('.') + 1; return name.substring(baseIndex); }
diff -r e323c74edabd src/share/classes/sun/jvmstat/monitor/HostIdentifier.java --- a/src/share/classes/sun/jvmstat/monitor/HostIdentifier.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/jvmstat/monitor/HostIdentifier.java Sat Apr 26 07:31:04 2014 -0300 @@ -138,8 +138,8 @@ String frag = u.getFragment(); URI u2 = null;
- int c1index = uriString.indexOf(":"); - int c2index = uriString.lastIndexOf(":"); + int c1index = uriString.indexOf(':'); + int c2index = uriString.lastIndexOf(':'); if (c2index != c1index) { /* * this is the scheme:hostname:port case. Attempt to diff -r e323c74edabd src/share/classes/sun/management/snmp/jvminstr/NotificationTargetImpl.java --- a/src/share/classes/sun/management/snmp/jvminstr/NotificationTargetImpl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/management/snmp/jvminstr/NotificationTargetImpl.java Sat Apr 26 07:31:04 2014 -0300 @@ -70,8 +70,8 @@
String addrStr; if (target.startsWith("[")) { - final int index = target.indexOf("]"); - final int index2 = target.lastIndexOf(":"); + final int index = target.indexOf(']'); + final int index2 = target.lastIndexOf(':'); if(index == -1) throw new IllegalArgumentException("Host starts with [ but " + "does not end with ]"); @@ -85,8 +85,8 @@ if (addrStr.startsWith("[")) throw new IllegalArgumentException("More than one [[...]]"); } else { - final int index = target.indexOf(":"); - final int index2 = target.lastIndexOf(":"); + final int index = target.indexOf(':'); + final int index2 = target.lastIndexOf(':'); if(index == -1) throw new IllegalArgumentException("Missing port separator \":\""); addrStr = target.substring(0, index); @@ -98,7 +98,7 @@ address = InetAddress.getByName(addrStr);
//THE CHECK SHOULD BE STRONGER!!! - final int index = target.lastIndexOf(":"); + final int index = target.lastIndexOf(':');
community = target.substring(index + 1, target.length());
diff -r e323c74edabd src/share/classes/sun/misc/ExtensionInfo.java --- a/src/share/classes/sun/misc/ExtensionInfo.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/ExtensionInfo.java Sat Apr 26 07:31:04 2014 -0300 @@ -273,8 +273,8 @@ else { // Look for index of "." in the string - int sIdx = source.indexOf("."); - int tIdx = target.indexOf("."); + int sIdx = source.indexOf('.'); + int tIdx = target.indexOf('.');
if (sIdx == -1) sIdx = source.length() - 1; @@ -304,10 +304,10 @@ String versionError = mf.format(args);
// Look for "-" for pre-release - int prIndex = token.indexOf("-"); + int prIndex = token.indexOf('-');
// Look for "_" for patch release - int patchIndex = token.indexOf("_"); + int patchIndex = token.indexOf('_');
if (prIndex == -1 && patchIndex == -1) { diff -r e323c74edabd src/share/classes/sun/misc/JarIndex.java --- a/src/share/classes/sun/misc/JarIndex.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/JarIndex.java Sat Apr 26 07:31:04 2014 -0300 @@ -172,7 +172,7 @@ if ((jarFiles = indexMap.get(fileName)) == null) { /* try the package name again */ int pos; - if((pos = fileName.lastIndexOf("/")) != -1) { + if((pos = fileName.lastIndexOf('/')) != -1) { jarFiles = indexMap.get(fileName.substring(0, pos)); } } @@ -195,7 +195,7 @@ public void add(String fileName, String jarName) { String packageName; int pos; - if((pos = fileName.lastIndexOf("/")) != -1) { + if((pos = fileName.lastIndexOf('/')) != -1) { packageName = fileName.substring(0, pos); } else { packageName = fileName; diff -r e323c74edabd src/share/classes/sun/misc/URLClassPath.java --- a/src/share/classes/sun/misc/URLClassPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/URLClassPath.java Sat Apr 26 07:31:04 2014 -0300 @@ -793,7 +793,7 @@ boolean validIndex(final String name) { String packageName = name; int pos; - if((pos = name.lastIndexOf("/")) != -1) { + if((pos = name.lastIndexOf('/')) != -1) { packageName = name.substring(0, pos); }
@@ -803,7 +803,7 @@ while (enum_.hasMoreElements()) { entry = enum_.nextElement(); entryName = entry.getName(); - if((pos = entryName.lastIndexOf("/")) != -1) + if((pos = entryName.lastIndexOf('/')) != -1) entryName = entryName.substring(0, pos); if (entryName.equals(packageName)) { return true; @@ -900,7 +900,7 @@ */ JarIndex newIndex = newLoader.getIndex(); if(newIndex != null) { - int pos = jarName.lastIndexOf("/"); + int pos = jarName.lastIndexOf('/'); newIndex.merge(this.index, (pos == -1 ? null : jarName.substring(0, pos + 1))); } diff -r e323c74edabd src/share/classes/sun/net/ftp/impl/FtpClient.java --- a/src/share/classes/sun/net/ftp/impl/FtpClient.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/net/ftp/impl/FtpClient.java Sat Apr 26 07:31:04 2014 -0300 @@ -259,7 +259,7 @@ d = null; } if (d != null && time != null) { - int c = time.indexOf(":"); + int c = time.indexOf(':'); now.setTime(d); now.set(Calendar.HOUR, Integer.parseInt(time.substring(0, c))); now.set(Calendar.MINUTE, Integer.parseInt(time.substring(c + 1))); @@ -295,7 +295,7 @@
public FtpDirEntry parseLine(String line) { String name = null; - int i = line.lastIndexOf(";"); + int i = line.lastIndexOf(';'); if (i > 0) { name = line.substring(i + 1).trim(); line = line.substring(0, i); @@ -306,7 +306,7 @@ FtpDirEntry file = new FtpDirEntry(name); while (!line.isEmpty()) { String s; - i = line.indexOf(";"); + i = line.indexOf(';'); if (i > 0) { s = line.substring(0, i); line = line.substring(i + 1); @@ -314,7 +314,7 @@ s = line; line = ""; } - i = s.indexOf("="); + i = s.indexOf('='); if (i > 0) { String fact = s.substring(0, i); String value = s.substring(i + 1); diff -r e323c74edabd src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java --- a/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java Sat Apr 26 07:31:04 2014 -0300 @@ -325,7 +325,7 @@ while (i.hasNext()) { String parentDomain = i.next(); int start = 0; - while ((start = parentDomain.indexOf(".")) != -1 + while ((start = parentDomain.indexOf('.')) != -1 && start < parentDomain.length() -1) { try { results = resolve(ctx, host+"."+parentDomain, ids, 0); diff -r e323c74edabd src/share/classes/sun/net/util/IPAddressUtil.java --- a/src/share/classes/sun/net/util/IPAddressUtil.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/net/util/IPAddressUtil.java Sat Apr 26 07:31:04 2014 -0300 @@ -149,7 +149,7 @@ byte[] dst = new byte[INADDR16SZ];
int srcb_length = srcb.length; - int pc = src.indexOf ("%"); + int pc = src.indexOf ('%'); if (pc == srcb_length -1) { return null; } diff -r e323c74edabd src/share/classes/sun/net/www/ParseUtil.java --- a/src/share/classes/sun/net/www/ParseUtil.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/net/www/ParseUtil.java Sat Apr 26 07:31:04 2014 -0300 @@ -356,8 +356,8 @@ * because we must not quote a literal IPv6 address */ if (opaquePart.startsWith("//[")) { - int end = opaquePart.indexOf("]"); - if (end != -1 && opaquePart.indexOf(":")!=-1) { + int end = opaquePart.indexOf(']'); + if (end != -1 && opaquePart.indexOf(':')!=-1) { String doquote, dontquote; if (end == opaquePart.length()) { dontquote = opaquePart; @@ -408,8 +408,8 @@ } else if (authority != null) { sb.append("//"); if (authority.startsWith("[")) { - int end = authority.indexOf("]"); - if (end != -1 && authority.indexOf(":")!=-1) { + int end = authority.indexOf(']'); + if (end != -1 && authority.indexOf(':')!=-1) { String doquote, dontquote; if (end == authority.length()) { dontquote = authority; diff -r e323c74edabd src/share/classes/sun/reflect/misc/ReflectUtil.java --- a/src/share/classes/sun/reflect/misc/ReflectUtil.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/reflect/misc/ReflectUtil.java Sat Apr 26 07:31:04 2014 -0300 @@ -341,6 +341,6 @@ * (not to be confused with a Java Language anonymous inner class). */ public static boolean isVMAnonymousClass(Class<?> cls) { - return cls.getName().indexOf("/") > -1; + return cls.getName().indexOf('/') > -1; } } diff -r e323c74edabd src/share/classes/sun/rmi/runtime/Log.java --- a/src/share/classes/sun/rmi/runtime/Log.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/rmi/runtime/Log.java Sat Apr 26 07:31:04 2014 -0300 @@ -434,7 +434,7 @@ * Mimic old log messages that only contain unqualified names. */ private static String unqualifiedName(String name) { - int lastDot = name.lastIndexOf("."); + int lastDot = name.lastIndexOf('.'); if (lastDot >= 0) { name = name.substring(lastDot + 1); } diff -r e323c74edabd src/share/classes/sun/rmi/transport/proxy/CGIHandler.java --- a/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java Sat Apr 26 07:31:04 2014 -0300 @@ -141,7 +141,7 @@ { try { String command, param; - int delim = QueryString.indexOf("="); + int delim = QueryString.indexOf('='); if (delim == -1) { command = QueryString; param = ""; diff -r e323c74edabd src/share/classes/sun/security/jgss/wrapper/Krb5Util.java --- a/src/share/classes/sun/security/jgss/wrapper/Krb5Util.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/jgss/wrapper/Krb5Util.java Sat Apr 26 07:31:04 2014 -0300 @@ -39,7 +39,7 @@ static String getTGSName(GSSNameElement name) throws GSSException { String krbPrinc = name.getKrbName(); - int atIndex = krbPrinc.indexOf("@"); + int atIndex = krbPrinc.indexOf('@'); String realm = krbPrinc.substring(atIndex + 1); StringBuffer buf = new StringBuffer("krbtgt/"); buf.append(realm).append('@').append(realm); diff -r e323c74edabd src/share/classes/sun/security/provider/PolicyFile.java --- a/src/share/classes/sun/security/provider/PolicyFile.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/provider/PolicyFile.java Sat Apr 26 07:31:04 2014 -0300 @@ -1856,7 +1856,7 @@ int colonIndex; String prefix = value; String suffix; - if ((colonIndex = value.indexOf(":")) != -1) { + if ((colonIndex = value.indexOf(':')) != -1) { prefix = value.substring(0, colonIndex); }
diff -r e323c74edabd src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java --- a/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java Sat Apr 26 07:31:04 2014 -0300 @@ -338,7 +338,7 @@ } String sigType; if (keyType.contains("_")) { - int k = keyType.indexOf("_"); + int k = keyType.indexOf('_'); sigType = keyType.substring(k + 1); keyType = keyType.substring(0, k); } else { diff -r e323c74edabd src/share/classes/sun/security/ssl/X509KeyManagerImpl.java --- a/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java Sat Apr 26 07:31:04 2014 -0300 @@ -302,7 +302,7 @@ final String sigKeyAlgorithm;
KeyType(String algorithm) { - int k = algorithm.indexOf("_"); + int k = algorithm.indexOf('_'); if (k == -1) { keyAlgorithm = algorithm; sigKeyAlgorithm = null; diff -r e323c74edabd src/share/classes/sun/security/util/HostnameChecker.java --- a/src/share/classes/sun/security/util/HostnameChecker.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/util/HostnameChecker.java Sat Apr 26 07:31:04 2014 -0300 @@ -300,8 +300,8 @@ template = template.toLowerCase(Locale.ENGLISH);
// Retreive leftmost component - int templateIdx = template.indexOf("."); - int nameIdx = name.indexOf("."); + int templateIdx = template.indexOf('.'); + int nameIdx = name.indexOf('.');
if (templateIdx == -1) templateIdx = template.length(); @@ -326,7 +326,7 @@ */ private static boolean matchWildCards(String name, String template) {
- int wildcardIdx = template.indexOf("*"); + int wildcardIdx = template.indexOf('*'); if (wildcardIdx == -1) return name.equals(template);
@@ -349,7 +349,7 @@
// update the match scope name = name.substring(beforeStartIdx + beforeWildcard.length()); - wildcardIdx = afterWildcard.indexOf("*"); + wildcardIdx = afterWildcard.indexOf('*'); } return name.endsWith(afterWildcard); } diff -r e323c74edabd src/share/classes/sun/security/util/SignatureFileVerifier.java --- a/src/share/classes/sun/security/util/SignatureFileVerifier.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/util/SignatureFileVerifier.java Sat Apr 26 07:31:04 2014 -0300 @@ -98,7 +98,7 @@ } finally { Providers.stopJarVerification(obj); } - this.name = name.substring(0, name.lastIndexOf(".")) + this.name = name.substring(0, name.lastIndexOf('.'))
.toUpperCase(Locale.ENGLISH); this.md = md; this.signerCache = signerCache; diff -r e323c74edabd src/share/classes/sun/security/x509/CRLExtensions.java --- a/src/share/classes/sun/security/x509/CRLExtensions.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/x509/CRLExtensions.java Sat Apr 26 07:31:04 2014 -0300 @@ -185,7 +185,7 @@ String name; String id = attr.getPrefix(); if (id.equalsIgnoreCase(X509CertImpl.NAME)) { // fully qualified - int index = alias.lastIndexOf("."); + int index = alias.lastIndexOf('.'); name = alias.substring(index + 1); } else name = alias; diff -r e323c74edabd src/share/classes/sun/tools/jconsole/ConnectDialog.java --- a/src/share/classes/sun/tools/jconsole/ConnectDialog.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/ConnectDialog.java Sat Apr 26 07:31:04 2014 -0300 @@ -325,7 +325,7 @@ } else { String host = remoteTF.getText().trim(); String port = "0"; - int index = host.lastIndexOf(":"); + int index = host.lastIndexOf(':'); if (index >= 0) { port = host.substring(index + 1); host = host.substring(0, index); diff -r e323c74edabd src/share/classes/sun/tools/jconsole/inspector/Utils.java --- a/src/share/classes/sun/tools/jconsole/inspector/Utils.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/inspector/Utils.java Sat Apr 26 07:31:04 2014 -0300 @@ -210,7 +210,7 @@ public static String getArrayClassName(String name) { String className = null; if (name.startsWith("[")) { - int index = name.lastIndexOf("["); + int index = name.lastIndexOf('['); className = name.substring(index, name.length()); if (className.startsWith("[L")) { className = className.substring(2, className.length() - 1); @@ -241,7 +241,7 @@ if (className == null) { return name; } - int index = name.lastIndexOf("["); + int index = name.lastIndexOf('['); StringBuilder brackets = new StringBuilder(className); for (int i = 0; i <= index; i++) { brackets.append("[]"); diff -r e323c74edabd src/share/classes/sun/tools/jconsole/inspector/XOperations.java --- a/src/share/classes/sun/tools/jconsole/inspector/XOperations.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/inspector/XOperations.java Sat Apr 26 07:31:04 2014 -0300 @@ -112,7 +112,7 @@ if (methodLabel.getText().length() > 20) { methodLabel.setText(methodLabel.getText(). substring(methodLabel.getText(). - lastIndexOf(".") + 1, + lastIndexOf('.') + 1, methodLabel.getText().length())); }
diff -r e323c74edabd src/share/classes/sun/tools/jconsole/inspector/XTree.java --- a/src/share/classes/sun/tools/jconsole/inspector/XTree.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/inspector/XTree.java Sat Apr 26 07:31:04 2014 -0300 @@ -475,7 +475,7 @@ private static Map<String, String> extractKeyValuePairs( String props, ObjectName mbean) { Map<String, String> map = new LinkedHashMap<String, String>(); - int eq = props.indexOf("="); + int eq = props.indexOf('='); while (eq != -1) { String key = props.substring(0, eq); String value = mbean.getKeyProperty(key); @@ -484,7 +484,7 @@ if (props.startsWith(",")) { props = props.substring(1); } - eq = props.indexOf("="); + eq = props.indexOf('='); } return map; } @@ -821,7 +821,7 @@ }
private void buildKeyValue() { - int index = tokenValue.indexOf("="); + int index = tokenValue.indexOf('='); if (index < 0) { key = tokenValue; value = tokenValue;
There is also a slight reduction in memory pressure due to not creating a bunch of one character string literals. David On 27/04/2014 3:13 AM, Claes Redestad wrote:
Hi Otávio,
while I personally like using chars instead of Strings where applicable, I would assume these constant replacements are all cases where the JIT will be quick to inline and eliminate the overhead. So the benefit, if any, would be in interpreted code. Testing these assumptions with a simple but representative JMH[1] microbenchmark[2]:
Benchmark Mode Samples Mean Mean error Units o.s.MyBenchmark.indexOfChar thrpt 20 32290.764 359.347 ops/ms o.s.MyBenchmark.indexOfString thrpt 20 32353.865 398.929 ops/ms o.s.MyBenchmark.lastIndexOfChar thrpt 20 32444.428 462.630 ops/ms o.s.MyBenchmark.lastIndexOfString thrpt 20 32001.738 388.791 ops/ms
So no real difference, as suspected. Running with -Xint:
Benchmark Mode Samples Mean Mean error Units o.s.MyBenchmark.indexOfChar thrpt 20 3170.130 108.933 ops/ms o.s.MyBenchmark.indexOfString thrpt 20 3119.518 44.703 ops/ms o.s.MyBenchmark.lastIndexOfChar thrpt 20 3281.374 25.589 ops/ms o.s.MyBenchmark.lastIndexOfString thrpt 20 3154.710 45.224 ops/ms
Not much - if anything - here either. I think more evidence that this would have some actual benefit is warranted.
/Claes
[1] http://openjdk.java.net/projects/code-tools/jmh/ [2] package org.sample;
import org.openjdk.jmh.annotations.*;
import java.util.Random;
@State(Scope.Thread) public class MyBenchmark {
/* * Generate a lot of randomly generated strings of various sizes */ static int NUM = 100000; static int MAX_SIZE = 1000; static String[] STRINGS = new String[NUM];
static { Random r = new Random(); for (int i = 0; i < NUM; i++) { StringBuilder sb = new StringBuilder(r.nextInt(MAX_SIZE) + 1); for (int j = 0; j < sb.capacity(); j++) { sb.append((char)(r.nextInt(70) + '0')); } STRINGS[i] = sb.toString(); } }
private int i = 0;
@GenerateMicroBenchmark public int indexOfString() { if (i >= NUM) { i = 0; } return STRINGS[i++].indexOf("6"); }
@GenerateMicroBenchmark public int lastIndexOfString() { if (i >= NUM) { i = 0; } return STRINGS[i++].indexOf("6"); }
@GenerateMicroBenchmark public int indexOfChar() { if (i >= NUM) { i = 0; } return STRINGS[i++].indexOf('6'); }
@GenerateMicroBenchmark public int lastIndexOfChar() { if (i >= NUM) { i = 0; } return STRINGS[i++].indexOf('6'); } }
On 2014-04-26 12:56, Otávio Gonçalves de Santana wrote:
When a String has length just one, could be replaced by equivalent character literals, gaining some performance enhancement.
I found 107 changes.
diff -r e323c74edabd src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java --- a/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java Sat Apr 26 07:31:04 2014 -0300 @@ -547,7 +547,7 @@ i = strLowerCase.indexOf("<stringvalue>", i); if (i > 0) { i += "<stringvalue>".length(); - int i2 = str.indexOf("<", i); + int i2 = str.indexOf('<', i); return str.substring(i, i2); } } diff -r e323c74edabd src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java --- a/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java Sat Apr 26 07:31:04 2014 -0300 @@ -512,7 +512,7 @@ } static String qualifiedStringValue(String s1, String s234) { // Qualification by dot must decompose uniquely. Second string might already be qualified. - assert(s1.indexOf(".") < 0); + assert(s1.indexOf('.') < 0); return s1+"."+s234; }
diff -r e323c74edabd src/share/classes/com/sun/jndi/cosnaming/CorbanameUrl.java --- a/src/share/classes/com/sun/jndi/cosnaming/CorbanameUrl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/jndi/cosnaming/CorbanameUrl.java Sat Apr 26 07:31:04 2014 -0300 @@ -102,7 +102,7 @@ } location = url.substring(addrStart, addrEnd);
- int keyStart = location.indexOf("/"); + int keyStart = location.indexOf('/'); if (keyStart >= 0) { // Has key string if (keyStart == (location.length() -1)) { diff -r e323c74edabd src/share/classes/com/sun/jndi/rmi/registry/RegistryContext.java --- a/src/share/classes/com/sun/jndi/rmi/registry/RegistryContext.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/jndi/rmi/registry/RegistryContext.java Sat Apr 26 07:31:04 2014 -0300 @@ -336,7 +336,7 @@ String url = "rmi://";
// Enclose IPv6 literal address in '[' and ']' - url = (host.indexOf(":") > -1) ? url + "[" + host + "]" : + url = (host.indexOf(':') > -1) ? url + "[" + host + "]" : url + host; if (port > 0) { url += ":" + Integer.toString(port); diff -r e323c74edabd src/share/classes/com/sun/jndi/toolkit/url/GenericURLContext.java --- a/src/share/classes/com/sun/jndi/toolkit/url/GenericURLContext.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/jndi/toolkit/url/GenericURLContext.java Sat Apr 26 07:31:04 2014 -0300 @@ -149,7 +149,7 @@ * foo:rest/of/name foo: */ protected String getURLPrefix(String url) throws NamingException { - int start = url.indexOf(":"); + int start = url.indexOf(':');
if (start < 0) { throw new OperationNotSupportedException("Invalid URL: " + url); @@ -160,7 +160,7 @@ start += 2; // skip double slash
// find last slash - int posn = url.indexOf("/", start); + int posn = url.indexOf('/', start); if (posn >= 0) { start = posn; } else { diff -r e323c74edabd src/share/classes/com/sun/rmi/rmid/ExecOptionPermission.java --- a/src/share/classes/com/sun/rmi/rmid/ExecOptionPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rmi/rmid/ExecOptionPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -303,7 +303,7 @@
offset = pname.length() - 1;
- while ((last = pname.lastIndexOf(".", offset)) != -1) { + while ((last = pname.lastIndexOf('.', offset)) != -1) {
pname = pname.substring(0, last+1) + "*"; x = permissions.get(pname); @@ -318,7 +318,7 @@ pname = p.getName(); offset = pname.length() - 1;
- while ((last = pname.lastIndexOf("=", offset)) != -1) { + while ((last = pname.lastIndexOf('=', offset)) != -1) {
pname = pname.substring(0, last+1) + "*"; x = permissions.get(pname); diff -r e323c74edabd src/share/classes/com/sun/rowset/CachedRowSetImpl.java --- a/src/share/classes/com/sun/rowset/CachedRowSetImpl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rowset/CachedRowSetImpl.java Sat Apr 26 07:31:04 2014 -0300 @@ -6831,7 +6831,7 @@ // table name else isolate table name.
indexFrom = command.toLowerCase().indexOf("from"); - indexComma = command.indexOf(",", indexFrom); + indexComma = command.indexOf(',', indexFrom);
if(indexComma == -1) { // implies only one table diff -r e323c74edabd src/share/classes/com/sun/rowset/JoinRowSetImpl.java --- a/src/share/classes/com/sun/rowset/JoinRowSetImpl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rowset/JoinRowSetImpl.java Sat Apr 26 07:31:04 2014 -0300 @@ -910,7 +910,7 @@
// now remove the last "," strWhereClause = strWhereClause.substring - (0, strWhereClause.lastIndexOf(",")); + (0, strWhereClause.lastIndexOf(','));
// Add from clause strWhereClause = strWhereClause.concat(" from "); @@ -920,7 +920,7 @@
//Remove the last "," strWhereClause = strWhereClause.substring - (0, strWhereClause.lastIndexOf(",")); + (0, strWhereClause.lastIndexOf(','));
// Add the where clause strWhereClause = strWhereClause.concat(" where "); diff -r e323c74edabd src/share/classes/com/sun/rowset/internal/WebRowSetXmlWriter.java --- a/src/share/classes/com/sun/rowset/internal/WebRowSetXmlWriter.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rowset/internal/WebRowSetXmlWriter.java Sat Apr 26 07:31:04 2014 -0300 @@ -240,7 +240,7 @@ // Remove the string after "@xxxx" // before writing it to the xml file. String strProviderInstance = (caller.getSyncProvider()).toString(); - String strProvider = strProviderInstance.substring(0, (caller.getSyncProvider()).toString().indexOf("@")); + String strProvider = strProviderInstance.substring(0, (caller.getSyncProvider()).toString().indexOf('@'));
propString("sync-provider-name", strProvider); propString("sync-provider-vendor", "Oracle Corporation"); diff -r e323c74edabd src/share/classes/com/sun/rowset/internal/XmlReaderContentHandler.java --- a/src/share/classes/com/sun/rowset/internal/XmlReaderContentHandler.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rowset/internal/XmlReaderContentHandler.java Sat Apr 26 07:31:04 2014 -0300 @@ -1147,7 +1147,7 @@ if (nullValue) { rs.setSyncProvider(null); } else { - String str = s.substring(0,s.indexOf("@")+1); + String str = s.substring(0,s.indexOf('@')+1); rs.setSyncProvider(str); } break; diff -r e323c74edabd src/share/classes/com/sun/rowset/internal/XmlResolver.java --- a/src/share/classes/com/sun/rowset/internal/XmlResolver.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rowset/internal/XmlResolver.java Sat Apr 26 07:31:04 2014 -0300 @@ -39,7 +39,7 @@ public class XmlResolver implements EntityResolver {
public InputSource resolveEntity(String publicId, String systemId) { - String schemaName = systemId.substring(systemId.lastIndexOf("/")); + String schemaName = systemId.substring(systemId.lastIndexOf('/'));
if(systemId.startsWith("http://java.sun.com/xml/ns/jdbc")) { return new InputSource(this.getClass().getResourceAsStream(schemaName)); diff -r e323c74edabd src/share/classes/com/sun/security/auth/module/JndiLoginModule.java --- a/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java Sat Apr 26 07:31:04 2014 -0300 @@ -694,7 +694,7 @@ throw new LoginException("Error: no CallbackHandler available " + "to garner authentication information from the user");
- String protocol = userProvider.substring(0, userProvider.indexOf(":")); + String protocol = userProvider.substring(0, userProvider.indexOf(':'));
Callback[] callbacks = new Callback[2]; callbacks[0] = new NameCallback(protocol + " " diff -r e323c74edabd src/share/classes/com/sun/security/auth/module/LdapLoginModule.java --- a/src/share/classes/com/sun/security/auth/module/LdapLoginModule.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/security/auth/module/LdapLoginModule.java Sat Apr 26 07:31:04 2014 -0300 @@ -400,7 +400,7 @@
// Add any JNDI properties to the environment for (String key : options.keySet()) { - if (key.indexOf(".") > -1) { + if (key.indexOf('.') > -1) { ldapEnvironment.put(key, options.get(key)); } } diff -r e323c74edabd src/share/classes/com/sun/tools/example/debug/gui/CommandInterpreter.java --- a/src/share/classes/com/sun/tools/example/debug/gui/CommandInterpreter.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/tools/example/debug/gui/CommandInterpreter.java Sat Apr 26 07:31:04 2014 -0300 @@ -857,7 +857,7 @@ bpSpec = runtime.createClassLineBreakpoint(classId, lineNumber); } else { // Try stripping method from class.method token. - int idot = token.lastIndexOf("."); + int idot = token.lastIndexOf('.'); if ( (idot <= 0) || /* No dot or dot in first char */ (idot >= token.length() - 1) ) { /* dot in last char */ return null; diff -r e323c74edabd src/share/classes/com/sun/tools/example/debug/tty/Commands.java --- a/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Sat Apr 26 07:31:04 2014 -0300 @@ -1079,7 +1079,7 @@ } } else { // Try stripping method from class.method token. - int idot = token.lastIndexOf("."); + int idot = token.lastIndexOf('.'); if ( (idot <= 0) || /* No dot or dot in first char */ (idot >= token.length() - 1) ) { /* dot in last char */ printBreakpointCommandUsage(atForm, inForm); diff -r e323c74edabd src/share/classes/com/sun/tools/hat/internal/server/AllClassesQuery.java --- a/src/share/classes/com/sun/tools/hat/internal/server/AllClassesQuery.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/tools/hat/internal/server/AllClassesQuery.java Sat Apr 26 07:31:04 2014 -0300 @@ -67,7 +67,7 @@ continue; } String name = clazz.getName(); - int pos = name.lastIndexOf("."); + int pos = name.lastIndexOf('.'); String pkg; if (name.startsWith("[")) { // Only in ancient heap dumps pkg = "<Arrays>"; diff -r e323c74edabd src/share/classes/java/lang/Class.java --- a/src/share/classes/java/lang/Class.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/Class.java Sat Apr 26 07:31:04 2014 -0300 @@ -1296,7 +1296,7 @@ String simpleName = getSimpleBinaryName(); if (simpleName == null) { // top level class simpleName = getName(); - return simpleName.substring(simpleName.lastIndexOf(".")+1); // strip the package name + return simpleName.substring(simpleName.lastIndexOf('.')+1); // strip the package name } // According to JLS3 "Binary Compatibility" (13.1) the binary // name of non-package classes (not top level) is the binary diff -r e323c74edabd src/share/classes/java/lang/ClassLoader.java --- a/src/share/classes/java/lang/ClassLoader.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/ClassLoader.java Sat Apr 26 07:31:04 2014 -0300 @@ -2136,7 +2136,7 @@ return result.booleanValue();
// Check for most specific package entry - int dotIndex = className.lastIndexOf("."); + int dotIndex = className.lastIndexOf('.'); if (dotIndex < 0) { // default package result = packageAssertionStatus.get(null); if (result != null) @@ -2147,7 +2147,7 @@ result = packageAssertionStatus.get(className); if (result != null) return result.booleanValue(); - dotIndex = className.lastIndexOf(".", dotIndex-1); + dotIndex = className.lastIndexOf('.', dotIndex-1); }
// Return the classloader default diff -r e323c74edabd src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java --- a/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Sat Apr 26 07:31:04 2014 -0300 @@ -84,7 +84,7 @@ private InvokerBytecodeGenerator(LambdaForm lambdaForm, int localsMapSize, String className, String invokerName, MethodType invokerType) { if (invokerName.contains(".")) { - int p = invokerName.indexOf("."); + int p = invokerName.indexOf('.'); className = invokerName.substring(0, p); invokerName = invokerName.substring(p+1); } diff -r e323c74edabd src/share/classes/java/net/CookieManager.java --- a/src/share/classes/java/net/CookieManager.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/net/CookieManager.java Sat Apr 26 07:31:04 2014 -0300 @@ -294,7 +294,7 @@ // the path is the directory of the page/doc String path = uri.getPath(); if (!path.endsWith("/")) { - int i = path.lastIndexOf("/"); + int i = path.lastIndexOf('/'); if (i > 0) { path = path.substring(0, i + 1); } else { @@ -364,7 +364,7 @@
static private boolean isInPortList(String lst, int port) { - int i = lst.indexOf(","); + int i = lst.indexOf(','); int val = -1; while (i > 0) { try { @@ -375,7 +375,7 @@ } catch (NumberFormatException numberFormatException) { } lst = lst.substring(i+1); - i = lst.indexOf(","); + i = lst.indexOf(','); } if (!lst.isEmpty()) { try { diff -r e323c74edabd src/share/classes/java/net/InetAddress.java --- a/src/share/classes/java/net/InetAddress.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/net/InetAddress.java Sat Apr 26 07:31:04 2014 -0300 @@ -1138,7 +1138,7 @@ // This is supposed to be an IPv6 literal // Check if a numeric or string zone id is present int pos; - if ((pos=host.indexOf ("%")) != -1) { + if ((pos=host.indexOf ('%')) != -1) { numericZone = checkNumericZone (host); if (numericZone == -1) { /* remainder of string must be an ifname */ ifname = host.substring (pos+1); diff -r e323c74edabd src/share/classes/java/net/SocketPermission.java --- a/src/share/classes/java/net/SocketPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/net/SocketPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -777,7 +777,7 @@ // Literal IPv6 address host = getName().substring(1, getName().indexOf(']')); } else { - int i = getName().indexOf(":"); + int i = getName().indexOf(':'); if (i == -1) host = getName(); else { diff -r e323c74edabd src/share/classes/java/net/SocksSocketImpl.java --- a/src/share/classes/java/net/SocksSocketImpl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/net/SocksSocketImpl.java Sat Apr 26 07:31:04 2014 -0300 @@ -368,7 +368,7 @@ String host = epoint.getHostString(); // IPv6 litteral? if (epoint.getAddress() instanceof Inet6Address && - (!host.startsWith("[")) && (host.indexOf(":") >= 0)) { + (!host.startsWith("[")) && (host.indexOf(':') >= 0)) { host = "[" + host + "]"; } try { @@ -684,7 +684,7 @@ String host = saddr.getHostString(); // IPv6 litteral? if (saddr.getAddress() instanceof Inet6Address && - (!host.startsWith("[")) && (host.indexOf(":") >= 0)) { + (!host.startsWith("[")) && (host.indexOf(':') >= 0)) { host = "[" + host + "]"; } try { diff -r e323c74edabd src/share/classes/java/net/URI.java --- a/src/share/classes/java/net/URI.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/net/URI.java Sat Apr 26 07:31:04 2014 -0300 @@ -1851,9 +1851,9 @@ sb.append("//"); if (authority.startsWith("[")) { // authority should (but may not) contain an embedded IPv6 address - int end = authority.indexOf("]"); + int end = authority.indexOf(']'); String doquote = authority, dontquote = ""; - if (end != -1 && authority.indexOf(":") != -1) { + if (end != -1 && authority.indexOf(':') != -1) { // the authority contains an IPv6 address if (end == authority.length()) { dontquote = authority; @@ -1889,8 +1889,8 @@ * because we must not quote a literal IPv6 address */ if (opaquePart.startsWith("//[")) { - int end = opaquePart.indexOf("]"); - if (end != -1 && opaquePart.indexOf(":")!=-1) { + int end = opaquePart.indexOf(']'); + if (end != -1 && opaquePart.indexOf(':')!=-1) { String doquote, dontquote; if (end == opaquePart.length()) { dontquote = opaquePart; diff -r e323c74edabd src/share/classes/java/security/BasicPermission.java --- a/src/share/classes/java/security/BasicPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/security/BasicPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -430,7 +430,7 @@
offset = path.length()-1;
- while ((last = path.lastIndexOf(".", offset)) != -1) { + while ((last = path.lastIndexOf('.', offset)) != -1) {
path = path.substring(0, last+1) + "*"; //System.out.println("check "+path); diff -r e323c74edabd src/share/classes/java/security/Provider.java --- a/src/share/classes/java/security/Provider.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/security/Provider.java Sat Apr 26 07:31:04 2014 -0300 @@ -927,7 +927,7 @@ }
private String[] getTypeAndAlgorithm(String key) { - int i = key.indexOf("."); + int i = key.indexOf('.'); if (i < 1) { if (debug != null) { debug.println("Ignoring invalid entry in provider " diff -r e323c74edabd src/share/classes/java/security/Security.java --- a/src/share/classes/java/security/Security.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/security/Security.java Sat Apr 26 07:31:04 2014 -0300 @@ -1114,7 +1114,7 @@ // implementation of an algorithm. We are only interested // in entries which lead to the implementation // classes. - if (currentKey.indexOf(" ") < 0) { + if (currentKey.indexOf(' ') < 0) { result.add(currentKey.substring( serviceName.length() + 1)); } diff -r e323c74edabd src/share/classes/java/util/PropertyPermission.java --- a/src/share/classes/java/util/PropertyPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/util/PropertyPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -547,7 +547,7 @@
offset = name.length()-1;
- while ((last = name.lastIndexOf(".", offset)) != -1) { + while ((last = name.lastIndexOf('.', offset)) != -1) {
name = name.substring(0, last+1) + "*"; //System.out.println("check "+name); diff -r e323c74edabd src/share/classes/java/util/jar/JarVerifier.java --- a/src/share/classes/java/util/jar/JarVerifier.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/util/jar/JarVerifier.java Sat Apr 26 07:31:04 2014 -0300 @@ -278,7 +278,7 @@
// now we are parsing a signature block file
- String key = uname.substring(0, uname.lastIndexOf(".")); + String key = uname.substring(0, uname.lastIndexOf('.'));
if (signerCache == null) signerCache = new ArrayList<>(); diff -r e323c74edabd src/share/classes/java/util/logging/LogManager.java --- a/src/share/classes/java/util/logging/LogManager.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/util/logging/LogManager.java Sat Apr 26 07:31:04 2014 -0300 @@ -866,7 +866,7 @@
int ix = 1; for (;;) { - int ix2 = name.indexOf(".", ix); + int ix2 = name.indexOf('.', ix); if (ix2 < 0) { break; } @@ -889,7 +889,7 @@ } LogNode node = root; while (name.length() > 0) { - int ix = name.indexOf("."); + int ix = name.indexOf('.'); String head; if (ix > 0) { head = name.substring(0, ix); diff -r e323c74edabd src/share/classes/java/util/logging/XMLFormatter.java --- a/src/share/classes/java/util/logging/XMLFormatter.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/util/logging/XMLFormatter.java Sat Apr 26 07:31:04 2014 -0300 @@ -174,7 +174,7 @@ // Check to see if the parameter was not a messagetext format // or was not null or empty if ( parameters != null && parameters.length != 0 - && record.getMessage().indexOf("{") == -1 ) { + && record.getMessage().indexOf('{') == -1 ) { for (int i = 0; i < parameters.length; i++) { sb.append(" <param>"); try { diff -r e323c74edabd src/share/classes/javax/management/MBeanPermission.java --- a/src/share/classes/javax/management/MBeanPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/management/MBeanPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -290,7 +290,7 @@
// Parse ObjectName
- int openingBracket = name.indexOf("["); + int openingBracket = name.indexOf('['); if (openingBracket == -1) { // If "[on]" missing then ObjectName("*:*") // @@ -329,7 +329,7 @@
// Parse member
- int poundSign = name.indexOf("#"); + int poundSign = name.indexOf('#');
if (poundSign == -1) setMember("*"); diff -r e323c74edabd src/share/classes/javax/management/modelmbean/DescriptorSupport.java --- a/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Sat Apr 26 07:31:04 2014 -0300 @@ -329,7 +329,7 @@ inFld = false; } else if (inFld && inDesc) { // want kw=value, eg, name="myname" value="myvalue" - int eq_separator = tok.indexOf("="); + int eq_separator = tok.indexOf('='); if (eq_separator > 0) { String kwPart = tok.substring(0,eq_separator); String valPart = tok.substring(eq_separator+1); @@ -458,7 +458,7 @@ if ((fields[i] == null) || (fields[i].equals(""))) { continue; } - int eq_separator = fields[i].indexOf("="); + int eq_separator = fields[i].indexOf('='); if (eq_separator < 0) { // illegal if no = or is first character if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) { diff -r e323c74edabd src/share/classes/javax/management/modelmbean/RequiredModelMBean.java --- a/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java Wed
Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java Sat
Apr 26 07:31:04 2014 -0300 @@ -934,7 +934,7 @@ String opMethodName;
// Parse for class name and method - int opSplitter = opName.lastIndexOf("."); + int opSplitter = opName.lastIndexOf('.'); if (opSplitter > 0) { opClassName = opName.substring(0,opSplitter); opMethodName = opName.substring(opSplitter+1); @@ -943,7 +943,7 @@
/* Ignore anything after a left paren. We keep this for compatibility but it isn't specified. */ - opSplitter = opMethodName.indexOf("("); + opSplitter = opMethodName.indexOf('('); if (opSplitter > 0) opMethodName = opMethodName.substring(0,opSplitter);
diff -r e323c74edabd src/share/classes/javax/security/auth/PrivateCredentialPermission.java --- a/src/share/classes/javax/security/auth/PrivateCredentialPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/security/auth/PrivateCredentialPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -495,7 +495,7 @@
// perform new initialization from the permission name
- if (getName().indexOf(" ") == -1 && getName().indexOf("\"") == -1) { + if (getName().indexOf(' ') == -1 && getName().indexOf('\"') == -1) {
// name only has a credential class specified credentialClass = getName(); diff -r e323c74edabd src/share/classes/javax/security/sasl/Sasl.java --- a/src/share/classes/javax/security/sasl/Sasl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/security/sasl/Sasl.java Sat Apr 26 07:31:04 2014 -0300 @@ -600,7 +600,7 @@ // implementation of an algorithm. We are only interested // in entries which lead to the implementation // classes. - if (currentKey.indexOf(" ") < 0) { + if (currentKey.indexOf(' ') < 0) { String className = providers[i].getProperty(currentKey); if (!classes.contains(className)) { classes.add(className); diff -r e323c74edabd src/share/classes/javax/swing/JEditorPane.java --- a/src/share/classes/javax/swing/JEditorPane.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/swing/JEditorPane.java Sat Apr 26 07:31:04 2014 -0300 @@ -964,7 +964,7 @@ // The type could have optional info is part of it, // for example some charset info. We need to strip that // of and save it. - int parm = type.indexOf(";"); + int parm = type.indexOf(';'); if (parm > -1) { // Save the paramList. String paramList = type.substring(parm); diff -r e323c74edabd src/share/classes/javax/swing/plaf/nimbus/NimbusStyle.java --- a/src/share/classes/javax/swing/plaf/nimbus/NimbusStyle.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/swing/plaf/nimbus/NimbusStyle.java Sat Apr 26 07:31:04 2014 -0300 @@ -653,7 +653,7 @@
// strip off the prefix, if there is one. String fullKey = key.toString(); - String partialKey = fullKey.substring(fullKey.indexOf(".") + 1); + String partialKey = fullKey.substring(fullKey.indexOf('.') + 1);
Object obj = null; int xstate = getExtendedState(ctx, v); diff -r e323c74edabd src/share/classes/sun/applet/AppletClassLoader.java --- a/src/share/classes/sun/applet/AppletClassLoader.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/applet/AppletClassLoader.java Sat Apr 26 07:31:04 2014 -0300 @@ -168,7 +168,7 @@ */ protected Class findClass(String name) throws ClassNotFoundException {
- int index = name.indexOf(";"); + int index = name.indexOf(';'); String cookie = ""; if(index != -1) { cookie = name.substring(index, name.length()); @@ -608,7 +608,7 @@
// deal with URL rewriting String cookie = null; - int index = name.indexOf(";"); + int index = name.indexOf(';'); if(index != -1) { cookie = name.substring(index, name.length()); name = name.substring(0, index); diff -r e323c74edabd src/share/classes/sun/awt/FontConfiguration.java --- a/src/share/classes/sun/awt/FontConfiguration.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/awt/FontConfiguration.java Sat Apr 26 07:31:04 2014 -0300 @@ -272,9 +272,9 @@ if (configFile != null) { return configFile; } - int decimalPointIndex = osVersion.indexOf("."); + int decimalPointIndex = osVersion.indexOf('.'); if (decimalPointIndex != -1) { - osMajorVersion = osVersion.substring(0, osVersion.indexOf(".")); + osMajorVersion = osVersion.substring(0, osVersion.indexOf('.')); configFile = findImpl(baseName + "." + osName + "." + osMajorVersion); if (configFile != null) { return configFile; diff -r e323c74edabd src/share/classes/sun/font/Type1Font.java --- a/src/share/classes/sun/font/Type1Font.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/font/Type1Font.java Sat Apr 26 07:31:04 2014 -0300 @@ -492,7 +492,7 @@
//Conversion: Expand abbreviations in style portion (everything after '-'), // replace '-' with space and insert missing spaces - pos = name.indexOf("-"); + pos = name.indexOf('-'); if (pos >= 0) { res = expandName(name.substring(0, pos), false); res += " " + expandName(name.substring(pos+1), true); @@ -513,8 +513,8 @@ //Conversion: Truncate style portion (everything after '-') // and insert missing spaces
- if (tmp.indexOf("-") > 0) { - tmp = tmp.substring(0, tmp.indexOf("-")); + if (tmp.indexOf('-') > 0) { + tmp = tmp.substring(0, tmp.indexOf('-')); }
return expandName(tmp, false); diff -r e323c74edabd src/share/classes/sun/jvmstat/monitor/AbstractMonitor.java --- a/src/share/classes/sun/jvmstat/monitor/AbstractMonitor.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/jvmstat/monitor/AbstractMonitor.java Sat Apr 26 07:31:04 2014 -0300 @@ -84,7 +84,7 @@ * {@inheritDoc} */ public String getBaseName() { - int baseIndex = name.lastIndexOf(".")+1; + int baseIndex = name.lastIndexOf('.') + 1; return name.substring(baseIndex); }
diff -r e323c74edabd src/share/classes/sun/jvmstat/monitor/HostIdentifier.java --- a/src/share/classes/sun/jvmstat/monitor/HostIdentifier.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/jvmstat/monitor/HostIdentifier.java Sat Apr 26 07:31:04 2014 -0300 @@ -138,8 +138,8 @@ String frag = u.getFragment(); URI u2 = null;
- int c1index = uriString.indexOf(":"); - int c2index = uriString.lastIndexOf(":"); + int c1index = uriString.indexOf(':'); + int c2index = uriString.lastIndexOf(':'); if (c2index != c1index) { /* * this is the scheme:hostname:port case. Attempt to diff -r e323c74edabd src/share/classes/sun/management/snmp/jvminstr/NotificationTargetImpl.java
--- a/src/share/classes/sun/management/snmp/jvminstr/NotificationTargetImpl.java
Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/management/snmp/jvminstr/NotificationTargetImpl.java
Sat Apr 26 07:31:04 2014 -0300 @@ -70,8 +70,8 @@
String addrStr; if (target.startsWith("[")) { - final int index = target.indexOf("]"); - final int index2 = target.lastIndexOf(":"); + final int index = target.indexOf(']'); + final int index2 = target.lastIndexOf(':'); if(index == -1) throw new IllegalArgumentException("Host starts with [ but " + "does not end with ]"); @@ -85,8 +85,8 @@ if (addrStr.startsWith("[")) throw new IllegalArgumentException("More than one [[...]]"); } else { - final int index = target.indexOf(":"); - final int index2 = target.lastIndexOf(":"); + final int index = target.indexOf(':'); + final int index2 = target.lastIndexOf(':'); if(index == -1) throw new IllegalArgumentException("Missing port separator \":\""); addrStr = target.substring(0, index); @@ -98,7 +98,7 @@ address = InetAddress.getByName(addrStr);
//THE CHECK SHOULD BE STRONGER!!! - final int index = target.lastIndexOf(":"); + final int index = target.lastIndexOf(':');
community = target.substring(index + 1, target.length());
diff -r e323c74edabd src/share/classes/sun/misc/ExtensionInfo.java --- a/src/share/classes/sun/misc/ExtensionInfo.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/ExtensionInfo.java Sat Apr 26 07:31:04 2014 -0300 @@ -273,8 +273,8 @@ else { // Look for index of "." in the string - int sIdx = source.indexOf("."); - int tIdx = target.indexOf("."); + int sIdx = source.indexOf('.'); + int tIdx = target.indexOf('.');
if (sIdx == -1) sIdx = source.length() - 1; @@ -304,10 +304,10 @@ String versionError = mf.format(args);
// Look for "-" for pre-release - int prIndex = token.indexOf("-"); + int prIndex = token.indexOf('-');
// Look for "_" for patch release - int patchIndex = token.indexOf("_"); + int patchIndex = token.indexOf('_');
if (prIndex == -1 && patchIndex == -1) { diff -r e323c74edabd src/share/classes/sun/misc/JarIndex.java --- a/src/share/classes/sun/misc/JarIndex.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/JarIndex.java Sat Apr 26 07:31:04 2014 -0300 @@ -172,7 +172,7 @@ if ((jarFiles = indexMap.get(fileName)) == null) { /* try the package name again */ int pos; - if((pos = fileName.lastIndexOf("/")) != -1) { + if((pos = fileName.lastIndexOf('/')) != -1) { jarFiles = indexMap.get(fileName.substring(0, pos)); } } @@ -195,7 +195,7 @@ public void add(String fileName, String jarName) { String packageName; int pos; - if((pos = fileName.lastIndexOf("/")) != -1) { + if((pos = fileName.lastIndexOf('/')) != -1) { packageName = fileName.substring(0, pos); } else { packageName = fileName; diff -r e323c74edabd src/share/classes/sun/misc/URLClassPath.java --- a/src/share/classes/sun/misc/URLClassPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/URLClassPath.java Sat Apr 26 07:31:04 2014 -0300 @@ -793,7 +793,7 @@ boolean validIndex(final String name) { String packageName = name; int pos; - if((pos = name.lastIndexOf("/")) != -1) { + if((pos = name.lastIndexOf('/')) != -1) { packageName = name.substring(0, pos); }
@@ -803,7 +803,7 @@ while (enum_.hasMoreElements()) { entry = enum_.nextElement(); entryName = entry.getName(); - if((pos = entryName.lastIndexOf("/")) != -1) + if((pos = entryName.lastIndexOf('/')) != -1) entryName = entryName.substring(0, pos); if (entryName.equals(packageName)) { return true; @@ -900,7 +900,7 @@ */ JarIndex newIndex = newLoader.getIndex(); if(newIndex != null) { - int pos = jarName.lastIndexOf("/"); + int pos = jarName.lastIndexOf('/'); newIndex.merge(this.index, (pos == -1 ? null : jarName.substring(0, pos + 1))); } diff -r e323c74edabd src/share/classes/sun/net/ftp/impl/FtpClient.java --- a/src/share/classes/sun/net/ftp/impl/FtpClient.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/net/ftp/impl/FtpClient.java Sat Apr 26 07:31:04 2014 -0300 @@ -259,7 +259,7 @@ d = null; } if (d != null && time != null) { - int c = time.indexOf(":"); + int c = time.indexOf(':'); now.setTime(d); now.set(Calendar.HOUR, Integer.parseInt(time.substring(0, c))); now.set(Calendar.MINUTE, Integer.parseInt(time.substring(c + 1))); @@ -295,7 +295,7 @@
public FtpDirEntry parseLine(String line) { String name = null; - int i = line.lastIndexOf(";"); + int i = line.lastIndexOf(';'); if (i > 0) { name = line.substring(i + 1).trim(); line = line.substring(0, i); @@ -306,7 +306,7 @@ FtpDirEntry file = new FtpDirEntry(name); while (!line.isEmpty()) { String s; - i = line.indexOf(";"); + i = line.indexOf(';'); if (i > 0) { s = line.substring(0, i); line = line.substring(i + 1); @@ -314,7 +314,7 @@ s = line; line = ""; } - i = s.indexOf("="); + i = s.indexOf('='); if (i > 0) { String fact = s.substring(0, i); String value = s.substring(i + 1); diff -r e323c74edabd src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java --- a/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java Sat Apr 26 07:31:04 2014 -0300 @@ -325,7 +325,7 @@ while (i.hasNext()) { String parentDomain = i.next(); int start = 0; - while ((start = parentDomain.indexOf(".")) != -1 + while ((start = parentDomain.indexOf('.')) != -1 && start < parentDomain.length() -1) { try { results = resolve(ctx, host+"."+parentDomain, ids, 0); diff -r e323c74edabd src/share/classes/sun/net/util/IPAddressUtil.java --- a/src/share/classes/sun/net/util/IPAddressUtil.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/net/util/IPAddressUtil.java Sat Apr 26 07:31:04 2014 -0300 @@ -149,7 +149,7 @@ byte[] dst = new byte[INADDR16SZ];
int srcb_length = srcb.length; - int pc = src.indexOf ("%"); + int pc = src.indexOf ('%'); if (pc == srcb_length -1) { return null; } diff -r e323c74edabd src/share/classes/sun/net/www/ParseUtil.java --- a/src/share/classes/sun/net/www/ParseUtil.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/net/www/ParseUtil.java Sat Apr 26 07:31:04 2014 -0300 @@ -356,8 +356,8 @@ * because we must not quote a literal IPv6 address */ if (opaquePart.startsWith("//[")) { - int end = opaquePart.indexOf("]"); - if (end != -1 && opaquePart.indexOf(":")!=-1) { + int end = opaquePart.indexOf(']'); + if (end != -1 && opaquePart.indexOf(':')!=-1) { String doquote, dontquote; if (end == opaquePart.length()) { dontquote = opaquePart; @@ -408,8 +408,8 @@ } else if (authority != null) { sb.append("//"); if (authority.startsWith("[")) { - int end = authority.indexOf("]"); - if (end != -1 && authority.indexOf(":")!=-1) { + int end = authority.indexOf(']'); + if (end != -1 && authority.indexOf(':')!=-1) { String doquote, dontquote; if (end == authority.length()) { dontquote = authority; diff -r e323c74edabd src/share/classes/sun/reflect/misc/ReflectUtil.java --- a/src/share/classes/sun/reflect/misc/ReflectUtil.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/reflect/misc/ReflectUtil.java Sat Apr 26 07:31:04 2014 -0300 @@ -341,6 +341,6 @@ * (not to be confused with a Java Language anonymous inner class). */ public static boolean isVMAnonymousClass(Class<?> cls) { - return cls.getName().indexOf("/") > -1; + return cls.getName().indexOf('/') > -1; } } diff -r e323c74edabd src/share/classes/sun/rmi/runtime/Log.java --- a/src/share/classes/sun/rmi/runtime/Log.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/rmi/runtime/Log.java Sat Apr 26 07:31:04 2014 -0300 @@ -434,7 +434,7 @@ * Mimic old log messages that only contain unqualified names. */ private static String unqualifiedName(String name) { - int lastDot = name.lastIndexOf("."); + int lastDot = name.lastIndexOf('.'); if (lastDot >= 0) { name = name.substring(lastDot + 1); } diff -r e323c74edabd src/share/classes/sun/rmi/transport/proxy/CGIHandler.java --- a/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java Sat Apr 26 07:31:04 2014 -0300 @@ -141,7 +141,7 @@ { try { String command, param; - int delim = QueryString.indexOf("="); + int delim = QueryString.indexOf('='); if (delim == -1) { command = QueryString; param = ""; diff -r e323c74edabd src/share/classes/sun/security/jgss/wrapper/Krb5Util.java --- a/src/share/classes/sun/security/jgss/wrapper/Krb5Util.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/jgss/wrapper/Krb5Util.java Sat Apr 26 07:31:04 2014 -0300 @@ -39,7 +39,7 @@ static String getTGSName(GSSNameElement name) throws GSSException { String krbPrinc = name.getKrbName(); - int atIndex = krbPrinc.indexOf("@"); + int atIndex = krbPrinc.indexOf('@'); String realm = krbPrinc.substring(atIndex + 1); StringBuffer buf = new StringBuffer("krbtgt/"); buf.append(realm).append('@').append(realm); diff -r e323c74edabd src/share/classes/sun/security/provider/PolicyFile.java --- a/src/share/classes/sun/security/provider/PolicyFile.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/provider/PolicyFile.java Sat Apr 26 07:31:04 2014 -0300 @@ -1856,7 +1856,7 @@ int colonIndex; String prefix = value; String suffix; - if ((colonIndex = value.indexOf(":")) != -1) { + if ((colonIndex = value.indexOf(':')) != -1) { prefix = value.substring(0, colonIndex); }
diff -r e323c74edabd src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java --- a/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java Sat Apr 26 07:31:04 2014 -0300 @@ -338,7 +338,7 @@ } String sigType; if (keyType.contains("_")) { - int k = keyType.indexOf("_"); + int k = keyType.indexOf('_'); sigType = keyType.substring(k + 1); keyType = keyType.substring(0, k); } else { diff -r e323c74edabd src/share/classes/sun/security/ssl/X509KeyManagerImpl.java --- a/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java Sat Apr 26 07:31:04 2014 -0300 @@ -302,7 +302,7 @@ final String sigKeyAlgorithm;
KeyType(String algorithm) { - int k = algorithm.indexOf("_"); + int k = algorithm.indexOf('_'); if (k == -1) { keyAlgorithm = algorithm; sigKeyAlgorithm = null; diff -r e323c74edabd src/share/classes/sun/security/util/HostnameChecker.java --- a/src/share/classes/sun/security/util/HostnameChecker.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/util/HostnameChecker.java Sat Apr 26 07:31:04 2014 -0300 @@ -300,8 +300,8 @@ template = template.toLowerCase(Locale.ENGLISH);
// Retreive leftmost component - int templateIdx = template.indexOf("."); - int nameIdx = name.indexOf("."); + int templateIdx = template.indexOf('.'); + int nameIdx = name.indexOf('.');
if (templateIdx == -1) templateIdx = template.length(); @@ -326,7 +326,7 @@ */ private static boolean matchWildCards(String name, String template) {
- int wildcardIdx = template.indexOf("*"); + int wildcardIdx = template.indexOf('*'); if (wildcardIdx == -1) return name.equals(template);
@@ -349,7 +349,7 @@
// update the match scope name = name.substring(beforeStartIdx + beforeWildcard.length()); - wildcardIdx = afterWildcard.indexOf("*"); + wildcardIdx = afterWildcard.indexOf('*'); } return name.endsWith(afterWildcard); } diff -r e323c74edabd src/share/classes/sun/security/util/SignatureFileVerifier.java --- a/src/share/classes/sun/security/util/SignatureFileVerifier.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/util/SignatureFileVerifier.java Sat Apr 26 07:31:04 2014 -0300 @@ -98,7 +98,7 @@ } finally { Providers.stopJarVerification(obj); } - this.name = name.substring(0, name.lastIndexOf(".")) + this.name = name.substring(0, name.lastIndexOf('.'))
.toUpperCase(Locale.ENGLISH); this.md = md; this.signerCache = signerCache; diff -r e323c74edabd src/share/classes/sun/security/x509/CRLExtensions.java --- a/src/share/classes/sun/security/x509/CRLExtensions.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/x509/CRLExtensions.java Sat Apr 26 07:31:04 2014 -0300 @@ -185,7 +185,7 @@ String name; String id = attr.getPrefix(); if (id.equalsIgnoreCase(X509CertImpl.NAME)) { // fully qualified - int index = alias.lastIndexOf("."); + int index = alias.lastIndexOf('.'); name = alias.substring(index + 1); } else name = alias; diff -r e323c74edabd src/share/classes/sun/tools/jconsole/ConnectDialog.java --- a/src/share/classes/sun/tools/jconsole/ConnectDialog.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/ConnectDialog.java Sat Apr 26 07:31:04 2014 -0300 @@ -325,7 +325,7 @@ } else { String host = remoteTF.getText().trim(); String port = "0"; - int index = host.lastIndexOf(":"); + int index = host.lastIndexOf(':'); if (index >= 0) { port = host.substring(index + 1); host = host.substring(0, index); diff -r e323c74edabd src/share/classes/sun/tools/jconsole/inspector/Utils.java --- a/src/share/classes/sun/tools/jconsole/inspector/Utils.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/inspector/Utils.java Sat Apr 26 07:31:04 2014 -0300 @@ -210,7 +210,7 @@ public static String getArrayClassName(String name) { String className = null; if (name.startsWith("[")) { - int index = name.lastIndexOf("["); + int index = name.lastIndexOf('['); className = name.substring(index, name.length()); if (className.startsWith("[L")) { className = className.substring(2, className.length() - 1); @@ -241,7 +241,7 @@ if (className == null) { return name; } - int index = name.lastIndexOf("["); + int index = name.lastIndexOf('['); StringBuilder brackets = new StringBuilder(className); for (int i = 0; i <= index; i++) { brackets.append("[]"); diff -r e323c74edabd src/share/classes/sun/tools/jconsole/inspector/XOperations.java --- a/src/share/classes/sun/tools/jconsole/inspector/XOperations.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/inspector/XOperations.java Sat Apr 26 07:31:04 2014 -0300 @@ -112,7 +112,7 @@ if (methodLabel.getText().length() > 20) { methodLabel.setText(methodLabel.getText(). substring(methodLabel.getText(). - lastIndexOf(".") + 1, + lastIndexOf('.') + 1, methodLabel.getText().length())); }
diff -r e323c74edabd src/share/classes/sun/tools/jconsole/inspector/XTree.java --- a/src/share/classes/sun/tools/jconsole/inspector/XTree.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/inspector/XTree.java Sat Apr 26 07:31:04 2014 -0300 @@ -475,7 +475,7 @@ private static Map<String, String> extractKeyValuePairs( String props, ObjectName mbean) { Map<String, String> map = new LinkedHashMap<String, String>(); - int eq = props.indexOf("="); + int eq = props.indexOf('='); while (eq != -1) { String key = props.substring(0, eq); String value = mbean.getKeyProperty(key); @@ -484,7 +484,7 @@ if (props.startsWith(",")) { props = props.substring(1); } - eq = props.indexOf("="); + eq = props.indexOf('='); } return map; } @@ -821,7 +821,7 @@ }
private void buildKeyValue() { - int index = tokenValue.indexOf("="); + int index = tokenValue.indexOf('='); if (index < 0) { key = tokenValue; value = tokenValue;
Possibly a few bytes in static class footprint, sure. Maybe this is something javac should optimize (javap on some trivial examples suggests this doesn't happen) rather than trying to root out all suboptimal cases, especially since there are bound to be a lot more code out there using similar patterns? /Claes On 2014-04-27 14:04, David Holmes wrote:
There is also a slight reduction in memory pressure due to not creating a bunch of one character string literals.
David
On 27/04/2014 3:13 AM, Claes Redestad wrote:
Hi Otávio,
while I personally like using chars instead of Strings where applicable, I would assume these constant replacements are all cases where the JIT will be quick to inline and eliminate the overhead. So the benefit, if any, would be in interpreted code. Testing these assumptions with a simple but representative JMH[1] microbenchmark[2]:
Benchmark Mode Samples Mean Mean error Units o.s.MyBenchmark.indexOfChar thrpt 20 32290.764 359.347 ops/ms o.s.MyBenchmark.indexOfString thrpt 20 32353.865 398.929 ops/ms o.s.MyBenchmark.lastIndexOfChar thrpt 20 32444.428 462.630 ops/ms o.s.MyBenchmark.lastIndexOfString thrpt 20 32001.738 388.791 ops/ms
So no real difference, as suspected. Running with -Xint:
Benchmark Mode Samples Mean Mean error Units o.s.MyBenchmark.indexOfChar thrpt 20 3170.130 108.933 ops/ms o.s.MyBenchmark.indexOfString thrpt 20 3119.518 44.703 ops/ms o.s.MyBenchmark.lastIndexOfChar thrpt 20 3281.374 25.589 ops/ms o.s.MyBenchmark.lastIndexOfString thrpt 20 3154.710 45.224 ops/ms
Not much - if anything - here either. I think more evidence that this would have some actual benefit is warranted.
/Claes
[1] http://openjdk.java.net/projects/code-tools/jmh/ [2] package org.sample;
import org.openjdk.jmh.annotations.*;
import java.util.Random;
@State(Scope.Thread) public class MyBenchmark {
/* * Generate a lot of randomly generated strings of various sizes */ static int NUM = 100000; static int MAX_SIZE = 1000; static String[] STRINGS = new String[NUM];
static { Random r = new Random(); for (int i = 0; i < NUM; i++) { StringBuilder sb = new StringBuilder(r.nextInt(MAX_SIZE) + 1); for (int j = 0; j < sb.capacity(); j++) { sb.append((char)(r.nextInt(70) + '0')); } STRINGS[i] = sb.toString(); } }
private int i = 0;
@GenerateMicroBenchmark public int indexOfString() { if (i >= NUM) { i = 0; } return STRINGS[i++].indexOf("6"); }
@GenerateMicroBenchmark public int lastIndexOfString() { if (i >= NUM) { i = 0; } return STRINGS[i++].indexOf("6"); }
@GenerateMicroBenchmark public int indexOfChar() { if (i >= NUM) { i = 0; } return STRINGS[i++].indexOf('6'); }
@GenerateMicroBenchmark public int lastIndexOfChar() { if (i >= NUM) { i = 0; } return STRINGS[i++].indexOf('6'); } }
On 2014-04-26 12:56, Otávio Gonçalves de Santana wrote:
When a String has length just one, could be replaced by equivalent character literals, gaining some performance enhancement.
I found 107 changes.
diff -r e323c74edabd src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java --- a/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java Sat Apr 26 07:31:04 2014 -0300 @@ -547,7 +547,7 @@ i = strLowerCase.indexOf("<stringvalue>", i); if (i > 0) { i += "<stringvalue>".length(); - int i2 = str.indexOf("<", i); + int i2 = str.indexOf('<', i); return str.substring(i, i2); } } diff -r e323c74edabd src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java --- a/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java Sat Apr 26 07:31:04 2014 -0300 @@ -512,7 +512,7 @@ } static String qualifiedStringValue(String s1, String s234) { // Qualification by dot must decompose uniquely. Second string might already be qualified. - assert(s1.indexOf(".") < 0); + assert(s1.indexOf('.') < 0); return s1+"."+s234; }
diff -r e323c74edabd src/share/classes/com/sun/jndi/cosnaming/CorbanameUrl.java --- a/src/share/classes/com/sun/jndi/cosnaming/CorbanameUrl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/jndi/cosnaming/CorbanameUrl.java Sat Apr 26 07:31:04 2014 -0300 @@ -102,7 +102,7 @@ } location = url.substring(addrStart, addrEnd);
- int keyStart = location.indexOf("/"); + int keyStart = location.indexOf('/'); if (keyStart >= 0) { // Has key string if (keyStart == (location.length() -1)) { diff -r e323c74edabd src/share/classes/com/sun/jndi/rmi/registry/RegistryContext.java --- a/src/share/classes/com/sun/jndi/rmi/registry/RegistryContext.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/jndi/rmi/registry/RegistryContext.java Sat Apr 26 07:31:04 2014 -0300 @@ -336,7 +336,7 @@ String url = "rmi://";
// Enclose IPv6 literal address in '[' and ']' - url = (host.indexOf(":") > -1) ? url + "[" + host + "]" : + url = (host.indexOf(':') > -1) ? url + "[" + host + "]" : url + host; if (port > 0) { url += ":" + Integer.toString(port); diff -r e323c74edabd src/share/classes/com/sun/jndi/toolkit/url/GenericURLContext.java --- a/src/share/classes/com/sun/jndi/toolkit/url/GenericURLContext.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/jndi/toolkit/url/GenericURLContext.java Sat Apr 26 07:31:04 2014 -0300 @@ -149,7 +149,7 @@ * foo:rest/of/name foo: */ protected String getURLPrefix(String url) throws NamingException { - int start = url.indexOf(":"); + int start = url.indexOf(':');
if (start < 0) { throw new OperationNotSupportedException("Invalid URL: " + url); @@ -160,7 +160,7 @@ start += 2; // skip double slash
// find last slash - int posn = url.indexOf("/", start); + int posn = url.indexOf('/', start); if (posn >= 0) { start = posn; } else { diff -r e323c74edabd src/share/classes/com/sun/rmi/rmid/ExecOptionPermission.java --- a/src/share/classes/com/sun/rmi/rmid/ExecOptionPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rmi/rmid/ExecOptionPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -303,7 +303,7 @@
offset = pname.length() - 1;
- while ((last = pname.lastIndexOf(".", offset)) != -1) { + while ((last = pname.lastIndexOf('.', offset)) != -1) {
pname = pname.substring(0, last+1) + "*"; x = permissions.get(pname); @@ -318,7 +318,7 @@ pname = p.getName(); offset = pname.length() - 1;
- while ((last = pname.lastIndexOf("=", offset)) != -1) { + while ((last = pname.lastIndexOf('=', offset)) != -1) {
pname = pname.substring(0, last+1) + "*"; x = permissions.get(pname); diff -r e323c74edabd src/share/classes/com/sun/rowset/CachedRowSetImpl.java --- a/src/share/classes/com/sun/rowset/CachedRowSetImpl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rowset/CachedRowSetImpl.java Sat Apr 26 07:31:04 2014 -0300 @@ -6831,7 +6831,7 @@ // table name else isolate table name.
indexFrom = command.toLowerCase().indexOf("from"); - indexComma = command.indexOf(",", indexFrom); + indexComma = command.indexOf(',', indexFrom);
if(indexComma == -1) { // implies only one table diff -r e323c74edabd src/share/classes/com/sun/rowset/JoinRowSetImpl.java --- a/src/share/classes/com/sun/rowset/JoinRowSetImpl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rowset/JoinRowSetImpl.java Sat Apr 26 07:31:04 2014 -0300 @@ -910,7 +910,7 @@
// now remove the last "," strWhereClause = strWhereClause.substring - (0, strWhereClause.lastIndexOf(",")); + (0, strWhereClause.lastIndexOf(','));
// Add from clause strWhereClause = strWhereClause.concat(" from "); @@ -920,7 +920,7 @@
//Remove the last "," strWhereClause = strWhereClause.substring - (0, strWhereClause.lastIndexOf(",")); + (0, strWhereClause.lastIndexOf(','));
// Add the where clause strWhereClause = strWhereClause.concat(" where "); diff -r e323c74edabd src/share/classes/com/sun/rowset/internal/WebRowSetXmlWriter.java --- a/src/share/classes/com/sun/rowset/internal/WebRowSetXmlWriter.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rowset/internal/WebRowSetXmlWriter.java Sat Apr 26 07:31:04 2014 -0300 @@ -240,7 +240,7 @@ // Remove the string after "@xxxx" // before writing it to the xml file. String strProviderInstance = (caller.getSyncProvider()).toString(); - String strProvider = strProviderInstance.substring(0, (caller.getSyncProvider()).toString().indexOf("@")); + String strProvider = strProviderInstance.substring(0, (caller.getSyncProvider()).toString().indexOf('@'));
propString("sync-provider-name", strProvider); propString("sync-provider-vendor", "Oracle Corporation"); diff -r e323c74edabd src/share/classes/com/sun/rowset/internal/XmlReaderContentHandler.java --- a/src/share/classes/com/sun/rowset/internal/XmlReaderContentHandler.java
Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rowset/internal/XmlReaderContentHandler.java
Sat Apr 26 07:31:04 2014 -0300 @@ -1147,7 +1147,7 @@ if (nullValue) { rs.setSyncProvider(null); } else { - String str = s.substring(0,s.indexOf("@")+1); + String str = s.substring(0,s.indexOf('@')+1); rs.setSyncProvider(str); } break; diff -r e323c74edabd src/share/classes/com/sun/rowset/internal/XmlResolver.java --- a/src/share/classes/com/sun/rowset/internal/XmlResolver.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/rowset/internal/XmlResolver.java Sat Apr 26 07:31:04 2014 -0300 @@ -39,7 +39,7 @@ public class XmlResolver implements EntityResolver {
public InputSource resolveEntity(String publicId, String systemId) { - String schemaName = systemId.substring(systemId.lastIndexOf("/")); + String schemaName = systemId.substring(systemId.lastIndexOf('/'));
if(systemId.startsWith("http://java.sun.com/xml/ns/jdbc")) { return new InputSource(this.getClass().getResourceAsStream(schemaName)); diff -r e323c74edabd src/share/classes/com/sun/security/auth/module/JndiLoginModule.java --- a/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java Wed
Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/security/auth/module/JndiLoginModule.java Sat
Apr 26 07:31:04 2014 -0300 @@ -694,7 +694,7 @@ throw new LoginException("Error: no CallbackHandler available " + "to garner authentication information from the user");
- String protocol = userProvider.substring(0, userProvider.indexOf(":")); + String protocol = userProvider.substring(0, userProvider.indexOf(':'));
Callback[] callbacks = new Callback[2]; callbacks[0] = new NameCallback(protocol + " " diff -r e323c74edabd src/share/classes/com/sun/security/auth/module/LdapLoginModule.java --- a/src/share/classes/com/sun/security/auth/module/LdapLoginModule.java Wed
Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/security/auth/module/LdapLoginModule.java Sat
Apr 26 07:31:04 2014 -0300 @@ -400,7 +400,7 @@
// Add any JNDI properties to the environment for (String key : options.keySet()) { - if (key.indexOf(".") > -1) { + if (key.indexOf('.') > -1) { ldapEnvironment.put(key, options.get(key)); } } diff -r e323c74edabd src/share/classes/com/sun/tools/example/debug/gui/CommandInterpreter.java
--- a/src/share/classes/com/sun/tools/example/debug/gui/CommandInterpreter.java
Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/tools/example/debug/gui/CommandInterpreter.java
Sat Apr 26 07:31:04 2014 -0300 @@ -857,7 +857,7 @@ bpSpec = runtime.createClassLineBreakpoint(classId, lineNumber); } else { // Try stripping method from class.method token. - int idot = token.lastIndexOf("."); + int idot = token.lastIndexOf('.'); if ( (idot <= 0) || /* No dot or dot in first char */ (idot >= token.length() - 1) ) { /* dot in last char */ return null; diff -r e323c74edabd src/share/classes/com/sun/tools/example/debug/tty/Commands.java --- a/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/tools/example/debug/tty/Commands.java Sat Apr 26 07:31:04 2014 -0300 @@ -1079,7 +1079,7 @@ } } else { // Try stripping method from class.method token. - int idot = token.lastIndexOf("."); + int idot = token.lastIndexOf('.'); if ( (idot <= 0) || /* No dot or dot in first char */ (idot >= token.length() - 1) ) { /* dot in last char */ printBreakpointCommandUsage(atForm, inForm); diff -r e323c74edabd src/share/classes/com/sun/tools/hat/internal/server/AllClassesQuery.java
--- a/src/share/classes/com/sun/tools/hat/internal/server/AllClassesQuery.java
Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/com/sun/tools/hat/internal/server/AllClassesQuery.java
Sat Apr 26 07:31:04 2014 -0300 @@ -67,7 +67,7 @@ continue; } String name = clazz.getName(); - int pos = name.lastIndexOf("."); + int pos = name.lastIndexOf('.'); String pkg; if (name.startsWith("[")) { // Only in ancient heap dumps pkg = "<Arrays>"; diff -r e323c74edabd src/share/classes/java/lang/Class.java --- a/src/share/classes/java/lang/Class.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/Class.java Sat Apr 26 07:31:04 2014 -0300 @@ -1296,7 +1296,7 @@ String simpleName = getSimpleBinaryName(); if (simpleName == null) { // top level class simpleName = getName(); - return simpleName.substring(simpleName.lastIndexOf(".")+1); // strip the package name + return simpleName.substring(simpleName.lastIndexOf('.')+1); // strip the package name } // According to JLS3 "Binary Compatibility" (13.1) the binary // name of non-package classes (not top level) is the binary diff -r e323c74edabd src/share/classes/java/lang/ClassLoader.java --- a/src/share/classes/java/lang/ClassLoader.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/ClassLoader.java Sat Apr 26 07:31:04 2014 -0300 @@ -2136,7 +2136,7 @@ return result.booleanValue();
// Check for most specific package entry - int dotIndex = className.lastIndexOf("."); + int dotIndex = className.lastIndexOf('.'); if (dotIndex < 0) { // default package result = packageAssertionStatus.get(null); if (result != null) @@ -2147,7 +2147,7 @@ result = packageAssertionStatus.get(className); if (result != null) return result.booleanValue(); - dotIndex = className.lastIndexOf(".", dotIndex-1); + dotIndex = className.lastIndexOf('.', dotIndex-1); }
// Return the classloader default diff -r e323c74edabd src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java --- a/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/lang/invoke/InvokerBytecodeGenerator.java Sat Apr 26 07:31:04 2014 -0300 @@ -84,7 +84,7 @@ private InvokerBytecodeGenerator(LambdaForm lambdaForm, int localsMapSize, String className, String invokerName, MethodType invokerType) { if (invokerName.contains(".")) { - int p = invokerName.indexOf("."); + int p = invokerName.indexOf('.'); className = invokerName.substring(0, p); invokerName = invokerName.substring(p+1); } diff -r e323c74edabd src/share/classes/java/net/CookieManager.java --- a/src/share/classes/java/net/CookieManager.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/net/CookieManager.java Sat Apr 26 07:31:04 2014 -0300 @@ -294,7 +294,7 @@ // the path is the directory of the page/doc String path = uri.getPath(); if (!path.endsWith("/")) { - int i = path.lastIndexOf("/"); + int i = path.lastIndexOf('/'); if (i > 0) { path = path.substring(0, i + 1); } else { @@ -364,7 +364,7 @@
static private boolean isInPortList(String lst, int port) { - int i = lst.indexOf(","); + int i = lst.indexOf(','); int val = -1; while (i > 0) { try { @@ -375,7 +375,7 @@ } catch (NumberFormatException numberFormatException) { } lst = lst.substring(i+1); - i = lst.indexOf(","); + i = lst.indexOf(','); } if (!lst.isEmpty()) { try { diff -r e323c74edabd src/share/classes/java/net/InetAddress.java --- a/src/share/classes/java/net/InetAddress.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/net/InetAddress.java Sat Apr 26 07:31:04 2014 -0300 @@ -1138,7 +1138,7 @@ // This is supposed to be an IPv6 literal // Check if a numeric or string zone id is present int pos; - if ((pos=host.indexOf ("%")) != -1) { + if ((pos=host.indexOf ('%')) != -1) { numericZone = checkNumericZone (host); if (numericZone == -1) { /* remainder of string must be an ifname */ ifname = host.substring (pos+1); diff -r e323c74edabd src/share/classes/java/net/SocketPermission.java --- a/src/share/classes/java/net/SocketPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/net/SocketPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -777,7 +777,7 @@ // Literal IPv6 address host = getName().substring(1, getName().indexOf(']')); } else { - int i = getName().indexOf(":"); + int i = getName().indexOf(':'); if (i == -1) host = getName(); else { diff -r e323c74edabd src/share/classes/java/net/SocksSocketImpl.java --- a/src/share/classes/java/net/SocksSocketImpl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/net/SocksSocketImpl.java Sat Apr 26 07:31:04 2014 -0300 @@ -368,7 +368,7 @@ String host = epoint.getHostString(); // IPv6 litteral? if (epoint.getAddress() instanceof Inet6Address && - (!host.startsWith("[")) && (host.indexOf(":") >= 0)) { + (!host.startsWith("[")) && (host.indexOf(':') >= 0)) { host = "[" + host + "]"; } try { @@ -684,7 +684,7 @@ String host = saddr.getHostString(); // IPv6 litteral? if (saddr.getAddress() instanceof Inet6Address && - (!host.startsWith("[")) && (host.indexOf(":") >= 0)) { + (!host.startsWith("[")) && (host.indexOf(':') >= 0)) { host = "[" + host + "]"; } try { diff -r e323c74edabd src/share/classes/java/net/URI.java --- a/src/share/classes/java/net/URI.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/net/URI.java Sat Apr 26 07:31:04 2014 -0300 @@ -1851,9 +1851,9 @@ sb.append("//"); if (authority.startsWith("[")) { // authority should (but may not) contain an embedded IPv6 address - int end = authority.indexOf("]"); + int end = authority.indexOf(']'); String doquote = authority, dontquote = ""; - if (end != -1 && authority.indexOf(":") != -1) { + if (end != -1 && authority.indexOf(':') != -1) { // the authority contains an IPv6 address if (end == authority.length()) { dontquote = authority; @@ -1889,8 +1889,8 @@ * because we must not quote a literal IPv6 address */ if (opaquePart.startsWith("//[")) { - int end = opaquePart.indexOf("]"); - if (end != -1 && opaquePart.indexOf(":")!=-1) { + int end = opaquePart.indexOf(']'); + if (end != -1 && opaquePart.indexOf(':')!=-1) { String doquote, dontquote; if (end == opaquePart.length()) { dontquote = opaquePart; diff -r e323c74edabd src/share/classes/java/security/BasicPermission.java --- a/src/share/classes/java/security/BasicPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/security/BasicPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -430,7 +430,7 @@
offset = path.length()-1;
- while ((last = path.lastIndexOf(".", offset)) != -1) { + while ((last = path.lastIndexOf('.', offset)) != -1) {
path = path.substring(0, last+1) + "*"; //System.out.println("check "+path); diff -r e323c74edabd src/share/classes/java/security/Provider.java --- a/src/share/classes/java/security/Provider.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/security/Provider.java Sat Apr 26 07:31:04 2014 -0300 @@ -927,7 +927,7 @@ }
private String[] getTypeAndAlgorithm(String key) { - int i = key.indexOf("."); + int i = key.indexOf('.'); if (i < 1) { if (debug != null) { debug.println("Ignoring invalid entry in provider " diff -r e323c74edabd src/share/classes/java/security/Security.java --- a/src/share/classes/java/security/Security.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/security/Security.java Sat Apr 26 07:31:04 2014 -0300 @@ -1114,7 +1114,7 @@ // implementation of an algorithm. We are only interested // in entries which lead to the implementation // classes. - if (currentKey.indexOf(" ") < 0) { + if (currentKey.indexOf(' ') < 0) { result.add(currentKey.substring( serviceName.length() + 1)); } diff -r e323c74edabd src/share/classes/java/util/PropertyPermission.java --- a/src/share/classes/java/util/PropertyPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/util/PropertyPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -547,7 +547,7 @@
offset = name.length()-1;
- while ((last = name.lastIndexOf(".", offset)) != -1) { + while ((last = name.lastIndexOf('.', offset)) != -1) {
name = name.substring(0, last+1) + "*"; //System.out.println("check "+name); diff -r e323c74edabd src/share/classes/java/util/jar/JarVerifier.java --- a/src/share/classes/java/util/jar/JarVerifier.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/util/jar/JarVerifier.java Sat Apr 26 07:31:04 2014 -0300 @@ -278,7 +278,7 @@
// now we are parsing a signature block file
- String key = uname.substring(0, uname.lastIndexOf(".")); + String key = uname.substring(0, uname.lastIndexOf('.'));
if (signerCache == null) signerCache = new ArrayList<>(); diff -r e323c74edabd src/share/classes/java/util/logging/LogManager.java --- a/src/share/classes/java/util/logging/LogManager.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/util/logging/LogManager.java Sat Apr 26 07:31:04 2014 -0300 @@ -866,7 +866,7 @@
int ix = 1; for (;;) { - int ix2 = name.indexOf(".", ix); + int ix2 = name.indexOf('.', ix); if (ix2 < 0) { break; } @@ -889,7 +889,7 @@ } LogNode node = root; while (name.length() > 0) { - int ix = name.indexOf("."); + int ix = name.indexOf('.'); String head; if (ix > 0) { head = name.substring(0, ix); diff -r e323c74edabd src/share/classes/java/util/logging/XMLFormatter.java --- a/src/share/classes/java/util/logging/XMLFormatter.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/java/util/logging/XMLFormatter.java Sat Apr 26 07:31:04 2014 -0300 @@ -174,7 +174,7 @@ // Check to see if the parameter was not a messagetext format // or was not null or empty if ( parameters != null && parameters.length != 0 - && record.getMessage().indexOf("{") == -1 ) { + && record.getMessage().indexOf('{') == -1 ) { for (int i = 0; i < parameters.length; i++) { sb.append(" <param>"); try { diff -r e323c74edabd src/share/classes/javax/management/MBeanPermission.java --- a/src/share/classes/javax/management/MBeanPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/management/MBeanPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -290,7 +290,7 @@
// Parse ObjectName
- int openingBracket = name.indexOf("["); + int openingBracket = name.indexOf('['); if (openingBracket == -1) { // If "[on]" missing then ObjectName("*:*") // @@ -329,7 +329,7 @@
// Parse member
- int poundSign = name.indexOf("#"); + int poundSign = name.indexOf('#');
if (poundSign == -1) setMember("*"); diff -r e323c74edabd src/share/classes/javax/management/modelmbean/DescriptorSupport.java --- a/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/management/modelmbean/DescriptorSupport.java Sat Apr 26 07:31:04 2014 -0300 @@ -329,7 +329,7 @@ inFld = false; } else if (inFld && inDesc) { // want kw=value, eg, name="myname" value="myvalue" - int eq_separator = tok.indexOf("="); + int eq_separator = tok.indexOf('='); if (eq_separator > 0) { String kwPart = tok.substring(0,eq_separator); String valPart = tok.substring(eq_separator+1); @@ -458,7 +458,7 @@ if ((fields[i] == null) || (fields[i].equals(""))) { continue; } - int eq_separator = fields[i].indexOf("="); + int eq_separator = fields[i].indexOf('='); if (eq_separator < 0) { // illegal if no = or is first character if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) { diff -r e323c74edabd src/share/classes/javax/management/modelmbean/RequiredModelMBean.java --- a/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java Wed
Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java Sat
Apr 26 07:31:04 2014 -0300 @@ -934,7 +934,7 @@ String opMethodName;
// Parse for class name and method - int opSplitter = opName.lastIndexOf("."); + int opSplitter = opName.lastIndexOf('.'); if (opSplitter > 0) { opClassName = opName.substring(0,opSplitter); opMethodName = opName.substring(opSplitter+1); @@ -943,7 +943,7 @@
/* Ignore anything after a left paren. We keep this for compatibility but it isn't specified. */ - opSplitter = opMethodName.indexOf("("); + opSplitter = opMethodName.indexOf('('); if (opSplitter > 0) opMethodName = opMethodName.substring(0,opSplitter);
diff -r e323c74edabd src/share/classes/javax/security/auth/PrivateCredentialPermission.java --- a/src/share/classes/javax/security/auth/PrivateCredentialPermission.java
Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/security/auth/PrivateCredentialPermission.java
Sat Apr 26 07:31:04 2014 -0300 @@ -495,7 +495,7 @@
// perform new initialization from the permission name
- if (getName().indexOf(" ") == -1 && getName().indexOf("\"") == -1) { + if (getName().indexOf(' ') == -1 && getName().indexOf('\"') == -1) {
// name only has a credential class specified credentialClass = getName(); diff -r e323c74edabd src/share/classes/javax/security/sasl/Sasl.java --- a/src/share/classes/javax/security/sasl/Sasl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/security/sasl/Sasl.java Sat Apr 26 07:31:04 2014 -0300 @@ -600,7 +600,7 @@ // implementation of an algorithm. We are only interested // in entries which lead to the implementation // classes. - if (currentKey.indexOf(" ") < 0) { + if (currentKey.indexOf(' ') < 0) { String className = providers[i].getProperty(currentKey); if (!classes.contains(className)) { classes.add(className); diff -r e323c74edabd src/share/classes/javax/swing/JEditorPane.java --- a/src/share/classes/javax/swing/JEditorPane.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/swing/JEditorPane.java Sat Apr 26 07:31:04 2014 -0300 @@ -964,7 +964,7 @@ // The type could have optional info is part of it, // for example some charset info. We need to strip that // of and save it. - int parm = type.indexOf(";"); + int parm = type.indexOf(';'); if (parm > -1) { // Save the paramList. String paramList = type.substring(parm); diff -r e323c74edabd src/share/classes/javax/swing/plaf/nimbus/NimbusStyle.java --- a/src/share/classes/javax/swing/plaf/nimbus/NimbusStyle.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/swing/plaf/nimbus/NimbusStyle.java Sat Apr 26 07:31:04 2014 -0300 @@ -653,7 +653,7 @@
// strip off the prefix, if there is one. String fullKey = key.toString(); - String partialKey = fullKey.substring(fullKey.indexOf(".") + 1); + String partialKey = fullKey.substring(fullKey.indexOf('.') + 1);
Object obj = null; int xstate = getExtendedState(ctx, v); diff -r e323c74edabd src/share/classes/sun/applet/AppletClassLoader.java --- a/src/share/classes/sun/applet/AppletClassLoader.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/applet/AppletClassLoader.java Sat Apr 26 07:31:04 2014 -0300 @@ -168,7 +168,7 @@ */ protected Class findClass(String name) throws ClassNotFoundException {
- int index = name.indexOf(";"); + int index = name.indexOf(';'); String cookie = ""; if(index != -1) { cookie = name.substring(index, name.length()); @@ -608,7 +608,7 @@
// deal with URL rewriting String cookie = null; - int index = name.indexOf(";"); + int index = name.indexOf(';'); if(index != -1) { cookie = name.substring(index, name.length()); name = name.substring(0, index); diff -r e323c74edabd src/share/classes/sun/awt/FontConfiguration.java --- a/src/share/classes/sun/awt/FontConfiguration.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/awt/FontConfiguration.java Sat Apr 26 07:31:04 2014 -0300 @@ -272,9 +272,9 @@ if (configFile != null) { return configFile; } - int decimalPointIndex = osVersion.indexOf("."); + int decimalPointIndex = osVersion.indexOf('.'); if (decimalPointIndex != -1) { - osMajorVersion = osVersion.substring(0, osVersion.indexOf(".")); + osMajorVersion = osVersion.substring(0, osVersion.indexOf('.')); configFile = findImpl(baseName + "." + osName + "." + osMajorVersion); if (configFile != null) { return configFile; diff -r e323c74edabd src/share/classes/sun/font/Type1Font.java --- a/src/share/classes/sun/font/Type1Font.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/font/Type1Font.java Sat Apr 26 07:31:04 2014 -0300 @@ -492,7 +492,7 @@
//Conversion: Expand abbreviations in style portion (everything after '-'), // replace '-' with space and insert missing spaces - pos = name.indexOf("-"); + pos = name.indexOf('-'); if (pos >= 0) { res = expandName(name.substring(0, pos), false); res += " " + expandName(name.substring(pos+1), true); @@ -513,8 +513,8 @@ //Conversion: Truncate style portion (everything after '-') // and insert missing spaces
- if (tmp.indexOf("-") > 0) { - tmp = tmp.substring(0, tmp.indexOf("-")); + if (tmp.indexOf('-') > 0) { + tmp = tmp.substring(0, tmp.indexOf('-')); }
return expandName(tmp, false); diff -r e323c74edabd src/share/classes/sun/jvmstat/monitor/AbstractMonitor.java --- a/src/share/classes/sun/jvmstat/monitor/AbstractMonitor.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/jvmstat/monitor/AbstractMonitor.java Sat Apr 26 07:31:04 2014 -0300 @@ -84,7 +84,7 @@ * {@inheritDoc} */ public String getBaseName() { - int baseIndex = name.lastIndexOf(".")+1; + int baseIndex = name.lastIndexOf('.') + 1; return name.substring(baseIndex); }
diff -r e323c74edabd src/share/classes/sun/jvmstat/monitor/HostIdentifier.java --- a/src/share/classes/sun/jvmstat/monitor/HostIdentifier.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/jvmstat/monitor/HostIdentifier.java Sat Apr 26 07:31:04 2014 -0300 @@ -138,8 +138,8 @@ String frag = u.getFragment(); URI u2 = null;
- int c1index = uriString.indexOf(":"); - int c2index = uriString.lastIndexOf(":"); + int c1index = uriString.indexOf(':'); + int c2index = uriString.lastIndexOf(':'); if (c2index != c1index) { /* * this is the scheme:hostname:port case. Attempt to diff -r e323c74edabd src/share/classes/sun/management/snmp/jvminstr/NotificationTargetImpl.java
--- a/src/share/classes/sun/management/snmp/jvminstr/NotificationTargetImpl.java
Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/management/snmp/jvminstr/NotificationTargetImpl.java
Sat Apr 26 07:31:04 2014 -0300 @@ -70,8 +70,8 @@
String addrStr; if (target.startsWith("[")) { - final int index = target.indexOf("]"); - final int index2 = target.lastIndexOf(":"); + final int index = target.indexOf(']'); + final int index2 = target.lastIndexOf(':'); if(index == -1) throw new IllegalArgumentException("Host starts with [ but " + "does not end with ]"); @@ -85,8 +85,8 @@ if (addrStr.startsWith("[")) throw new IllegalArgumentException("More than one [[...]]"); } else { - final int index = target.indexOf(":"); - final int index2 = target.lastIndexOf(":"); + final int index = target.indexOf(':'); + final int index2 = target.lastIndexOf(':'); if(index == -1) throw new IllegalArgumentException("Missing port separator \":\""); addrStr = target.substring(0, index); @@ -98,7 +98,7 @@ address = InetAddress.getByName(addrStr);
//THE CHECK SHOULD BE STRONGER!!! - final int index = target.lastIndexOf(":"); + final int index = target.lastIndexOf(':');
community = target.substring(index + 1, target.length());
diff -r e323c74edabd src/share/classes/sun/misc/ExtensionInfo.java --- a/src/share/classes/sun/misc/ExtensionInfo.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/ExtensionInfo.java Sat Apr 26 07:31:04 2014 -0300 @@ -273,8 +273,8 @@ else { // Look for index of "." in the string - int sIdx = source.indexOf("."); - int tIdx = target.indexOf("."); + int sIdx = source.indexOf('.'); + int tIdx = target.indexOf('.');
if (sIdx == -1) sIdx = source.length() - 1; @@ -304,10 +304,10 @@ String versionError = mf.format(args);
// Look for "-" for pre-release - int prIndex = token.indexOf("-"); + int prIndex = token.indexOf('-');
// Look for "_" for patch release - int patchIndex = token.indexOf("_"); + int patchIndex = token.indexOf('_');
if (prIndex == -1 && patchIndex == -1) { diff -r e323c74edabd src/share/classes/sun/misc/JarIndex.java --- a/src/share/classes/sun/misc/JarIndex.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/JarIndex.java Sat Apr 26 07:31:04 2014 -0300 @@ -172,7 +172,7 @@ if ((jarFiles = indexMap.get(fileName)) == null) { /* try the package name again */ int pos; - if((pos = fileName.lastIndexOf("/")) != -1) { + if((pos = fileName.lastIndexOf('/')) != -1) { jarFiles = indexMap.get(fileName.substring(0, pos)); } } @@ -195,7 +195,7 @@ public void add(String fileName, String jarName) { String packageName; int pos; - if((pos = fileName.lastIndexOf("/")) != -1) { + if((pos = fileName.lastIndexOf('/')) != -1) { packageName = fileName.substring(0, pos); } else { packageName = fileName; diff -r e323c74edabd src/share/classes/sun/misc/URLClassPath.java --- a/src/share/classes/sun/misc/URLClassPath.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/misc/URLClassPath.java Sat Apr 26 07:31:04 2014 -0300 @@ -793,7 +793,7 @@ boolean validIndex(final String name) { String packageName = name; int pos; - if((pos = name.lastIndexOf("/")) != -1) { + if((pos = name.lastIndexOf('/')) != -1) { packageName = name.substring(0, pos); }
@@ -803,7 +803,7 @@ while (enum_.hasMoreElements()) { entry = enum_.nextElement(); entryName = entry.getName(); - if((pos = entryName.lastIndexOf("/")) != -1) + if((pos = entryName.lastIndexOf('/')) != -1) entryName = entryName.substring(0, pos); if (entryName.equals(packageName)) { return true; @@ -900,7 +900,7 @@ */ JarIndex newIndex = newLoader.getIndex(); if(newIndex != null) { - int pos = jarName.lastIndexOf("/"); + int pos = jarName.lastIndexOf('/'); newIndex.merge(this.index, (pos == -1 ? null : jarName.substring(0, pos + 1))); } diff -r e323c74edabd src/share/classes/sun/net/ftp/impl/FtpClient.java --- a/src/share/classes/sun/net/ftp/impl/FtpClient.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/net/ftp/impl/FtpClient.java Sat Apr 26 07:31:04 2014 -0300 @@ -259,7 +259,7 @@ d = null; } if (d != null && time != null) { - int c = time.indexOf(":"); + int c = time.indexOf(':'); now.setTime(d); now.set(Calendar.HOUR, Integer.parseInt(time.substring(0, c))); now.set(Calendar.MINUTE, Integer.parseInt(time.substring(c + 1))); @@ -295,7 +295,7 @@
public FtpDirEntry parseLine(String line) { String name = null; - int i = line.lastIndexOf(";"); + int i = line.lastIndexOf(';'); if (i > 0) { name = line.substring(i + 1).trim(); line = line.substring(0, i); @@ -306,7 +306,7 @@ FtpDirEntry file = new FtpDirEntry(name); while (!line.isEmpty()) { String s; - i = line.indexOf(";"); + i = line.indexOf(';'); if (i > 0) { s = line.substring(0, i); line = line.substring(i + 1); @@ -314,7 +314,7 @@ s = line; line = ""; } - i = s.indexOf("="); + i = s.indexOf('='); if (i > 0) { String fact = s.substring(0, i); String value = s.substring(i + 1); diff -r e323c74edabd src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java --- a/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/net/spi/nameservice/dns/DNSNameService.java Sat Apr 26 07:31:04 2014 -0300 @@ -325,7 +325,7 @@ while (i.hasNext()) { String parentDomain = i.next(); int start = 0; - while ((start = parentDomain.indexOf(".")) != -1 + while ((start = parentDomain.indexOf('.')) != -1 && start < parentDomain.length() -1) { try { results = resolve(ctx, host+"."+parentDomain, ids, 0); diff -r e323c74edabd src/share/classes/sun/net/util/IPAddressUtil.java --- a/src/share/classes/sun/net/util/IPAddressUtil.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/net/util/IPAddressUtil.java Sat Apr 26 07:31:04 2014 -0300 @@ -149,7 +149,7 @@ byte[] dst = new byte[INADDR16SZ];
int srcb_length = srcb.length; - int pc = src.indexOf ("%"); + int pc = src.indexOf ('%'); if (pc == srcb_length -1) { return null; } diff -r e323c74edabd src/share/classes/sun/net/www/ParseUtil.java --- a/src/share/classes/sun/net/www/ParseUtil.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/net/www/ParseUtil.java Sat Apr 26 07:31:04 2014 -0300 @@ -356,8 +356,8 @@ * because we must not quote a literal IPv6 address */ if (opaquePart.startsWith("//[")) { - int end = opaquePart.indexOf("]"); - if (end != -1 && opaquePart.indexOf(":")!=-1) { + int end = opaquePart.indexOf(']'); + if (end != -1 && opaquePart.indexOf(':')!=-1) { String doquote, dontquote; if (end == opaquePart.length()) { dontquote = opaquePart; @@ -408,8 +408,8 @@ } else if (authority != null) { sb.append("//"); if (authority.startsWith("[")) { - int end = authority.indexOf("]"); - if (end != -1 && authority.indexOf(":")!=-1) { + int end = authority.indexOf(']'); + if (end != -1 && authority.indexOf(':')!=-1) { String doquote, dontquote; if (end == authority.length()) { dontquote = authority; diff -r e323c74edabd src/share/classes/sun/reflect/misc/ReflectUtil.java --- a/src/share/classes/sun/reflect/misc/ReflectUtil.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/reflect/misc/ReflectUtil.java Sat Apr 26 07:31:04 2014 -0300 @@ -341,6 +341,6 @@ * (not to be confused with a Java Language anonymous inner class). */ public static boolean isVMAnonymousClass(Class<?> cls) { - return cls.getName().indexOf("/") > -1; + return cls.getName().indexOf('/') > -1; } } diff -r e323c74edabd src/share/classes/sun/rmi/runtime/Log.java --- a/src/share/classes/sun/rmi/runtime/Log.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/rmi/runtime/Log.java Sat Apr 26 07:31:04 2014 -0300 @@ -434,7 +434,7 @@ * Mimic old log messages that only contain unqualified names. */ private static String unqualifiedName(String name) { - int lastDot = name.lastIndexOf("."); + int lastDot = name.lastIndexOf('.'); if (lastDot >= 0) { name = name.substring(lastDot + 1); } diff -r e323c74edabd src/share/classes/sun/rmi/transport/proxy/CGIHandler.java --- a/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/rmi/transport/proxy/CGIHandler.java Sat Apr 26 07:31:04 2014 -0300 @@ -141,7 +141,7 @@ { try { String command, param; - int delim = QueryString.indexOf("="); + int delim = QueryString.indexOf('='); if (delim == -1) { command = QueryString; param = ""; diff -r e323c74edabd src/share/classes/sun/security/jgss/wrapper/Krb5Util.java --- a/src/share/classes/sun/security/jgss/wrapper/Krb5Util.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/jgss/wrapper/Krb5Util.java Sat Apr 26 07:31:04 2014 -0300 @@ -39,7 +39,7 @@ static String getTGSName(GSSNameElement name) throws GSSException { String krbPrinc = name.getKrbName(); - int atIndex = krbPrinc.indexOf("@"); + int atIndex = krbPrinc.indexOf('@'); String realm = krbPrinc.substring(atIndex + 1); StringBuffer buf = new StringBuffer("krbtgt/"); buf.append(realm).append('@').append(realm); diff -r e323c74edabd src/share/classes/sun/security/provider/PolicyFile.java --- a/src/share/classes/sun/security/provider/PolicyFile.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/provider/PolicyFile.java Sat Apr 26 07:31:04 2014 -0300 @@ -1856,7 +1856,7 @@ int colonIndex; String prefix = value; String suffix; - if ((colonIndex = value.indexOf(":")) != -1) { + if ((colonIndex = value.indexOf(':')) != -1) { prefix = value.substring(0, colonIndex); }
diff -r e323c74edabd src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java --- a/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/ssl/SunX509KeyManagerImpl.java Sat Apr 26 07:31:04 2014 -0300 @@ -338,7 +338,7 @@ } String sigType; if (keyType.contains("_")) { - int k = keyType.indexOf("_"); + int k = keyType.indexOf('_'); sigType = keyType.substring(k + 1); keyType = keyType.substring(0, k); } else { diff -r e323c74edabd src/share/classes/sun/security/ssl/X509KeyManagerImpl.java --- a/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/ssl/X509KeyManagerImpl.java Sat Apr 26 07:31:04 2014 -0300 @@ -302,7 +302,7 @@ final String sigKeyAlgorithm;
KeyType(String algorithm) { - int k = algorithm.indexOf("_"); + int k = algorithm.indexOf('_'); if (k == -1) { keyAlgorithm = algorithm; sigKeyAlgorithm = null; diff -r e323c74edabd src/share/classes/sun/security/util/HostnameChecker.java --- a/src/share/classes/sun/security/util/HostnameChecker.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/util/HostnameChecker.java Sat Apr 26 07:31:04 2014 -0300 @@ -300,8 +300,8 @@ template = template.toLowerCase(Locale.ENGLISH);
// Retreive leftmost component - int templateIdx = template.indexOf("."); - int nameIdx = name.indexOf("."); + int templateIdx = template.indexOf('.'); + int nameIdx = name.indexOf('.');
if (templateIdx == -1) templateIdx = template.length(); @@ -326,7 +326,7 @@ */ private static boolean matchWildCards(String name, String template) {
- int wildcardIdx = template.indexOf("*"); + int wildcardIdx = template.indexOf('*'); if (wildcardIdx == -1) return name.equals(template);
@@ -349,7 +349,7 @@
// update the match scope name = name.substring(beforeStartIdx + beforeWildcard.length()); - wildcardIdx = afterWildcard.indexOf("*"); + wildcardIdx = afterWildcard.indexOf('*'); } return name.endsWith(afterWildcard); } diff -r e323c74edabd src/share/classes/sun/security/util/SignatureFileVerifier.java --- a/src/share/classes/sun/security/util/SignatureFileVerifier.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/util/SignatureFileVerifier.java Sat Apr 26 07:31:04 2014 -0300 @@ -98,7 +98,7 @@ } finally { Providers.stopJarVerification(obj); } - this.name = name.substring(0, name.lastIndexOf(".")) + this.name = name.substring(0, name.lastIndexOf('.'))
.toUpperCase(Locale.ENGLISH); this.md = md; this.signerCache = signerCache; diff -r e323c74edabd src/share/classes/sun/security/x509/CRLExtensions.java --- a/src/share/classes/sun/security/x509/CRLExtensions.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/security/x509/CRLExtensions.java Sat Apr 26 07:31:04 2014 -0300 @@ -185,7 +185,7 @@ String name; String id = attr.getPrefix(); if (id.equalsIgnoreCase(X509CertImpl.NAME)) { // fully qualified - int index = alias.lastIndexOf("."); + int index = alias.lastIndexOf('.'); name = alias.substring(index + 1); } else name = alias; diff -r e323c74edabd src/share/classes/sun/tools/jconsole/ConnectDialog.java --- a/src/share/classes/sun/tools/jconsole/ConnectDialog.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/ConnectDialog.java Sat Apr 26 07:31:04 2014 -0300 @@ -325,7 +325,7 @@ } else { String host = remoteTF.getText().trim(); String port = "0"; - int index = host.lastIndexOf(":"); + int index = host.lastIndexOf(':'); if (index >= 0) { port = host.substring(index + 1); host = host.substring(0, index); diff -r e323c74edabd src/share/classes/sun/tools/jconsole/inspector/Utils.java --- a/src/share/classes/sun/tools/jconsole/inspector/Utils.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/inspector/Utils.java Sat Apr 26 07:31:04 2014 -0300 @@ -210,7 +210,7 @@ public static String getArrayClassName(String name) { String className = null; if (name.startsWith("[")) { - int index = name.lastIndexOf("["); + int index = name.lastIndexOf('['); className = name.substring(index, name.length()); if (className.startsWith("[L")) { className = className.substring(2, className.length() - 1); @@ -241,7 +241,7 @@ if (className == null) { return name; } - int index = name.lastIndexOf("["); + int index = name.lastIndexOf('['); StringBuilder brackets = new StringBuilder(className); for (int i = 0; i <= index; i++) { brackets.append("[]"); diff -r e323c74edabd src/share/classes/sun/tools/jconsole/inspector/XOperations.java --- a/src/share/classes/sun/tools/jconsole/inspector/XOperations.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/inspector/XOperations.java Sat Apr 26 07:31:04 2014 -0300 @@ -112,7 +112,7 @@ if (methodLabel.getText().length() > 20) { methodLabel.setText(methodLabel.getText(). substring(methodLabel.getText(). - lastIndexOf(".") + 1, + lastIndexOf('.') + 1, methodLabel.getText().length())); }
diff -r e323c74edabd src/share/classes/sun/tools/jconsole/inspector/XTree.java --- a/src/share/classes/sun/tools/jconsole/inspector/XTree.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/sun/tools/jconsole/inspector/XTree.java Sat Apr 26 07:31:04 2014 -0300 @@ -475,7 +475,7 @@ private static Map<String, String> extractKeyValuePairs( String props, ObjectName mbean) { Map<String, String> map = new LinkedHashMap<String, String>(); - int eq = props.indexOf("="); + int eq = props.indexOf('='); while (eq != -1) { String key = props.substring(0, eq); String value = mbean.getKeyProperty(key); @@ -484,7 +484,7 @@ if (props.startsWith(",")) { props = props.substring(1); } - eq = props.indexOf("="); + eq = props.indexOf('='); } return map; } @@ -821,7 +821,7 @@ }
private void buildKeyValue() { - int index = tokenValue.indexOf("="); + int index = tokenValue.indexOf('='); if (index < 0) { key = tokenValue; value = tokenValue;
On Apr 27, 2014, at 2:22 PM, Claes Redestad <claes.redestad@oracle.com> wrote:
Possibly a few bytes in static class footprint, sure. Maybe this is something javac should optimize (javap on some trivial examples suggests this doesn't happen) rather than trying to root out all suboptimal cases, especially since there are bound to be a lot more code out there using similar patterns?
While javac can and perhaps should be smarter in certain cases like this i am still supportive of this change in the JDK esp. so if it is something trivially detectable by IDEs; it's low-hanging fruit. Paul.
On Apr 26, 2014, at 12:56 PM, Otávio Gonçalves de Santana <otaviojava@java.net> wrote:
When a String has length just one, could be replaced by equivalent character literals, gaining some performance enhancement.
I found 107 changes.
This looks good to me, just one small issue: --- a/src/share/classes/javax/security/auth/PrivateCredentialPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/security/auth/PrivateCredentialPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -495,7 +495,7 @@ // perform new initialization from the permission name - if (getName().indexOf(" ") == -1 && getName().indexOf("\"") == -1) { + if (getName().indexOf(' ') == -1 && getName().indexOf('\"') == -1) { You no longer need to escape the double quote. Can someone else sponsor this? unfortunately i do not have the time at the moment. Paul.
Can anyone help me as sponsor? On May 12, 2014 1:57 PM, "Paul Sandoz" <paul.sandoz@oracle.com> wrote:
On Apr 26, 2014, at 12:56 PM, Otávio Gonçalves de Santana < otaviojava@java.net> wrote:
When a String has length just one, could be replaced by equivalent character literals, gaining some performance enhancement.
I found 107 changes.
This looks good to me, just one small issue:
--- a/src/share/classes/javax/security/auth/PrivateCredentialPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/security/auth/PrivateCredentialPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -495,7 +495,7 @@
// perform new initialization from the permission name
- if (getName().indexOf(" ") == -1 && getName().indexOf("\"") == -1) { + if (getName().indexOf(' ') == -1 && getName().indexOf('\"') == -1) {
You no longer need to escape the double quote.
Can someone else sponsor this? unfortunately i do not have the time at the moment.
Paul.
Can anyone help me as sponsor? On May 27, 2014 2:17 PM, "Otávio Gonçalves de Santana" < otaviopolianasantana@gmail.com> wrote:
Can anyone help me as sponsor? On May 12, 2014 1:57 PM, "Paul Sandoz" <paul.sandoz@oracle.com> wrote:
On Apr 26, 2014, at 12:56 PM, Otávio Gonçalves de Santana < otaviojava@java.net> wrote:
When a String has length just one, could be replaced by equivalent character literals, gaining some performance enhancement.
I found 107 changes.
This looks good to me, just one small issue:
--- a/src/share/classes/javax/security/auth/PrivateCredentialPermission.java Wed Apr 23 11:35:40 2014 -0700 +++ b/src/share/classes/javax/security/auth/PrivateCredentialPermission.java Sat Apr 26 07:31:04 2014 -0300 @@ -495,7 +495,7 @@
// perform new initialization from the permission name
- if (getName().indexOf(" ") == -1 && getName().indexOf("\"") == -1) { + if (getName().indexOf(' ') == -1 && getName().indexOf('\"') == -1) {
You no longer need to escape the double quote.
Can someone else sponsor this? unfortunately i do not have the time at the moment.
Paul.
On 2015-01-25 23:30, Otávio Gonçalves de Santana wrote:
Can anyone help me as sponsor?
Sure, why not. I'll remove the escaped double-quote as per Paul's request and run it through a quick sanity test. Which e-mail do you want to get credited? /Claes
Thank you. My email: otaviojava@java.net On Sun, Jan 25, 2015 at 8:47 PM, Claes Redestad <claes.redestad@oracle.com> wrote:
On 2015-01-25 23:30, Otávio Gonçalves de Santana wrote:
Can anyone help me as sponsor?
Sure, why not.
I'll remove the escaped double-quote as per Paul's request and run it through a quick sanity test. Which e-mail do you want to get credited?
/Claes
-- Otávio Gonçalves de Santana blog: http://otaviosantana.blogspot.com.br/ twitter: http://twitter.com/otaviojava site: *http://about.me/otaviojava <http://about.me/otaviojava>* 55 (11) 98255-3513
On the same topic but still a bit different shouldn't indexOf(String) check for the size and call indexOf(char) when the length is 1, same for indexOf(String,int)? Tom On 26.04.14 11:56, Otávio Gonçalves de Santana wrote:
When a String has length just one, could be replaced by equivalent character literals, gaining some performance enhancement.
participants (6)
-
Claes Redestad
-
David Holmes
-
Otávio Gonçalves de Santana
-
Otávio Gonçalves de Santana
-
Paul Sandoz
-
Tom Schindl