thinking in java学习笔记(二)

来源:互联网 发布:淘宝里的运费险怎么退 编辑:程序博客网 时间:2024/05/22 11:07

简单的浏览了下前四章,收获还是有的。

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中不允许我们将一个数字作为布尔值直接使用的。

0 0
原创粉丝点击