Note that here this is a decode operation (reading a String that might be in fact encoded using another charset, so the usage of 

     new String(oldString in bytes, charset).

While the other one is getting a String in whatever charset and "encode" it to the new one specified as argument, so

      new String(oldString in bytes(charset))

Note this is not the same constructor.
But I may be totally wrong...