inefficient indexof when String has one length

Claes Redestad claes.redestad at oracle.com
Sat Apr 26 17:13:30 UTC 2014


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;
>




More information about the core-libs-dev mailing list