java三元运算符
classb{publicstaticvoidmain(String[]args){StringBuffers=newStringBuffer();s.append(1>...
class b{
public static void main(String [] args){
StringBuffer s=new StringBuffer();
s.append(1>5?100:'A');
s.append(6>5?90:'B');
System.out.println(s);
}
}
为什么结果是AZ,不是A90
应该跟append无关吧,
System.out.println(6>5?100:'b');会打印d
System.out.println(1>5?'b':100.5);就会打印100.5了 展开
public static void main(String [] args){
StringBuffer s=new StringBuffer();
s.append(1>5?100:'A');
s.append(6>5?90:'B');
System.out.println(s);
}
}
为什么结果是AZ,不是A90
应该跟append无关吧,
System.out.println(6>5?100:'b');会打印d
System.out.println(1>5?'b':100.5);就会打印100.5了 展开
展开全部
我错了,刚才试了一下,下面是我的结论:
在程序执行的时候会自动匹配数据类型调用对应的方法,但这两次调用的不是同一个方法。依据如下:
使用int i = 90;s.append(6>5?i:'B');的话调用的就是append(int),而使用s.append(6>5?90:'B');的话调用的就是append(char)。
区别在于编译的时候,使用变量i作为传递的参数时,三元运算符会保留期变量名作为参数,而在取i的值时会根据i的类型匹配方法;
而使用90最为传递参数时,编译器在选择数据类型时会参考“:”两侧的数据类型,如果匹配或足以存储该数据则存储为同一数据类型,如果不匹配则替换成其他数据类型。
'B'在编译时被存储为char型,而90因为没有指定数据类型且可以被char这个数据类型所表示,所以被保存为char型。即使使用强制类型转换也会被忽略,因为常量的数据类型转换会在编译器编译之前一步进行,就像gcc处理宏一样,所以不会起到强制类型转换的作用。
在程序执行的时候会自动匹配数据类型调用对应的方法,但这两次调用的不是同一个方法。依据如下:
使用int i = 90;s.append(6>5?i:'B');的话调用的就是append(int),而使用s.append(6>5?90:'B');的话调用的就是append(char)。
区别在于编译的时候,使用变量i作为传递的参数时,三元运算符会保留期变量名作为参数,而在取i的值时会根据i的类型匹配方法;
而使用90最为传递参数时,编译器在选择数据类型时会参考“:”两侧的数据类型,如果匹配或足以存储该数据则存储为同一数据类型,如果不匹配则替换成其他数据类型。
'B'在编译时被存储为char型,而90因为没有指定数据类型且可以被char这个数据类型所表示,所以被保存为char型。即使使用强制类型转换也会被忽略,因为常量的数据类型转换会在编译器编译之前一步进行,就像gcc处理宏一样,所以不会起到强制类型转换的作用。
展开全部
因为90是大写字母Z。它在显示90时,转换成了字母Z了。。
你可以
public class b {
public static void main(String[] args) {
StringBuffer s=new StringBuffer("");
s.append(1 > 5 ? 100 : 'A');
s.append(6 > 5 ? (90+"") : 'B');
System.out.println(s);
}
}
这么修改。
你可以
public class b {
public static void main(String[] args) {
StringBuffer s=new StringBuffer("");
s.append(1 > 5 ? 100 : 'A');
s.append(6 > 5 ? (90+"") : 'B');
System.out.println(s);
}
}
这么修改。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
'B'是字符型,0-65535,90<65535,所以字符型大,自动转成字符型,90正好是'Z',所以是AZ
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询