这章比较零散,主要是汇总一些编程时常用的一些少见但又比较重要的知识点。 一、hashCode()和equals() 这块的基础知识就不再重述了,如果是自己编写时需要注意以下几点(建议用idea自
          这章比较零散,主要是汇总一些编程时常用的一些少见但又比较重要的知识点。
一、hashCode()和equals()
这块的基础知识就不再重述了,如果是自己编写时需要注意以下几点(建议用idea自动生成工具生成),一个简单的示例如下:
public class Groundhog2 extends Groundhog {public Groundhog2(int n) { super(n); }
public int hashCode() { return number; }
public boolean equals(Object o) {
return o instanceof Groundhog2 &&
(number == ((Groundhog2)o).number);
}
}
- 正确的equqls()方法需满足下列5个条件:
 
- 正确的hashCode()方法需满足以下条件:
 
- boolean c = f ? 0: 1
 - byte,char,short,int——c = (int)f
 - long—— c = (int)(f ^ (f>>>32))
 - float —— c = Float.floatToIntBits(f)
 - double —— c = Double.doubleToLongBits(f)
 - Object其equals()调用这个域的equals()数组—— c = f.hashCode()
 - 数组—— 对每个元素应用上述规则
 
二、String格式化输出
一般主要用于日志打印上,几个例子如下
public class SimpleFormat {public static void main(String[] args) {
int x = 5;
double y = 5.332542;
System.out.println("Row 1: [" + x + " " + y + "]");
System.out.format("Row 1: [%d %f]\n", x, y);
System.out.printf("Row 1: [%d %f]\n", x, y);
}
} /* Output:这里的format和printf都可以应用格式化输出格式。
Row 1: [5 5.332542]
Row 1: [5 5.332542]
Row 1: [5 5.332542]
*///:~
