---
title: "charAt() and substring method in java"  
description: "charAt() and substring method in java"  
author: "Anonymous User"  
published: 2014-10-10  
updated: 2014-10-10  
canonical: https://www.mindstick.com/forum/2358/charat-and-substring-method-in-java  
category: "java"  
tags: ["java", "oops"]  
reading_time: 2 minutes  

---

# charAt() and substring method in java

I want to go through each [character](https://www.mindstick.com/articles/23551/an-investigate-distinctive-seafood-restaurant-for-your-image-stamp-character) in a [String](https://www.mindstick.com/articles/1527/string-split-in-c-sharp) and pass each character of the String as a String to another function.

```
String s = "abcdefg";for (int i = 0; i < s.length(); i++){      newFunction(s.substring(i, i + 1));}
```

or

```
String s = "abcdefg";for (int i = 0; i < s.length(); i++){       newFunction(Character.toString(s.charAt(i)));}
```

## Replies

### Reply by Anonymous User

As usual: it doesn't matter but if you insist on spending time on micro-optimization or if you really like to optimize for your very special use case, try this:

```
import org.junit.Assert;import org.junit.Test; public class StringCharTest {     //
Times:    // 1.Initialization of "s" outside the loop    // 2.Init of "s" inside the loop    // 3.newFunction() actually checks the string length,    // sothe function will not be optimized away by the hotstop compiler     @Test    // Fastest:237ms / 562ms / 2434ms    public void testCacheStrings() throws Exception {        // Cacheall possible Char strings        String[] char2string = new String[Character.MAX_VALUE];        for (char i = Character.MIN_VALUE; i < Character.MAX_VALUE; i++)
{            char2string[i] =Character.toString(i);        }         for (int x = 0; x < 10000000; x++) {            char[] s = "abcdefg".toCharArray();            for (int i = 0; i < s.length; i++) {                newFunction(char2string[s[i]]);            }        }    }     @Test    // Fast:1687ms / 1725ms / 3382ms    public void testCharToString() throws Exception {        for (int x = 0; x < 10000000; x++) {            String s = "abcdefg";            for (int i = 0; i < s.length(); i++) {                //Fast: Creates new String objects, but does not copy an array               
newFunction(Character.toString(s.charAt(i)));            }        }    }     @Test    // Very fast: 1331 ms/ 1414ms / 3190ms    public void testSubstring() throws Exception {        for (int x = 0; x < 10000000; x++) {            String s = "abcdefg";            for (int i = 0; i < s.length(); i++) {                //The fastest! Reuses the internal char array                newFunction(s.substring(i, i +1));            }        }    }     @Test    //Slowest: 2525ms / 2961ms / 4703ms    public void testNewString() throws Exception {        char[] value = new char[1];        for (int x = 0; x < 10000000; x++) {            char[] s = "abcdefg".toCharArray();            for (int i = 0; i < s.length; i++) {                value[0] = s[i];                //Slow! Copies the array                newFunction(new String(value));            }        }    }     private void newFunction(String string) {        // Do something with the one-character string        Assert.assertEquals(1, string.length());    } }
```


---

Original Source: https://www.mindstick.com/forum/2358/charat-and-substring-method-in-java

Copyright © MindStick Software Pvt. Ltd. This Markdown version is provided for developers, AI systems, and offline reading.
