黑马程序员技术交流社区

标题: 一个String的小问题 [打印本页]

作者: 钟成军    时间: 2012-6-17 00:46
标题: 一个String的小问题
本帖最后由 钟成军 于 2012-6-17 01:52 编辑

代码如下:
ublic class Test {
public static void main(String [] args){
int x = 10;
int y = 20 ;
String str = "x"+"+"+"y"+"=";
System.out.println(str+x+y);
}
}

这个我认为的输出结果是:x+y=30;可是输出结果为什么是x+y=1020;求大神解释一下,谢了!
作者: 张頔    时间: 2012-6-17 00:52
int x = 10;
              int y = 20 ;
              String str = "x"+"+"+"y"+"=";
              System.out.println(str+(x+y));//你要是不加()的话就会向上转成字符串相当于字符串的拼接
作者: 钟成军    时间: 2012-6-17 00:55
张頔 发表于 2012-6-17 00:52
int x = 10;
              int y = 20 ;
              String str = "x"+"+"+"y"+"=";

加了()就不会拼接吗?它们向上转型发和在什么时候?
作者: 潘东升    时间: 2012-6-17 01:19
加了()一样会拼接,不过是先运算出()中的运算结果,再用结果和str拼接,这不是你想要的?
作者: 胡大强    时间: 2012-6-17 01:20
class T {
public static void main(String [] args){
int x = 10;
int y = 20 ;
String str = "x"+"+"+"y"+"=";
System.out.println(str+(x+y)); //////输出x+y=30
}
}

应该将x+y加个括号~!不然输出就是x和y。。。因为java对于常量字符串之间的拼接,使用“+”;你的System.out.println(str+x+y);相当于输出str,x,y。。。。加括号后,就是输出str和x+y。。。。就会对x+y运算。。。。。。。。。。

作者: 李伟    时间: 2012-6-17 01:32
应该给x+y加个括号,小括号(    )的优先级高于其他运算符,加上括号之后,就先计算完x+y的结果之后,再与str拼接成字符串,如果不加括号,x和y不经计算就都和str拼接成字符串。
作者: 钟成军    时间: 2012-6-17 01:48
胡大强 发表于 2012-6-17 01:20
class T {
public static void main(String [] args){
int x = 10;

恩,知道了,谢谢!
作者: 钟成军    时间: 2012-6-17 01:50
问题已解决!

怎么在题头加“已解决”标志?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2