Minor Improvement:

* Use Empty collections
* Unnecessary boxing
* Unnecessary toString
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/ContentType.java b/httpcore5/src/main/java/org/apache/hc/core5/http/ContentType.java
index ac34ee4..e2bd0f6 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/ContentType.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/ContentType.java
@@ -105,6 +105,11 @@
     public static final ContentType WILDCARD = create(
             "*/*", (Charset) null);
 
+    /**
+     * An empty immutable {@code NameValuePair} array.
+     */
+    private static final NameValuePair[] EMPTY_NAME_VALUE_PAIR_ARRAY = new NameValuePair[0];
+
 
     /**
      * @deprecated To be removed in 6.0
@@ -411,7 +416,7 @@
         for (final Map.Entry<String, String> entry: paramMap.entrySet()) {
             newParams.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
         }
-        return create(this.getMimeType(), newParams.toArray(new NameValuePair[newParams.size()]), true);
+        return create(this.getMimeType(), newParams.toArray(EMPTY_NAME_VALUE_PAIR_ARRAY), true);
     }
 
     public boolean isSameMimeType(final ContentType contentType) {
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/HttpHost.java b/httpcore5/src/main/java/org/apache/hc/core5/http/HttpHost.java
index a58f440..40a0a47 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/HttpHost.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/HttpHost.java
@@ -335,7 +335,7 @@
         buffer.append(this.hostname);
         if (this.port != -1) {
             buffer.append(':');
-            buffer.append(Integer.toString(this.port));
+            buffer.append(this.port);
         }
         return buffer.toString();
     }
@@ -352,7 +352,7 @@
             final StringBuilder buffer = new StringBuilder(this.hostname.length() + 6);
             buffer.append(this.hostname);
             buffer.append(":");
-            buffer.append(Integer.toString(this.port));
+            buffer.append(this.port);
             return buffer.toString();
         }
         return this.hostname;
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/ProtocolVersion.java b/httpcore5/src/main/java/org/apache/hc/core5/http/ProtocolVersion.java
index 37f4750..572bbc5 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/ProtocolVersion.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/ProtocolVersion.java
@@ -161,9 +161,9 @@
         final StringBuilder buffer = new StringBuilder();
         buffer.append(this.protocol);
         buffer.append('/');
-        buffer.append(Integer.toString(this.major));
+        buffer.append(this.major);
         buffer.append('.');
-        buffer.append(Integer.toString(this.minor));
+        buffer.append(this.minor);
         return buffer.toString();
     }
 
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHeaderValueParser.java b/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHeaderValueParser.java
index b1a063c..4dcb3f8 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHeaderValueParser.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/message/BasicHeaderValueParser.java
@@ -62,6 +62,16 @@
         this.tokenizer = Tokenizer.INSTANCE;
     }
 
+    /**
+     * An empty immutable {@code HeaderElement} array.
+     */
+    private static final HeaderElement[] EMPTY_HEADER_ELEMENT_ARRAY = new HeaderElement[0];
+
+    /**
+     * An empty immutable {@code NameValuePair} array.
+     */
+    private static final NameValuePair[] EMPTY_NAME_VALUE_ARRAY = new NameValuePair[0];
+
     @Override
     public HeaderElement[] parseElements(final CharSequence buffer, final ParserCursor cursor) {
         Args.notNull(buffer, "Char sequence");
@@ -73,7 +83,7 @@
                 elements.add(element);
             }
         }
-        return elements.toArray(new HeaderElement[elements.size()]);
+        return elements.toArray(EMPTY_HEADER_ELEMENT_ARRAY);
     }
 
     @Override
@@ -105,7 +115,7 @@
                 break;
             }
         }
-        return params.toArray(new NameValuePair[params.size()]);
+        return params.toArray(EMPTY_NAME_VALUE_ARRAY);
     }
 
     @Override
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/message/HeaderGroup.java b/httpcore5/src/main/java/org/apache/hc/core5/http/message/HeaderGroup.java
index 3cfb64f..fb39384 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/message/HeaderGroup.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/message/HeaderGroup.java
@@ -55,6 +55,7 @@
     /** The list of headers for this group, in the order in which they were added */
     private final List<Header> headers;
 
+
     /**
      * Constructor for HeaderGroup.
      */
@@ -220,7 +221,7 @@
                 headersFound.add(header);
             }
         }
