请教java语言中Long数据类型为什么不能自动转为String,求详解。

按java的基本类型自动转换规则,取值范围窄的可以自动转换为宽的,如:char可以转换为int、string等,为什么long不能自动转为string呢,毕竟无论整型取值范围再长也能用string类型表示吧。求教大神详细解释。

你说的是这个么?
String str= 10L +"" ;
String str2 = new Long(10).toString();
System.out.println(str);
System.out.println(str2);
char c = 'A';
int  i = c ;
System.out.println(c);
System.out.println(i);

运行结果:
10
10
A
65
char可以转int是因为char存放的也是数字值,只不过是字符的编码值,而不是真正的代数数字值。
String 数据实际就是一个char的数组,这个看String的源码定义就知道的。构造函数里也能看到。
int 转String,跟long一样的都是调用基本类型的类的toString方法或者调用String的ValueOf方法的。

 包括double,float,boolean等都是一样的道理。

追问

你好,我说的是自动转换,不是显式地调用String的方法啊,比如:long t1=10l; String t2 = "";
t2 = t1;这样是不行的,但是 char t1 = 'a'; int t2 = t1; 编译器是自动给你把char型转换为int型的了。

追答

char t1 = 'a'; int t2 = t1; 这个你就理解错了。
char t1 = 'a' ;
int t2 = t1; 这个转换并不是把a转成数字,例如:
char t1 = '1' ;
int t2 = t1; 这个得到的不是1,因为这个根本就不是类型转换。是值的另一种表示,就像是15的十进制是15,十六进制是F。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-03
Long a = 123;String stra = String .valueOf(a);
第2个回答  2014-01-03

什么叫不能转换?

Long lg = 1l;
long lg2 = 2L;
String s = lg.toString();
System.out.println(s);
s = ""+lg2;
System.out.println(s);
s = String.valueOf(lg);
System.out.println(s);

相似回答