I am using a Java decompiler and it seems to give a sensible code, except that it gives strange symbols for constant integers. For example:
#int[] arr = new int['田'];
This symbol has a numeric value in U+7530. I wonder if it works to revert this symbol back to its numeric value or I can't rely on this mechanism?
My problem is that this code gives an array-out-of-bound exception, so tuning the sizes of the arrays is quite important.
At the bytecode level, local variables have no distinction between booleans, bytes, chars, shorts, and ints. Everything is just compiled to ints under the hood, with truncation instructions inserted where appropriate.
This means that the decompiler has to arbitrarily decide on which type to decompile it to (assuming there is no debug metadata). It looks like your decompiler decided to decompile the integer constant to a character constant instead.