-        return headersFound != null ? headersFound.toArray(new Header[headersFound.size()]) : EMPTY;
+        return headersFound != null ? headersFound.toArray(EMPTY) : EMPTY;
     }
 
     /**
@@ -296,7 +297,7 @@
      */
     @Override
     public Header[] getHeaders() {
-        return headers.toArray(new Header[headers.size()]);
+        return headers.toArray(EMPTY);
     }
 
     /**
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/message/MessageSupport.java b/httpcore5/src/main/java/org/apache/hc/core5/http/message/MessageSupport.java
index 263cc2d..85c0e58 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/message/MessageSupport.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/message/MessageSupport.java
@@ -54,6 +54,11 @@
  */
 public class MessageSupport {
 
+    /**
+     * An empty immutable {@code String} array.
+     */
+    private static final String[] EMPTY_STRING_ARRAY = new String[0];
+
     private MessageSupport() {
         // Do not allow utility class to be instantiated.
     }
@@ -74,7 +79,7 @@
         if (tokens == null || tokens.isEmpty()) {
             return;
         }
-        formatTokens(dst, tokens.toArray(new String[tokens.size()]));
+        formatTokens(dst, tokens.toArray(EMPTY_STRING_ARRAY));
     }
 
     public static Header format(final String name, final Set<String> tokens) {
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/UriPatternMatcher.java b/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/UriPatternMatcher.java
index b7b7577..97d8c8f 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/UriPatternMatcher.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/UriPatternMatcher.java
@@ -148,7 +148,7 @@
             return true;
         }
         return (pattern.endsWith("*") && path.startsWith(pattern.substring(0, pattern.length() - 1)))
-                || (pattern.startsWith("*") && path.endsWith(pattern.substring(1, pattern.length())));
+                || (pattern.startsWith("*") && path.endsWith(pattern.substring(1)));
     }
 
     @Override
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/UriPatternOrderedMatcher.java b/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/UriPatternOrderedMatcher.java
index a9d0883..15fb5cd 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/UriPatternOrderedMatcher.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/protocol/UriPatternOrderedMatcher.java
@@ -136,7 +136,7 @@
             return true;
         }
         return (pattern.endsWith("*") && path.startsWith(pattern.substring(0, pattern.length() - 1)))
-                || (pattern.startsWith("*") && path.endsWith(pattern.substring(1, pattern.length())));
+                || (pattern.startsWith("*") && path.endsWith(pattern.substring(1)));
     }
 
     @Override
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/ssl/SSLContextBuilder.java b/httpcore5/src/main/java/org/apache/hc/core5/ssl/SSLContextBuilder.java
index 1a2b69d..6f8c478 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/ssl/SSLContextBuilder.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/ssl/SSLContextBuilder.java
@@ -89,6 +89,18 @@
     private SecureRandom secureRandom;
     private Provider provider;
 
+    /**
+     * An empty immutable {@code KeyManager} array.
+     */
+    private static final KeyManager[] EMPTY_KEY_MANAGER_ARRAY = new KeyManager[0];
+
+    /**
+     * An empty immutable {@code TrustManager} array.
+     */
+    private static final TrustManager[] EMPTY_TRUST_MANAGER_ARRAY = new TrustManager[0];
+
+
+
     public static SSLContextBuilder create() {
         return new SSLContextBuilder();
     }
@@ -338,8 +350,8 @@
             final Collection<TrustManager> trustManagers,
             final SecureRandom secureRandom) throws KeyManagementException {
         sslContext.init(
-                !keyManagers.isEmpty() ? keyManagers.toArray(new KeyManager[keyManagers.size()]) : null,
-                !trustManagers.isEmpty() ? trustManagers.toArray(new TrustManager[trustManagers.size()]) : null,
+                !keyManagers.isEmpty() ? keyManagers.toArray(EMPTY_KEY_MANAGER_ARRAY) : null,
+                !trustManagers.isEmpty() ? trustManagers.toArray(EMPTY_TRUST_MANAGER_ARRAY) : null,
                 secureRandom);
     }
 
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/util/Tokenizer.java b/httpcore5/src/main/java/org/apache/hc/core5/util/Tokenizer.java
index ee66fd3..18cf335 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/util/Tokenizer.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/util/Tokenizer.java
@@ -89,11 +89,11 @@
         public String toString() {
             final StringBuilder buffer = new StringBuilder();
             buffer.append('[');
-            buffer.append(Integer.toString(this.lowerBound));
+            buffer.append(this.lowerBound);
             buffer.append('>');
-            buffer.append(Integer.toString(this.pos));
+            buffer.append(this.pos);
             buffer.append('>');
-            buffer.append(Integer.toString(this.upperBound));
+            buffer.append(this.upperBound);
             buffer.append(']');
             return buffer.toString();
         }
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/util/VersionInfo.java b/httpcore5/src/main/java/org/apache/hc/core5/util/VersionInfo.java
index bf7636f..f438d2c 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/util/VersionInfo.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/util/VersionInfo.java
@@ -80,6 +80,11 @@
     /** The classloader from which the version info was obtained. */
     private final String infoClassloader;
 
+    /**
+     * An empty immutable {@code VersionInfo} array.
+     */
+    private static final VersionInfo[] EMPTY_VERSION_INFO_ARRAY = new VersionInfo[0];
+
 
     /**
      * Instantiates version information.
@@ -208,7 +213,7 @@
             }
         }
 
-        return vil.toArray(new VersionInfo[vil.size()]);
+        return vil.toArray(EMPTY_VERSION_INFO_ARRAY);
     }