黑马程序员技术交流社区
标题: 突然想到一个String类型转换的问题 [打印本页]
作者: 韩伟 时间: 2012-7-17 08:33
标题: 突然想到一个String类型转换的问题
刚才逛论坛的时候突然想到一个关于String类型转换的问题,大家来共同探讨一下吧。
首先是这样的,我记得视频里好像说过System.out.println()括号中的内容会自动转换成字符串型,
但是也有见过在括号中运算,所以就写了下面的小程序验证一下:
class TestDemo
{
public static void main(String [] args)
{
int a = 10;
int b = 5;
String c = "Hello";
String d = "World";
String s = c + d;
System.out.println(a+b);
System.out.println(c+a+b);
System.out.println(c+d);
System.out.println(s);
}
}
运行结果为:
请大家给一下自己的见解。
作者: 程潇 时间: 2012-7-17 08:39
这个点考察的是“+”作为字符串连接符的应用
如果在+的表达式中存在字符串,那么+号将不作为加法运算符,而是作为字符串连接符,最终返回一个字符串
作者: 樊佰轩 时间: 2012-7-17 08:39
a+b是执行数学运算,输出15
而c+a+b是字符串连接将“Hello”和“10”和“5”三个字符串连接,
最后两个c+d和s是相同的,都是普通的字符串两节,将后一个字符串连接到前一个字符串尾部。
作者: 田建 时间: 2012-7-17 08:50
其实你上面给出了4个式子,只有第一个算得上是运算,其他三个都是字符串的拼接,在后面三个式子中,“+”作为字符串连接符,只是把最终结果作为字符串返回而已!
作者: 陆鹏 时间: 2012-7-17 08:54
+号在括号内可以表示运算符,也可以表示字符串连接符。
System.out.println(a+b); ------->因为a,b都是int类型,所以会先相加得出结果(a+b),然后再将结果转换为字符串。显示15
System.out.println(c+a+b); ---->因为c是字符串,所以连上+的变量全部转换为字符串。显示 Hello105。如果这里想让a和b先相加再转换的话,可以加上括号
优先运算。 System.out.println(c+(a+b));这样显示的是Hello15 。
System.out.println(c+d); ------>c和d都是字符串,所以相连接,显示HelloWorld
System.out.println(s); ------->同上,只是多了个赋值操作而已。显示HelloWorld
作者: 薄炳鑫 时间: 2012-7-17 09:03
- class TestDemo
- {
- public static void main(String [] args)
- {
- int a = 10;
- int b = 5;
- String c = "Hello";
- String d = "World";
- String s = c + d;
-
- System.out.println(a+b);//这里都是两个数字,所以是相加的关系。
- System.out.println(c+a+b);//这里的加号是属于连接符
- System.out.println(c+d);//这里的cd也是属于两个字符串拼接的。
- System.out.println(s); //这里打印的是s是将cd拼接后的地址给了s,然后打印的。
- }
- }
复制代码
作者: 夏儒日 时间: 2012-7-17 09:12
转换类型分为3种
第一种:自动类型转换:比如说在一个较小的数据类型和一个较大的数据类型在做运算是,系统会自动将小的数据类型转换为大的数据类型:
举例:int intnum = 5; double doubnum = 5.5; 最后运算出来的数据就是double类型的。
第二种:强制转换:也就是将较大的数据转为较小的数据
举例:int num = (int)(1.5+3.7); 输出等于
第三种:包装类过度类型转换:可以运用包装类的各种方法来经行转换,常用的包装类有:Boolean,Character,Integer,Long,Float,Double.
1.你的问题a+b是属于算数运算,都是INT型数据类型,不涉及转换,所以打印的就是两数相加的结果;
2.c+a+b属于自动类型转换,字符串数据和任何类型数据用“+”相连接,最终结果均为字符串。
3和4.不涉及类型转换,都是String类型的数据,打印结果亦为字符串。
作者: 京鱼龙 时间: 2012-7-17 10:10
简单到不行 只要记住类型转换就好办了
byte-->short-->int-->long-->float-->double
class TestDemo
{
public static void main(String [] args)
{
int a = 10;
int b = 5;
String c = "Hello";
String d = "World";
String s = c + d;
System.out.println(a+b); //输出的是具体的数值a+b = 15;
System.out.println(c+a+b); //就是(c+a)+b,因为c是字符串类型,a是int类型,int类型和字符串类型相加,int类型自动提升。
// (c+a)= Hello10在加上b就得出字符串 Hello105
System.out.println(c+d); //两个字符串相加,得出来的还是字符串所以就是HelloWorld
System.out.println(s); // s = c+d ,c+d得出来的是字符串,所以打印的就是HelloWorld
}
}
作者: 黑马陈旭东 时间: 2012-7-17 11:52
System.out.println(a+b); //a+b都是基本数据int类型,所以可以做数值运算 结果为15
System.out.println(c+a+b); //c是字符串所以+就变成了一个连接符,它后面用+连起来的也就变成字符串了,结果:Hello105
System.out.println(c+d);//两个字符串连接,组成一个新的字符串
System.out.println(s); //跟上面c+d没什么区别。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |