﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-TinySK</title><link>http://www.blogjava.net/TinySK/</link><description /><language>zh-cn</language><lastBuildDate>Fri, 17 Apr 2026 21:09:38 GMT</lastBuildDate><pubDate>Fri, 17 Apr 2026 21:09:38 GMT</pubDate><ttl>60</ttl><item><title>定义线程和创建线程对象</title><link>http://www.blogjava.net/TinySK/archive/2010/11/08/337580.html</link><dc:creator>闫佳</dc:creator><author>闫佳</author><pubDate>Mon, 08 Nov 2010 15:20:00 GMT</pubDate><guid>http://www.blogjava.net/TinySK/archive/2010/11/08/337580.html</guid><wfw:comment>http://www.blogjava.net/TinySK/comments/337580.html</wfw:comment><comments>http://www.blogjava.net/TinySK/archive/2010/11/08/337580.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/TinySK/comments/commentRss/337580.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TinySK/services/trackbacks/337580.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 定义线程有两种方法，一种是继承Thread类，一种是实现Runnable接口，这两种方法存在各自的优缺点。和定义线程对应的就是创建线程对象，也有两种方法。下面给大家介绍一下这两种方法来定义线程及相对应的创建线程对象的方法。</p> <p>1.继承Thread类定义线程</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 定义一个线程可以通过继承Thread类来实现，这是一种相对简单的定义线程的方法。在Thread类中有一个run方法，在定义的线程中需要重写这个方法。在重写run方法中可以定义该线程要执行的语句。当线程启动时，run方法中的程序就成为一条独立的执行线程。示例代码如下：</p> <p>public&nbsp; class&nbsp;&nbsp; XianCheng&nbsp; extends&nbsp; Thread</p> <p>{</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void run()</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("run方法执行");</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p> <p>}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p> <p>改程序是无法执行的，因为没有main方法，也就是没有启动线程的方法。下面先介绍如何创建线程对象。代码如下:</p> <p>XianCheng&nbsp;&nbsp; xc = new&nbsp; XianCheng();</p> <p>从上面的代码可以看出，创建线程对象的方法和创建普通对象的方法是一样的。但是这只是对于使用继承Thread类创建线程的方法来说的。我们也可以通过Thread类来定义线程对象，如</p> <p>Thread&nbsp; th = new Thread（）；</p> <p>2.实现Runnable接口定义线程</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在Runnable接口中具有一个抽象的run方法，在实现Runnable接口时，需要实现run方法。示例代码如下：</p> <p>public&nbsp; class&nbsp; test2&nbsp; implements&nbsp; Runnable{</p> <p>&nbsp;&nbsp;&nbsp; public&nbsp;&nbsp; void&nbsp;&nbsp; run（）{</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("run方法执行");</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p> <p>}</p> <p>在使用实现Runnable接口定义的线程中，要比上面复杂些，因为直接创建类的对象创建的并不是一个线程对象，要想创建线程对象必须要借助Thread类。只有Thread类才能定义线程对象。</p> <p>代码如下：test2&nbsp;&nbsp;&nbsp;&nbsp; t2 = new&nbsp; test2（）；</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Thread&nbsp; tt2 = new&nbsp; Thread（t2）；</p> <p>tt2才是线程对象，Thread类具有4个构造器，最常用的就是具有一个参数的，我们可以先创建一个实现Runnable接口的类对象，然后作为Thread类的参数来创建多个线程对象。</p> <p>当我们建立了一个线程类的时候，就要启动线程，初学者会认为启动线程就是调用线程类中的方法。但这点是错误的，虽然可以用对象名.run（）来调用run方法，但这并不是线程的启动。要想启动线程还要调用线程的star方法，如：tt2.start（）；但要注意，一个线程只能调用一次star方法，第二次启动线程会发生IllegalThreadException异常。有关线程的启动，应用问题以后再做介绍。</p> <p>好了，有关线程的基础知识先介绍到这里。有不足的地方请大家批评指正。</p><img src ="http://www.blogjava.net/TinySK/aggbug/337580.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TinySK/" target="_blank">闫佳</a> 2010-11-08 23:20 <a href="http://www.blogjava.net/TinySK/archive/2010/11/08/337580.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java扫盲篇</title><link>http://www.blogjava.net/TinySK/archive/2010/11/04/337207.html</link><dc:creator>闫佳</dc:creator><author>闫佳</author><pubDate>Thu, 04 Nov 2010 02:59:00 GMT</pubDate><guid>http://www.blogjava.net/TinySK/archive/2010/11/04/337207.html</guid><wfw:comment>http://www.blogjava.net/TinySK/comments/337207.html</wfw:comment><comments>http://www.blogjava.net/TinySK/archive/2010/11/04/337207.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TinySK/comments/commentRss/337207.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TinySK/services/trackbacks/337207.html</trackback:ping><description><![CDATA[<p>学Java也有好一阵子了，当涉及到Java的实际应用时发现自己的基础跟不上。基础不行，概念不清，对以后的学习造成不小的负面影响。仔细分析后，自己总结了一些Java里面很基础的东西，希望以后把基础打好，高手就不必过目了呀，哈哈~~~</p> <p>一、有关super跟this的区别。</p> <table cellspacing="0" cellpadding="0" border="1"> <tbody> <tr> <td width="158"> <p>区别</p></td> <td width="189"> <p>Super</p></td> <td width="189"> <p>This</p></td></tr> <tr> <td width="158"> <p>范围</p></td> <td valign="top" width="189"> <p>由子类访问父类的内容</p></td> <td valign="top" width="189"> <p>直接访问本类中的内容</p></td></tr> <tr> <td width="158"> <p>访问属性</p></td> <td valign="top" width="189"> <p>super.父类属性，如果属性没有被覆写，则也可以不写super。</p></td> <td valign="top" width="189"> <p>This.本类属性。</p></td></tr> <tr> <td width="158"> <p>访问方法</p></td> <td valign="top" width="189"> <p>super.父类方法(),如果方法没有被覆写，则可以不用加super也表示调用父类中的方法。</p></td> <td valign="top" width="189"> <p>this.本类方法(),可以不写this,也表示调用本类的方法。</p></td></tr> <tr> <td width="158"> <p>访问构造方法</p></td> <td valign="top" width="189"> <p>super是访问父类中的构造方法，必须放在首行。</p></td> <td valign="top" width="189"> <p>this 是访问本类中的其他构造方法，必须放在首行。</p></td></tr></tbody></table> <p>&nbsp;</p> <p>二、重载和重写的区别。</p> <table cellspacing="0" cellpadding="0" border="1"> <tbody> <tr> <td width="189"> <p>区别</p></td> <td width="189"> <p>重载</p></td> <td width="189"> <p>重写/覆写</p></td></tr> <tr> <td width="189"> <p>单词</p></td> <td valign="top" width="189"> <p>Overloading</p></td> <td valign="top" width="189"> <p>Override</p></td></tr> <tr> <td width="189"> <p>概念</p></td> <td valign="top" width="189"> <p>方法名称相同，参数列表不同。</p></td> <td valign="top" width="189"> <p>方法名称相同，参数列表相同，方法的访问权限不能更严格。</p></td></tr> <tr> <td width="189"> <p>范围</p></td> <td valign="top" width="189"> <p>发生在一个类中。</p></td> <td valign="top" width="189"> <p>发生在继承关系中，由子类进行覆写。</p></td></tr></tbody></table> <p>三、Vector和ArrayList  <p>&nbsp;&nbsp; 1.vector是线程同步的，所以它也是线程安全的，而arraylist是线程异步的，是不安全的。如果不考虑到线程的安全因素，一般用<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arraylist效率比较高。<br>&nbsp;&nbsp; 2.如果集合中的元素的数目大于目前集合数组的长度时，vector增长率为目前数组长度的100%,而arraylist增长率为目前数组长度  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 的50%.如过在集合中使用数据量比较大的数据，用vector有一定的优势。<br>&nbsp;&nbsp;&nbsp; ArrayList 和Vector是采用数组方式存储数据，此数组元素数大于实际存储的数据以便增加和插入元素，都允许直接序号索引元素，<br>&nbsp;&nbsp;&nbsp; 但是插入数据要设计到数组元素移动等内存操作，所以索引数据快插入数据慢，Vector由于使用了synchronized方法（线程安全）所以性能上比ArrayList要差，<br>&nbsp;&nbsp;&nbsp; LinkedList使用双向链表实现存储，按序号索引数据需要进行向前或向后遍历，但是插入数据时只需要记录本项的前后项即可，所以插入数度较快！  <p>四、arraylist和linkedlist  <p>&nbsp;&nbsp;&nbsp;&nbsp; 1.ArrayList是实现了基于动态数组的数据结构，LinkedList基于链表的数据结构。<br>&nbsp;&nbsp;&nbsp;&nbsp; 2.对于随机访问get和set，ArrayList觉对优于LinkedList，因为LinkedList要移动指针。<br>&nbsp;&nbsp;&nbsp;&nbsp; 3.对于新增和删除操作add和remove，LinedList比较占优势，因为ArrayList要移动数据。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这一点要看实际情况的。若只对单条数据插入或删除，ArrayList的速度反而优于LinkedList。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但若是批量随机的插入删除数据，LinkedList的速度大大优于ArrayList. 因为ArrayList每插入一条数据，要移动插入点及之后的所有数据。  <p>五、HashMap与TreeMap <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、HashMap通过hashcode对其内容进行快速查找，而TreeMap中所有的元素都保持着某种固定的顺序，如果你需要得到一个有序的结果你就应该使用TreeMap（HashMap中元素的排列顺序是不固定的）。  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HashMap中元素的排列顺序是不固定的）。  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、HashMap通过hashcode对其内容进行快速查找，而TreeMap中所有的元素都保持着某种固定的顺序，如果你需要得到一个有序的结果你就应该使用TreeMap（HashMap中元素的排列顺序是不固定的）。集合框架”提供两种常规的Map实现：HashMap和TreeMap (TreeMap实现SortedMap接口)。  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、在Map 中插入、删除和定位元素，HashMap 是最好的选择。但如果您要按自然顺序或自定义顺序遍历键，那么TreeMap会更好。使用HashMap要求添加的键类明确定义了hashCode()和 equals()的实现。　　这个TreeMap没有调优选项，因为该树总处于平衡状态。  <p>六、hashtable与hashmap  <p>&nbsp;&nbsp;&nbsp;&nbsp; 1.历史原因:Hashtable是基于陈旧的Dictionary类的，HashMap是Java 1.2引进的Map接口的一个实现  <p>&nbsp;&nbsp;&nbsp;&nbsp; 2.同步性:Hashtable是线程安全的，也就是说是同步的，而HashMap是线程序不安全的，不是同步的  <p>&nbsp;&nbsp;&nbsp;&nbsp; 3.值：只有HashMap可以让你将空值作为一个表的条目的key或value  <p>七、Set中的数据对象没有顺序且不可以重复。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List中的数据对象有顺序且可以重复。 <img src ="http://www.blogjava.net/TinySK/aggbug/337207.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TinySK/" target="_blank">闫佳</a> 2010-11-04 10:59 <a href="http://www.blogjava.net/TinySK/archive/2010/11/04/337207.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>类与类之间的包含关系。</title><link>http://www.blogjava.net/TinySK/archive/2010/11/03/336908.html</link><dc:creator>闫佳</dc:creator><author>闫佳</author><pubDate>Wed, 03 Nov 2010 03:03:00 GMT</pubDate><guid>http://www.blogjava.net/TinySK/archive/2010/11/03/336908.html</guid><wfw:comment>http://www.blogjava.net/TinySK/comments/336908.html</wfw:comment><comments>http://www.blogjava.net/TinySK/archive/2010/11/03/336908.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TinySK/comments/commentRss/336908.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TinySK/services/trackbacks/336908.html</trackback:ping><description><![CDATA[<p>我们知道面向对象语言的三大特征是封装、继承、多态。我们在定义了一个类之后，可以通过再定义一个类，且这个类继承上一个类来扩展其功能。其实，在我们定义类时，类中的成员变量除了基本数据类型也可以是引用数据类型。下面我将编写一个有关类成员变量中引用数据类型使用的例子。</p> <p>在这个程序中，首先定义一个学校类，再定义一个班级类，最后定义一个学生类。在主程序中通过设置不同类型对象间的关系，达到类与类之间包含的关系。</p> <p>代码如下：</p> <p>//学校类</p> <p>package com.TinySK;<br>import java.util.ArrayList;<br>import java.util.Iterator;<br>import java.util.List;<br>class School{&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private String name;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //一个学校有多个班级 ，通过集合类List&nbsp; 实现。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private List&lt;Cls&gt; allClss;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public School(String name){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setName(name);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setAllClss(new ArrayList&lt;Cls&gt;());&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //向学校中加入班级&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void add(Cls cls){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.allClss.add(cls);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void setName(String name){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.name = name;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String getName(){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.name;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void setAllClss(List&lt;Cls&gt; allClss){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.allClss = allClss;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public List&lt;Cls&gt; getAllClss(){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.allClss;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>} </p> <p>//班级类</p> <p>class Cls{&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private String name;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private School school;&nbsp; //此处定义了一个学校类的对象。&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private List&lt;Student&gt; allStudents;//一个班级有多个学生 ，通过集合类List&nbsp; 实现。</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Cls(String name){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setName(name);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setAllStudents(new ArrayList&lt;Student&gt;());&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //向班级中加入学生&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void add(Student stu){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.allStudents.add(stu);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public List&lt;Student&gt; getAllStudents(){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.allStudents;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void setAllStudents(List&lt;Student&gt; allStudents){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.allStudents = allStudents;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void setSchool(School school){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.school = school;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public School getSchool(){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.school;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void setName(String name){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.name = name;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String getName(){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.name;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>}&nbsp;&nbsp;&nbsp; </p> <p>//学生类</p> <p>class Student{&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private String name;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private int age;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //一个学生属于一个班级&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private Cls cls;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Student(String name,int age){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setName(name);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.setAge(age);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void setName(String name){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.name = name;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public String getName(){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.name;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void setAge(int age){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.age = age;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public int getAge(){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.age;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void setCls(Cls cls){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.cls = cls;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Cls getCls(){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return this.cls;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>}&nbsp;&nbsp;&nbsp; <p>//主函数 <p>public class Test{&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; School sch = new School("Java blog");&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cls c1 = new Cls("Java一班");&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cls c2 = new Cls("Java二班");&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cls c3 = new Cls("Java三班");&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student stu1 = new Student("Tiny",20);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student stu2 = new Student("SK",25);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student stu3 = new Student("sevn",23);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student stu4 = new Student("puck",28);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student stu5 = new Student("lion",35);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //设置关系&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sch.add(c1);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c1.setSchool(sch);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sch.add(c2);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c2.setSchool(sch);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sch.add(c3);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c3.setSchool(sch);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c1.add(stu1);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stu1.setCls(c1);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c2.add(stu2);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stu2.setCls(c2);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c2.add(stu3);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stu3.setCls(c2);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c3.add(stu4);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stu4.setCls(c3);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c3.add(stu5);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stu5.setCls(c3);&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //如果要输出全部的内容，则要进行双重循环&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("学校名称："+sch.getName());&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Iterator&lt;Cls&gt; iter1 = sch.getAllClss().iterator();&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(iter1.hasNext()){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cls c = iter1.next();&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("\t|- 班级名称："+c.getName());&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //输出一个班级中的全部学生&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Iterator&lt;Student&gt; iter2 = c.getAllStudents().iterator();&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(iter2.hasNext()){&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student s = iter2.next();&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("\t\t|- 学生姓名："+s.getName()+"，学生年龄："+s.getAge()+" --&gt; "+s.getCls().getSchool().getName());&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; <br>} <p>运行结果如图：<a href="http://www.blogjava.net/images/blogjava_net/TinySK/WindowsLiveWriter/f842ac4a449b_9B6C/_OM38%5B@O$QC@2%7BVTXN%60E9A1_2.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="_OM38[@O$QC@2{VTXN`E9A1" border="0" alt="_OM38[@O$QC@2{VTXN`E9A1" src="http://www.blogjava.net/images/blogjava_net/TinySK/WindowsLiveWriter/f842ac4a449b_9B6C/_OM38%5B@O$QC@2%7BVTXN%60E9A1_thumb.jpg" width="517" height="179"></a> <p>本例并没有什么太多的难点，只是想突出一下类与类之间的关系。本文到此结束，有很多不足之处望大家批评指正。</p><img src ="http://www.blogjava.net/TinySK/aggbug/336908.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TinySK/" target="_blank">闫佳</a> 2010-11-03 11:03 <a href="http://www.blogjava.net/TinySK/archive/2010/11/03/336908.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对象引用间的比较问题</title><link>http://www.blogjava.net/TinySK/archive/2010/10/19/335571.html</link><dc:creator>闫佳</dc:creator><author>闫佳</author><pubDate>Tue, 19 Oct 2010 06:03:00 GMT</pubDate><guid>http://www.blogjava.net/TinySK/archive/2010/10/19/335571.html</guid><wfw:comment>http://www.blogjava.net/TinySK/comments/335571.html</wfw:comment><comments>http://www.blogjava.net/TinySK/archive/2010/10/19/335571.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/TinySK/comments/commentRss/335571.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/TinySK/services/trackbacks/335571.html</trackback:ping><description><![CDATA[<p>&nbsp; 两个对象引用进行比较，比较的是这两个对象的引用，而引用是在内存中的一个地址。当然在这之前我们一定要清楚引用数据类型的堆栈二段式内存管理模式。下面通过一个例子来掩饰引用间的比较。</p> <p>public class Obj {<br>&nbsp;&nbsp;&nbsp; public static&nbsp; void main(String [] args)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Obj t1=new Obj();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Obj t2=new Obj();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(t1.equals(t2))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {System.out.println("true");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("false");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>} <p>运行结果为：&nbsp; false <p>equals方法在这里比较的是对象的引用，用new关键字创建的对象地址是重新分配的，它们进行比较地址当然是不同的。 <p>下面对上面的程序进行扩展： <p>public class Obj {<br>&nbsp;&nbsp;&nbsp;&nbsp; public String name;<br>&nbsp;&nbsp;&nbsp;&nbsp; public int age;<br>&nbsp;&nbsp;&nbsp;&nbsp; public void say(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("姓名："+name+"&nbsp; 年龄："+age);<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>public static&nbsp; void main(String [] args)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Obj t1=new Obj();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Obj t2=new Obj();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Obj t3=new Obj();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t3=t1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(t1.equals(t2))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {System.out.println("true");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("false");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t1.name="Tiny";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t1.age=20;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t1.say();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t2.name="SK";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t2.age=10;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t1.say();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t2.say();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t1=t2;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(t1.equals(t3))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {System.out.println("true");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("false");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t1.say();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t2.say();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t3.say();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(t3.equals(t2))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {System.out.println("true");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("false");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>} <p>运行结果如图：<a href="http://www.blogjava.net/images/blogjava_net/TinySK/WindowsLiveWriter/1bdef11c5df1_C4C4/%7DU%5D9%60G%60)M%7D7N%7B)IFQ%7B%7DXL00_2.jpg"><img title="}U]9`G`)M}7N{)IFQ{}XL00" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="257" alt="}U]9`G`)M}7N{)IFQ{}XL00" src="http://www.blogjava.net/images/blogjava_net/TinySK/WindowsLiveWriter/1bdef11c5df1_C4C4/%7DU%5D9%60G%60)M%7D7N%7B)IFQ%7B%7DXL00_thumb.jpg" width="573" border="0"></a> <p></p> <p></p> <p></p> <p>有关程序的具体执行，通过图例演示，如下：</p> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Obj t1=new Obj();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Obj t2=new Obj();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Obj t3=new Obj();</p> <p>创建Obj类的实例，在内存中开辟存储空间。<a href="http://www.blogjava.net/images/blogjava_net/TinySK/WindowsLiveWriter/1bdef11c5df1_C4C4/clip_image001_2.gif"><img title="clip_image001" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="380" alt="clip_image001" src="http://www.blogjava.net/images/blogjava_net/TinySK/WindowsLiveWriter/1bdef11c5df1_C4C4/clip_image001_thumb.gif" width="522" border="0"></a><br></p> <table cellspacing="0" cellpadding="0"> <tbody> <tr> <td width="109"></td></tr> <tr> <td></td> <td></td></tr></tbody></table> <p>当执行t3=t1;时，内存中存储形式变为：&nbsp;&nbsp; <img title="clip_image001[27]" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="379" alt="clip_image001[27]" src="http://www.blogjava.net/images/blogjava_net/TinySK/WindowsLiveWriter/1bdef11c5df1_C4C4/clip_image001%5B27%5D_thumb.gif" width="522" border="0">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br></p> <p></p> <p></p> <p>原来t3所指向的那块堆内存将变为“垃圾”。由java垃圾回收机制自动回收。</p> <p>if(t1.equals(t2))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {···· }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {····&nbsp; }输出结果当然为 false了。</p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t1.name="Tiny";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t1.age=20;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t1.say();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t2.name="SK";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t2.age=10;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t1.say();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t2.say();<br> <p>执行完这几条语句后，内存结果为：<a href="http://www.blogjava.net/images/blogjava_net/TinySK/WindowsLiveWriter/1bdef11c5df1_C4C4/clip_image001%5B37%5D.gif"><img title="clip_image001[37]" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="379" alt="clip_image001[37]" src="http://www.blogjava.net/images/blogjava_net/TinySK/WindowsLiveWriter/1bdef11c5df1_C4C4/clip_image001%5B37%5D_thumb.gif" width="522" border="0"></a></p> <p><br>&nbsp;</p> <p>至于t1.say();和t2.say();这两条语句的结果我就不用多说了吧，下面是关键部分，当执行t1=t2;后内存中存储结果为：</p> <p><img title="clip_image001[41]" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="380" alt="clip_image001[41]" src="http://www.blogjava.net/images/blogjava_net/TinySK/WindowsLiveWriter/1bdef11c5df1_C4C4/clip_image001%5B41%5D_thumb.gif" width="522" border="0"></p> <table cellspacing="0" cellpadding="0"> <tbody> <tr> <td width="109"> <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p> <p>&nbsp;</p> <p>&nbsp;</p> <p align="left">最后执行的那几步应该就很清晰了，整个程序的流程到此结束。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p></td></tr> <tr> <td> <p align="left">&nbsp;</p></td> <td> <p align="left">&nbsp;</p></td></tr></tbody></table><img src ="http://www.blogjava.net/TinySK/aggbug/335571.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/TinySK/" target="_blank">闫佳</a> 2010-10-19 14:03 <a href="http://www.blogjava.net/TinySK/archive/2010/10/19/335571.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>