</pre>1、Java基本数据类型<p></p><p>byte、char、short、int、float、double、long、boolean;</p><p>2、带标签的break语句</p><p>如以下代码所示:</p><p></p><pre name="code" class="java"></pre><pre name="code" class="java">Scanner in = new Scanner(System.in);
int n;
read_data;
while(...){
...
for(...){
System.out.print("Enter a number >=0:");
n = in.nextInt();
if(n < 0){
break read_data;//break out of read_data loop
}
}
}
</pre> 如果输入有误,通过执行带标签的break跳转到带标签的语句块末尾。对于任何使用break语句的代码都需要检测循环是否是正常结束,还是由break语句跳出。注意:只能跳出语句块,而不能跳入语句块。</p><p>3、不要编写返回引用可变对象的访问器方法</p><p>引用可变对象如Date;</p><p>若实在要编写,可以返回这个对象的克隆。</p><p>4、阻止继承</p><p>不允许扩展的类被称为final类,如:</p><p><pre name="code" class="java">final class Exeutive extends Manager{
...
}
类中的特定方法也可以被声明为final。如果这样做,子类就不能覆盖这个方法(final类中的所有方法自动地成为final方法)。如:
class Employee{
...
public final String getName(){
return name;
}
...
}
注意:如果将一个类声明为final,只有其中的方法自动地成为final,而不包括域。
5、判断对象是否相等
Object类中的equals方法将判断两个对象是否具有相同的引用。但对于大多数类来说没这种判断并没有什么意义,我们希望判断的是这两个对象状态的相等性。下面给出一个较好的判断方法步骤。
1)用 == 判断;
2)判断对象是否等于null;
3)用getClass()方法,只有两个对象属于同一个类时,才有可能相等。
4)判断两个对象的域中的各个属性是否相等。
6、hashCode方法
散列码(hash code)是由对象导出的一个整形值。散列码是没有规律的。如果x和y是两个不同的对象,x.hashCode()与y.hashCode()基本上不会相同。
由于hashCode方法定义在Object类中,因此每个对象都有一个默认的散列码,其值为对象的存储地址,来看一下下面这个例子:
String s = "OK";
StringBuilder sb = new StringBuilder(s);
String t = "OK";
StringBuilder tb = new StringBuilder(t);
对象 | 散列码 |
s | 2556 |
sb | 20526976 |
t | 2556 |
tb | 20527144 |
若需要组合多个散列值时,可以调用Objects.hash并提供多个参数,这个方法会对各个参数调用Objects.hashCode,并组合这些散列值。如:
public int hashCode(){
return Objects.hash(name, salary, hireDay);
}
7、toString方法
在对一个任意一个对象x使用toString方法时,可以在调用x.toString()的地方使用"" + x替代。这条语句将一个空串与x的字符串表示相连接。这里的x就是x.toString()。与toString不同的是,如果x是基本类型,这条语句照样能执行。
8、数组列表
ArrayList<T>(int initialCapacity)
用于指定容量构造一个空数组列表
void ensureCapacity(int capacity)
确保数组列表在不重新分配存储空间的情况下就能够保存给定数量的元素。
void trimToSize()
将数组列表的存储容量削减到当前尺寸。
new ArrayList<Employee>(100)与 new Employee[100]的区别:
如果为数组分配100个元素的存储空间,数组就有100个空位置可以使用。而容量为100个元素的数组列表只是拥有保存100个元素的潜力,但在最初,数组列表根本不含有任何元素。
9、修改数值参数值得方法
使用在org.omg.CORBA包中定义的持有者(holder)类型,包括IntHolder、BooleanHolder等。每个持有者都包含一个公有域值,通过过它可以访问存储在其中的值。如:
public static void triple(IntHolder x){
x.value = 3 * x.value;
}