简单的浏览了下前四章,收获还是有的。
1、在方法中 return语句可以立即中断方法的执行。
2、注释文档,
将代码同文档“链接”起来。javadoc便是用于提取注释的工具,一般为public、protected成员进行文档注释。
//: ThinkingInJava/WhileTest.java
/** The Thinking in java example program.
* Test while.
* @author dai
* @version 0.0
*/
public class WhileTest {
/**A method return true or false */
public static boolean condition(){
boolean result = Math.random() < 0.99;
System.out.println(result + ",");
return result;
}
/**
* Entry point to class && application.
* @param args array of string arguments
* @throws exceptions No exceptions thrown
*/
public static void main(String[] args) {
while(condition()){
System.out.println("Inside 'while'");
}
System.out.println("Exited 'while'");
}
} /* Output:
...
*///:~
用javadoc提取此注释文档后
很有趣!
3、javaSE的经典问题---对象的等价性
<span style="white-space:pre"> </span>String str0 = new String("a");
String str1 = new String("a");
if(str0 == str1){
System.out.println("str0 == str1");
}
if(str0.equals(str1)){
System.out.println("str0.equals(str1)");
}
尽管两个对象的内容相同,但是对象的引用是不同的。而关系操作符 == 比较的就是对象的引用。但是让我困解的是既然上例中equals方法比较的是两个对象的实际内容。为什么在新建类时,比较这个类的两个对象(具有相同属性值)时又是false呢?怎么是由于equals方法的默认行为是比较引用呢,这不就和上面的例子冲突了吗?在看了equals源码后(String类)有了大致的理解;
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
每一种非基本类型都有他对应的equals方法!
针对上面的String类的equals我的理解是:
在初始化自己类的两个具有相同属性(String)的对象后,第二个if语句我们就用不着了,而第一个if语句仍是用的关系操作符 == ,比较的还是对象的应用。故而返回的仍是false,也就是默认的行为还是比较引用。
4、java中不允许我们将一个数字作为布尔值直接使用的。