(1)
混合类型计算题 | 易文广(Java老师) |
public class Test{
public static void main(String[] args)
{
char x='Y';
int i=1;
System.out.print(true? x:i);
System.out.println(false ? 1:x);
}
}
答案: 89Y
如果第二个和第三个操作数具有相同的类型,那么它就是条件表达式的类型。如果一个操作数的类型是T,T表示byte、short或char,而另一个操作数是一个int类型的常量表达式,它的值是可以用类型T表示的,那么条件表达式的类型就是T。否则,将对操作数类型运用二进制数字提升,而条件表达式的类型就是第二个和第三个操作数被提升之后的类型。
个人理解:也就是说要是两个变量名类型不同都将往高的转型,但是若是具体数字和变量,则都将转换为ASCII码比较~
(2) 老紫竹(Java老师)
StringBuffer类容量和长度量相同?
答案:错的~!
说明:不等,容量会以倍数关系增长,避免每次加入数据都分配内容,造成浪费。
个人理解:翻阅API文档,解释如:每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。从 JDK 5 开始,为该类补充了一个单个线程使用的等价类,即 StringBuilder。与该类相比,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。
(3)
What results from attempting to compile and run the following code? public class Ternary{ public static void main(String args[]){ int a = 5; System.out.println("Value is - " + ((a < 5) ? 9.9 : 9)); } }
A : Value is -9
B : Value is -5
C : Compilation error
D : None of these
答案: D
说明:应该输出 Value is -9.0 ((a < 5) ? 9.9 : 9) 这里因为前面的 9.9是 double类型的,所以后面的9也会被转换为double类型的进行输出。
个人理解:咋看没有什么寻呼,但是应该注意到类型转换的问题,选A是错的,应该注意!!!