Parenthesis can be used even there is no need to. Sometimes it can make things clearer, sometimes not.
For example 1 + 2 * 3 is the same as 1 + (2 * 3). Parenthesis, if put correctly, can be used without changing the meaning of an expression to enable someone reading the code to understand an expression, especially when the expression is much more complicated. Note that if you put the parenthesis in another way like (1 + 2) * 3, it means something different from the previous two expressions.
In your code example, that parenthesis is not necessary.
I personally wouldn't put it because it requires extra keystrokes and it can cause a human code reader to scan through that line again wondering if it's more complicated than it looks, only to find out it's not, and wasting many small packets of time. If one comes across too many such unnecessary parenthesis, one may have a tendency to gloss over significant parenthesis and misunderstand an expression later. Just my personal, subjective opinion.
String chars = (new String(ch).substring(start, start + length));
and
String chars = new String(ch).substring(start, start + length);
both mean the same thing.
so do these
String chars = ((new String(ch).substring(start, start + length)));
String chars = (((new String(ch).substring(start, start + length))));
String chars = (new String((ch)).substring(start, start + length));
String chars = (new String(ch).substring((start), start + length));
Try to see the pattern. IMO it's not a good thing to teach one to learn programming syntax intuitively via "pattern matching" though, so you should look at some java books like what SRM suggested.
Can you do this?
String (chars) = new String(ch).substring(start, start + length);
You'll probably say "no", which is correct.
But why? If you can't answer why, then it'll be good for you to find out.
(I'm not making fun of you, I just felt like typing a lot.)