黑马程序员技术交流社区
标题:
关于打印结果的转换问题
[打印本页]
作者:
JYcainiao
时间:
2015-10-17 21:50
标题:
关于打印结果的转换问题
本帖最后由 JYcainiao 于 2015-10-17 21:51 编辑
class java {
public static void main(String[] args) {
System.out.print("1+2+\"java\"+3+4 打印结果为");
System.out.println(1+2+"java"+3+4);
System.out.print("1+2+\"java\"+(3+4)打印结果为");
System.out.println(1+2+"java"+(3+4));
}
}
求大神解答啊,打印结果是怎么转换的?强制还是自动?请详细说明
我自己的理解是1+2前面没有类型,+ 是运算符,默认为int 进行求和,碰到字符串之后,自动转换为字符串类型,后面的+3+4 是被 + 连接起来的,这里默认为 连接符 第二个我在3+4小括号一下,应该属于强转吧
不知道我的理解对不对
作者:
JYcainiao
时间:
2015-10-18 18:03
求解答啊
作者:
朦胧色彩
时间:
2015-10-18 18:42
1+2+"java"+(3+4) // 应该是加了括号之后优先计算3+4 ,由于3和4默认为int 那么+是运算符
1+2+"java"+7 // 然后按照顺序运算,前面的1和2也默认是int类型,一样的相加操作
3+"java"+7 // 当int+String,此时的+是连接符,int自动转换成String类型:"3"+"java"+7
3java7 // 同上,"3java"+"7"
至于您问是怎么变成String类型的,编译器遇到“+”时,JVM会自动创建一个临时的StringBuffer类对象,然后调用append()方法完成字符串的拼接。拼接过程中,调用的都是对象的toString()方法。完成后再将这个临时StringBuffer对象转型为一个String,就是最终的结果。!然后我个人觉得,因为int是数据类型,String是字符串类,之间是不能强制类型转换和自动类型提升的。希望可以帮到你!
作者:
ash午夜阳光
时间:
2015-10-18 21:17
1+2+"java"+3+4 打印结果为3java34
1+2+"java"+(3+4)打印结果为3java7
作者:
zerotoone
时间:
2015-10-18 21:46
这只要知道字符和字符串参与运算时的规则,不难理解.
任何数据类型用+与字符串相连接都会产生新的字符串
比如:
System.out.println('a' + 1);
System.out.println((char)('a' + 1));
System.out.println("hello"+'a'+1);
System.out.println('a'+1+"hello");
System.out.println(" 5 + 5 = " + (5 + 5));
复制代码
打印结果:
98
b
helloa1
98hello
5 + 5 = 10
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2