Sometimes there is need to change an integer to text. I often use the following way:
"" + myNumber
But there is alternative way:
Integer.toString(myNumber)
Which one is better (performance, readability, safety)? Or are those equal?
-
4\$\begingroup\$ A very detailed answer to a very similar question on SO: stackoverflow.com/a/4105406/843804 \$\endgroup\$palacsint– palacsint2012年07月18日 17:11:41 +00:00Commented Jul 18, 2012 at 17:11
3 Answers 3
I would recommend
String.valueOf(myNumber)
This allows you to to change myNumber to another primitive type - or a Number - later.
"" + myNumber
should be avoided since :
- it produces clutter bytecode (instanciating a new StringBuffer)
- it does not convey what you wanted to do with myNumber
Integer.toString(myNumber) is the safer way because it throws a malformed exception.
Do not worry about performance at this level. There is an expression: Premature Optimization.
EDIT after comment
"3000000000" > Integer.MAX_VALUE
throw an Exception
"-2900000000" < Integer.MIN_VALUE
throw an Exception
"OO12345" throw an exception, because it begins with two O letters
, not zero.
You can also manage radix :
String intS = "010101";
System.out.format("Parsing %s gives %d, fail with \"010102\"%n",
intS,(Integer.parseInt(intS, 2)));
intS = "10CAFE8";
System.out.format("Parsing %s gives %d, fail with \"10CAGE8\"%n",
intS,(Integer.parseInt(intS, 16)));
Output :
Parsing 010101 gives 21, fail with "010102"
Parsing 10CAFE8 gives 17608680, fail with "10CAGE8"
EDIT after comment 2
Look in Effective Java and search for StringBuilder() to understant how to replace '+
' usage.
At execution time, a '+
' create something like this code :
StringBuilder sb = new StringBuilder();
sb.append(123);
sb.toString();
This code is better :
final int a = 123;
Integer.toString(a);
Look at Java code of Integer.toString(a);
In Eclipse : CTRL+rightClick
on toString()
print the Java code . Give the src.zip
path in SDK directory if it not already done.
And compare with StringBuilder.append(int);
-
5\$\begingroup\$ How can an integer be malformed? \$\endgroup\$Felix Dombek– Felix Dombek2012年07月18日 16:35:07 +00:00Commented Jul 18, 2012 at 16:35
-
\$\begingroup\$ @FelixDombek I've edited my post to give samples. \$\endgroup\$cl-r– cl-r2012年07月19日 09:57:10 +00:00Commented Jul 19, 2012 at 9:57
-
4\$\begingroup\$ Your examples are about String to Int, but the question is about Int to String. \$\endgroup\$Felix Dombek– Felix Dombek2012年07月19日 13:05:16 +00:00Commented Jul 19, 2012 at 13:05
-
\$\begingroup\$ @FelixDombek Exact, I compelte my post. Sorry not to be a good english reader. \$\endgroup\$cl-r– cl-r2012年07月20日 06:07:50 +00:00Commented Jul 20, 2012 at 6:07
-
\$\begingroup\$ @FelixDombek
Effective Java
is a reference to write good code, Is the response you needed? Many other things to know are also inside this book. \$\endgroup\$cl-r– cl-r2012年07月21日 15:50:38 +00:00Commented Jul 21, 2012 at 15:50
I would say they were equally as good. I prefer to use
Integer.toString(myNumber)
as I find it explains the transition better
-
\$\begingroup\$ haha my mistake @palacsint \$\endgroup\$IronSpoon– IronSpoon2012年07月20日 08:54:26 +00:00Commented Jul 20, 2012 at 8:54