据说在println()方法中,能够将整型等数字,以字符串形式输出,故作了如下实验
public class StringTest{
public static void main(String[] args){
String str = "This is a string.";
String ss;
int a = 2;
int b = 0;
ss ="a" + "b";
System.out.println(ss);
System.out.println(str + a + b);
System.out.println(a + b + str);
}
}
输出结果:
ab
This is a string.20
2This is a string.
问1.为什么ss能输出ab?
问2.为什么在两个输出语句中第一个可以正常以字符串输出,而
第二个输出却把0丢掉了?在JDK5.0的文档中,println()并没有这种使用的方法,不解高人指点!
public class StringTest{
public static void main(String[] args){
String str = "This is a string.";
String ss;
int a = 2;
int b = 0;
ss ="a" + "b";
System.out.println(ss);
System.out.println(str + a + b);
System.out.println(a + b + str);
}
}
输出结果:
ab
This is a string.20
2This is a string.
问1.为什么ss能输出ab?
问2.为什么在两个输出语句中第一个可以正常以字符串输出,而
第二个输出却把0丢掉了?在JDK5.0的文档中,println()并没有这种使用的方法,不解高人指点!
str+a转为字符串连接,而a+b+str先进行算术运算得到2再和str连接
如果是数字之间用+是做加法运算
如果是字符串相加是做字符的连接
如果数字和字符相加是把数字转乘串连接
a + b + str
是先运算加法,然后字符串连接
而 a + b + str, 由于a + b的时候还没有遇到String所以是正常相加, 相当于new String(a + b) + str
1. "S" + a = "S" + "a" = "Sa"
2. "S" + b = "S" + "b" = "Sb"a+b+str//运算顺序自左至右,1.int+int = int 2.int + String = String
1. 2+0=2
2. 2+"S"="2" + "S" = "2S"
会自动调用toString()这个函数,统一转换成字符串格式 int a = 2;
int b = 0;
ss ="a" + "b";你的ss中的“a”“b”和定义的int中的“a”“b”是不一样的。
ss中的“a”“b”是字符串,而int中的“a”“b”只是变量
str+a转为字符串连接,而a+b+str先算术运算得到2再和str连接
运算顺序自左至右,String+int=String 将int转换成String类型再进行的运算, str + a(已转换为String类型)的结果为String类型,而后该结果字符串又与转换成String类型的b进行了连接
a + b + str 则是a与b先做算术运算,然后转成字符串后再与str做字符串连接
String str = "This is a string.";
String ss="";
String kk="";
int a = 2;
int b = 0;
ss =ss+a + b;
System.out.println(ss);
System.out.println(str + a + b);
System.out.println(a+kk+b + str);
}
改成这样就好了