A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 钟成军 高级黑马   /  2012-6-17 00:46  /  2198 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 钟成军 于 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;求大神解释一下,谢了!

7 个回复

倒序浏览
int x = 10;
              int y = 20 ;
              String str = "x"+"+"+"y"+"=";
              System.out.println(str+(x+y));//你要是不加()的话就会向上转成字符串相当于字符串的拼接

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
张頔 发表于 2012-6-17 00:52
int x = 10;
              int y = 20 ;
              String str = "x"+"+"+"y"+"=";

加了()就不会拼接吗?它们向上转型发和在什么时候?
回复 使用道具 举报
加了()一样会拼接,不过是先运算出()中的运算结果,再用结果和str拼接,这不是你想要的?
回复 使用道具 举报
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运算。。。。。。。。。。
回复 使用道具 举报
应该给x+y加个括号,小括号(    )的优先级高于其他运算符,加上括号之后,就先计算完x+y的结果之后,再与str拼接成字符串,如果不加括号,x和y不经计算就都和str拼接成字符串。
回复 使用道具 举报
胡大强 发表于 2012-6-17 01:20
class T {
public static void main(String [] args){
int x = 10;

恩,知道了,谢谢!
回复 使用道具 举报
问题已解决!

怎么在题头加“已解决”标志?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马