java基础练习,为什么2个字符相加最后得出的是数字??
publicclassTest1{publicstaticvoidmain(String[]args){charman='男';charwoman='女';Strings...
public class Test1{
public static void main(String[] args){
char man ='男';
char woman ='女';
String str ="与";
System.out.println(man+woman);
System.out.println(man+str+woman);
}
}
为什么man+woman打印最后的结果是52906,而man+str+woman就是正常的“男与女”?? 展开
public static void main(String[] args){
char man ='男';
char woman ='女';
String str ="与";
System.out.println(man+woman);
System.out.println(man+str+woman);
}
}
为什么man+woman打印最后的结果是52906,而man+str+woman就是正常的“男与女”?? 展开
2个回答
展开全部
因为char类型只能记录一个字符,是字符编码值,所以char加char结果还是一个char,而String是字符串,可以表示一个以上的字符,在char + String + char中,因为字符串是不能进行一般的数学意义的加法的实际上与String有关的“+”符号相当于将“+”左右的内容连接并返回一个新的字符串的方法。
追问
man+woman+str最后得出的是“52906与”,而不是“男女与”,是因为先从左向右把左边的运算完再加的右边的原因吗
追答
是的 因为运算的是从左向右进行的 有的时候 运算中包含不同类型变量的时候 运算顺序的不同会带来非常不同的结果 比如
int a = 1;
int b = 10;
double c = 2;
a/b * c 的结果是0 因为 1除10虽然是0.1但是类型是int类型不能存小数结果是0然后乘2结果还是0 但是如果是 a*c/b a乘c是2,单因为c是double类型值域比int大所以会先将a的1转换为double类型再与c进行运算 结果是 double类型的2.0然后再与b相除 同理 b中的10也将被转换为double类型 运算 结果是0.2 类型为 double
这就是 类型的隐式转化
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询