1.大胆猜测一下执行结果
public static void main(String[] args) {
int x = 5;
int i = 10;
System.out.println(i=+x);
}
执行结果:5
int a = 3; int b = 5; System.out.println(a+=b); //a = a+b 不要混淆 a+=b ==> a = a+b a=+b ==> b
2.BigDecimal 使用要小心了,a.equals(b)会是true吗?
public static void test1(){
BigDecimal a = new BigDecimal("3.0");
BigDecimal b = new BigDecimal("3.00");
System.out.println(a.equals(b));
}
执行结果:false
BigDecimal的等值比较应该使用compareTo()方法,不能使用equals(),equals 会比较值和精度
3.同样是BigDecimal的问题来了,
public static void test2() {
BigDecimal a = new BigDecimal(3.10d);
BigDecimal b = new BigDecimal(3.1d);
System.out.println(a);
System.out.println(b);
}
执行结果:
不要使用构造方法BigDecimal(double)的方式把double对象转化为Bigdecimal对象,不然就会出现这样的结果
4.对于初学者的考验来了,ascii码的知识还记得吗?
public class Char2Int {
public static void main(String[] args) {
char c = '5';
int a = (int)c - 1;
System.out.println(a); //等于什么呢?
} }
会不会有人说是4呢?其实不然,这个涉及到ascii码的转化问题,5的ascii码是53,所以a=53-1,来 看一下结果:
5. 关于Integer的知识了解一下
public static void test(){
System.out.println(Integer.MAX_VALUE); //Integer的最大值
System.out.println(Integer.MAX_VALUE + 1);// Integer的最大值 + 1 会怎么样呢?
}
会比最大1吗?不是的,像是一个循环,又从最小值开始了。
6.最神奇的地方来了
a,b的结果是多少????
public class CodeTest {
public static void main(String[] args) {
Integer a = 500; // 500 > 128 即new Integer(500)
Integer b = new Integer(500); // \u000a b =b +1;
System.out.println(a.intValue()); // a的结果是多少????
System.out.println(b.intValue()); // b的结果是多少????
}
}
大家可能都认为是500吧,那你就错了,看一下结果:
为什么呢?那是因为对于Unicode 编码的存在,Unicode 编码在代码中即使被注释掉也可能会影响代码执行。
看着一行, Integer b = new Integer(500); // \u000a b =b +1; 其实注释的代码也执行了。