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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 韩伟 中级黑马   /  2012-7-17 08:33  /  2856 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

刚才逛论坛的时候突然想到一个关于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);  
}
}
运行结果为:

请大家给一下自己的见解。

8 个回复

倒序浏览
这个点考察的是“+”作为字符串连接符的应用
如果在+的表达式中存在字符串,那么+号将不作为加法运算符,而是作为字符串连接符,最终返回一个字符串
回复 使用道具 举报
a+b是执行数学运算,输出15
而c+a+b是字符串连接将“Hello”和“10”和“5”三个字符串连接,
最后两个c+d和s是相同的,都是普通的字符串两节,将后一个字符串连接到前一个字符串尾部。
回复 使用道具 举报
其实你上面给出了4个式子,只有第一个算得上是运算,其他三个都是字符串的拼接,在后面三个式子中,“+”作为字符串连接符,只是把最终结果作为字符串返回而已!
回复 使用道具 举报
+号在括号内可以表示运算符,也可以表示字符串连接符。

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

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
  1. class TestDemo
  2. {
  3. public static void main(String [] args)
  4. {
  5.   int a = 10;
  6.   int b = 5;
  7.   String c = "Hello";
  8.   String d = "World";
  9.   String s = c + d;
  10.   
  11.   System.out.println(a+b);//这里都是两个数字,所以是相加的关系。
  12.   System.out.println(c+a+b);//这里的加号是属于连接符
  13.   System.out.println(c+d);//这里的cd也是属于两个字符串拼接的。
  14.   System.out.println(s);  //这里打印的是s是将cd拼接后的地址给了s,然后打印的。
  15. }
  16. }
复制代码
回复 使用道具 举报
转换类型分为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类型的数据,打印结果亦为字符串。
回复 使用道具 举报
简单到不行  只要记住类型转换就好办了
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
}
}
回复 使用道具 举报
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没什么区别。

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马