【发布时间】:2015-08-01 02:27:27
【问题描述】:
我最近刚开始学习 Java 基础知识,并且正在测试通过连接原始变量来初始化字符串变量。
public class Main{
public static void main(String[] args){
byte lbyte = 3;
short lshort = 1;
int lint = 1;
long llong = 0;
float lfloat = 2.0f;
double ldouble = lfloat;
char lchar = 'H';
boolean lbool = true;
String lstring = " w0r1d ";
String lOutput = lchar+lbyte+lshort+lint+llong+lstring+ldouble+' '+lbool;
System.out.println(lOutput);
}
}
在这段代码中,我的目标是创建一个可以输出的字符串:
H3110 w0r1d 2.0 真
但是,当我运行它时,输出是:77 w0r1d 2.0 true
意外的结果是 77,而其余的都很好。即使我假设会添加数字变量,它也只会是 5。变量 lchar 显然也被“吸收”到数字中。
77 是从哪里来的,lchar 中的 H 是怎么回事?
编辑:目标是在连接中使用尽可能多的原始变量。
Edit2:感谢所有有用的答案。
【问题讨论】:
-
恰巧
H + 5= 77。 -
作弊的方法是在连接行的
lchar之前添加""+,但这只是一个解决方案而不是原因的答案。 -
@ChiefTwoPencils 括号会有所帮助吗?是的,你是对的。 chars 具有 int 值 CNomad,当您最终组合
ints和其他primitive data时,会发生强制转换,还是仅使用+=运算符而不仅仅是+?
标签: java string variables concatenation primitive