两道经典的java面试题

1.在不用任何中间变量和加减乘除符号的情况下将5和10交换

public class Change {


public static void main(String[] args) {

int i=5;
int j=10;
i=i^j;  
j=i^j; //等于j=i^j^j.,就是j=i.运用到两个异或的性质:1.任何数与本身异或都为0;2.任何数与0异或都为本身
i=i^j; //等于i=i^j^i,就是i=j
System.out.println(i);
System.out.println(j);
}


}

输出结果为i=10,j=5


2.

public class Change {

public static void main(String[] args) {

int i=0;
char b='b';
System.out.println(true?b:1);   //1占1个字节,小于字符型的2个字节,所以输出b而不是转化成ASCII码值
System.out.println(true?b:111100); //十进制111100大于char型的2个字节,所以输出整型(ASCII码值98)
System.out.println(false?i:b); //i为整形变量,字符型跟变量比较时转化成相对应类型的变量输出,所以输出整型(ASCII码值98)
}


}

 以上程序输出结果为:b,98,98

你可能感兴趣的:(面试题,java)