单精度和双精度的问题

单精度表示有效位数是7位

双精度表示有效位数是16位

public class precitionDemo {
	public static void main(String[] args) {
		float f = 123.123456789f;
		double d = 12345678.123456789;
		System.out.println(f);
		System.out.println(d);
	}
}

运行结果:

123.12346

1.234567812345679E7

随之而来的就是损失精度的问题



++i 和 i++问题

        int i = 1;
		int j;
		j = i++; // 先赋值,再运算
		System.out.println("i:" + i +"\t"+ "j:" + j);

运行结果:

i:2j:1 

== 和equals()问题

   ==:是用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。

   equal:是用来比较两个对象内部的内容是否相等的.

public class Object {
     public boolean equals(Object obj) {
        return (this == obj); //object类中的equals方法直接返回==的结果
    }
}

由于所有的类都是继承自java.lang.Object类的,所以如果没有对该方法进行覆盖的话,

调用的仍然是Object类中的方法,而Object中的equal方法返回的却是==的判断,

因此,如果在没有进行该方法的覆盖后,调用该方法是没有任何意义的。

在java面向对象的处理中我们一般在javabean中都要选择重写equals方法,


static final和transient

  static表示"全局"/"静态"的意思,用来修饰成员变量和成员方法,以及代码块,独立于该类的任何对象,在类被虚拟机加载的时候加载进内存,可以由类直接调用.

更加完整的分析相见: http://www.cnblogs.com/dolphin0520/p/3799052.html

关于final关键字: http://www.cnblogs.com/dolphin0520/p/3736238.html