??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品一区毛片,国产精品国产三级国产普通话三级,在线资源avhttp://www.aygfsteel.com/TinySK/zh-cnTue, 06 May 2025 09:41:12 GMTTue, 06 May 2025 09:41:12 GMT60定义U程和创建线E对?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/TinySK/archive/2010/11/08/337580.html</guid><wfw:comment>http://www.aygfsteel.com/TinySK/comments/337580.html</wfw:comment><comments>http://www.aygfsteel.com/TinySK/archive/2010/11/08/337580.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/TinySK/comments/commentRss/337580.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/TinySK/services/trackbacks/337580.html</trackback:ping><description><![CDATA[<p>      定义U程有两U方法,一U是l承Threadc,一U是实现Runnable接口Q这两种Ҏ存在各自的优~点。和定义U程对应的就是创建线E对象,也有两种Ҏ。下面给大家介绍一下这两种Ҏ来定义线E及相对应的创徏U程对象的方法?/p> <p>1.l承Threadcd义线E?/p> <p>      定义一个线E可以通过l承ThreadcL实现Q这是一U相对简单的定义U程的方法。在ThreadcM有一个runҎQ在定义的线E中需要重写这个方法。在重写runҎ中可以定义该U程要执行的语句。当U程启动ӞrunҎ中的E序成Z条独立的执行U程。示例代码如下:</p> <p>public  class   XianCheng  extends  Thread</p> <p>{</p> <p>       public void run()</p> <p>      {</p> <p>            System.out.println("runҎ执行");</p> <p>         }</p> <p>}      </p> <p>改程序是无法执行的,因ؓ没有mainҎQ也是没有启动U程的方法。下面先介绍如何创徏U程对象。代码如?</p> <p>XianCheng   xc = new  XianCheng();</p> <p>从上面的代码可以看出Q创建线E对象的Ҏ和创建普通对象的Ҏ是一L。但是这只是对于使用l承Threadcd建线E的Ҏ来说的。我们也可以通过ThreadcL定义U程对象Q如</p> <p>Thread  th = new ThreadQ)Q?/p> <p>2.实现Runnable接口定义U程</p> <p>      在Runnable接口中具有一个抽象的runҎQ在实现Runnable接口Ӟ需要实现runҎ。示例代码如下:</p> <p>public  class  test2  implements  Runnable{</p> <p>    public   void   runQ){</p> <p>        System.out.println("runҎ执行");</p> <p>        }</p> <p>}</p> <p>在用实现Runnable接口定义的线E中Q要比上面复杂些Q因为直接创建类的对象创建的q不是一个线E对象,要想创徏U程对象必须要借助ThreadcR只有ThreadcL能定义线E对象?/p> <p>代码如下Qtest2     t2 = new  test2Q)Q?/p> <p>             Thread  tt2 = new  ThreadQt2Q;</p> <p>tt2才是U程对象QThreadcd?个构造器Q最常用的就是具有一个参数的Q我们可以先创徏一个实现Runnable接口的类对象Q然后作为Threadcȝ参数来创建多个线E对象?/p> <p>当我们徏立了一个线E类的时候,p启动U程Q初学者会认ؓ启动U程是调用U程cM的方法。但q点是错误的Q虽然可以用对象?runQ)来调用runҎQ但qƈ不是U程的启动。要惛_动线E还要调用线E的starҎQ如Qtt2.startQ)Q但要注意,一个线E只能调用一ơstarҎQ第二次启动U程会发生IllegalThreadException异常。有关线E的启动Q应用问题以后再做介l?/p> <p>好了Q有关线E的基础知识先介l到q里。有不的地方请大家批评指正?/p><img src ="http://www.aygfsteel.com/TinySK/aggbug/337580.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/TinySK/" target="_blank">闫佳</a> 2010-11-08 23:20 <a href="http://www.aygfsteel.com/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.aygfsteel.com/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.aygfsteel.com/TinySK/archive/2010/11/04/337207.html</guid><wfw:comment>http://www.aygfsteel.com/TinySK/comments/337207.html</wfw:comment><comments>http://www.aygfsteel.com/TinySK/archive/2010/11/04/337207.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/TinySK/comments/commentRss/337207.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/TinySK/services/trackbacks/337207.html</trackback:ping><description><![CDATA[<p>学Java也有好一阵子了,当涉及到Java的实际应用时发现自己的基跟不上。基不行Q概念不清,对以后的学习造成不小的负面媄响。仔l分析后Q自己ȝ了一些Java里面很基的东西,希望以后把基打好Q高手就不必q目了呀Q哈哈~~~</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>由子c访问父cȝ内容</p></td> <td valign="top" width="189"> <p>直接讉K本类中的内容</p></td></tr> <tr> <td width="158"> <p>讉K属?/p></td> <td valign="top" width="189"> <p>super.父类属性,如果属性没有被覆写Q则也可以不写super?/p></td> <td valign="top" width="189"> <p>This.本类属性?/p></td></tr> <tr> <td width="158"> <p>讉KҎ</p></td> <td valign="top" width="189"> <p>super.父类Ҏ(),如果Ҏ没有被覆写,则可以不用加super也表C用父cM的方法?/p></td> <td valign="top" width="189"> <p>this.本类Ҏ(),可以不写this,也表C用本cȝҎ?/p></td></tr> <tr> <td width="158"> <p>讉K构造方?/p></td> <td valign="top" width="189"> <p>super是访问父cM的构造方法,必须攑֜首行?/p></td> <td valign="top" width="189"> <p>this 是访问本cM的其他构造方法,必须攑֜首行?/p></td></tr></tbody></table> <p> </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>Ҏ名称相同Q参数列表不同?/p></td> <td valign="top" width="189"> <p>Ҏ名称相同Q参数列表相同,Ҏ的访问权限不能更严格?/p></td></tr> <tr> <td width="189"> <p>范围</p></td> <td valign="top" width="189"> <p>发生在一个类中?/p></td> <td valign="top" width="189"> <p>发生在承关pMQ由子类q行覆写?/p></td></tr></tbody></table> <p>三、Vector和ArrayList <p>   1.vector是线E同步的Q所以它也是U程安全的,而arraylist是线E异步的Q是不安全的。如果不考虑到线E的安全因素Q一般用<br>       arraylist效率比较高?br>   2.如果集合中的元素的数目大于目前集合数l的长度Ӟvector增长率ؓ目前数组长度?00%,而arraylist增长率ؓ目前数组长度 <p>      ?0%.如过在集合中使用数据量比较大的数据,用vector有一定的优势?br>    ArrayList 和Vector是采用数l方式存储数据,此数l元素数大于实际存储的数据以便增加和插入元素Q都允许直接序号索引元素Q?br>    但是插入数据要设计到数组元素Ud{内存操作,所以烦引数据快插入数据慢,Vector׃使用了synchronizedҎQ线E安全)所以性能上比ArrayList要差Q?br>    LinkedList使用双向链表实现存储Q按序号索引数据需要进行向前或向后遍历Q但是插入数据时只需要记录本的前后即可,所以插入数度较快! <p>四、arraylist和linkedlist <p>     1.ArrayList是实CZ动态数l的数据l构QLinkedListZ链表的数据结构?br>     2.对于随机讉Kget和setQArrayList觉对优于LinkedListQ因为LinkedList要移动指针?br>     3.对于新增和删除操作add和removeQLinedList比较占优势,因ؓArrayList要移动数据?br>       q一点要看实际情늚。若只对单条数据插入或删除,ArrayList的速度反而优于LinkedList?br>       但若是批量随机的插入删除数据QLinkedList的速度大大优于ArrayList. 因ؓArrayList每插入一条数据,要移动插入点及之后的所有数据? <p>五、HashMap与TreeMap <p>       1、HashMap通过hashcode对其内容q行快速查找,而TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得C个有序的l果你就应该使用TreeMapQHashMap中元素的排列序是不固定的)? <p>          HashMap中元素的排列序是不固定的)? <p>       2、HashMap通过hashcode对其内容q行快速查找,而TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得C个有序的l果你就应该使用TreeMapQHashMap中元素的排列序是不固定的)。集合框架”提供两U常规的Map实现QHashMap和TreeMap (TreeMap实现SortedMap接口)? <p>       3、在Map 中插入、删除和定位元素QHashMap 是最好的选择。但如果您要按自焉序或自定义顺序遍历键Q那么TreeMap会更好。用HashMap要求d的键cL定义了hashCode()?equals()的实现。  q个TreeMap没有调优选项Q因树d于^衡状态? <p>六、hashtable与hashmap <p>     1.历史原因:Hashtable是基于陈旧的DictionarycȝQHashMap是Java 1.2引进的Map接口的一个实? <p>     2.同步?Hashtable是线E安全的Q也是说是同步的,而HashMap是线E序不安全的Q不是同步的 <p>     3.|只有HashMap可以让你空gZ个表的条目的key或value <p>七、Set中的数据对象没有序且不可以重复?br>      List中的数据对象有顺序且可以重复?<img src ="http://www.aygfsteel.com/TinySK/aggbug/337207.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/TinySK/" target="_blank">闫佳</a> 2010-11-04 10:59 <a href="http://www.aygfsteel.com/TinySK/archive/2010/11/04/337207.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>cMcM间的包含关系?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/TinySK/archive/2010/11/03/336908.html</guid><wfw:comment>http://www.aygfsteel.com/TinySK/comments/336908.html</wfw:comment><comments>http://www.aygfsteel.com/TinySK/archive/2010/11/03/336908.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/TinySK/comments/commentRss/336908.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/TinySK/services/trackbacks/336908.html</trackback:ping><description><![CDATA[<p>我们知道面向对象语言的三大特征是装、ѝ多态。我们在定义了一个类之后Q可以通过再定义一个类Q且q个cȝ承上一个类来扩展其功能。其实,在我们定义类ӞcM的成员变量除了基本数据类型也可以是引用数据类型。下面我编写一个有关类成员变量中引用数据类型用的例子?/p> <p>在这个程序中Q首先定义一个学校类Q再定义一个班U类Q最后定义一个学生类。在ȝ序中通过讄不同cd对象间的关系Q达到类与类之间包含的关pR?/p> <p>代码如下Q?/p> <p>//学校c?/p> <p>package com.TinySK;<br>import java.util.ArrayList;<br>import java.util.Iterator;<br>import java.util.List;<br>class School{    <br>        private String name;    <br>        //一个学校有多个班 Q通过集合cList  实现?<br>        private List<Cls> allClss;    <br>        public School(String name){    <br>                this.setName(name);    <br>                this.setAllClss(new ArrayList<Cls>());    <br>        }    <br>        //向学校中加入班    <br>        public void add(Cls cls){    <br>                this.allClss.add(cls);    <br>        }    <br>        public void setName(String name){    <br>                this.name = name;    <br>        }    <br>        public String getName(){    <br>                return this.name;    <br>        }    <br>        public void setAllClss(List<Cls> allClss){    <br>                this.allClss = allClss;    <br>        }    <br>        public List<Cls> getAllClss(){    <br>                return this.allClss;    <br>        }    <br>} </p> <p>//班c?/p> <p>class Cls{    <br>        private String name;    <br>        private School school;  //此处定义了一个学校类的对象?nbsp; <br>        private List<Student> allStudents;//一个班U有多个学生 Q通过集合cList  实现?/p> <p>       public Cls(String name){    <br>                this.setName(name);    <br>                this.setAllStudents(new ArrayList<Student>());    <br>        }    <br>        //向班U中加入学生    <br>        public void add(Student stu){    <br>                this.allStudents.add(stu);    <br>        }    <br>        public List<Student> getAllStudents(){    <br>                return this.allStudents;    <br>        }    <br>        public void setAllStudents(List<Student> allStudents){    <br>                this.allStudents = allStudents;    <br>        }    <br>        public void setSchool(School school){    <br>                this.school = school;    <br>        }    <br>        public School getSchool(){    <br>                return this.school;    <br>        }    <br>        public void setName(String name){    <br>                this.name = name;    <br>        }    <br>        public String getName(){    <br>                return this.name;    <br>        }    <br>}    </p> <p>//学生c?/p> <p>class Student{    <br>        private String name;    <br>        private int age;    <br>        //一个学生属于一个班U?nbsp;   <br>        private Cls cls;    <br>        public Student(String name,int age){    <br>                this.setName(name);    <br>                this.setAge(age);    <br>        }    <br>        public void setName(String name){    <br>                this.name = name;    <br>        }    <br>        public String getName(){    <br>                return this.name;    <br>        }    <br>        public void setAge(int age){    <br>                this.age = age;    <br>        }    <br>        public int getAge(){    <br>                return this.age;    <br>        }    <br>        public void setCls(Cls cls){    <br>                this.cls = cls;    <br>        }    <br>        public Cls getCls(){    <br>                return this.cls;    <br>        }    <br>}    <p>//d?<p>public class Test{    <br>        public static void main(String[] args){    <br>                School sch = new School("Java blog");    <br>                Cls c1 = new Cls("Java一?);    <br>                Cls c2 = new Cls("Java二班");    <br>                Cls c3 = new Cls("Java三班");    <br>                Student stu1 = new Student("Tiny",20);    <br>                Student stu2 = new Student("SK",25);    <br>                Student stu3 = new Student("sevn",23);    <br>                Student stu4 = new Student("puck",28);    <br>                Student stu5 = new Student("lion",35);    <br>                //讄关系    <br>                sch.add(c1);    <br>                c1.setSchool(sch);    <br>                sch.add(c2);    <br>                c2.setSchool(sch);    <br>                sch.add(c3);    <br>                c3.setSchool(sch);    <br>                c1.add(stu1);    <br>                stu1.setCls(c1);    <br>                c2.add(stu2);    <br>                stu2.setCls(c2);    <br>                c2.add(stu3);    <br>                stu3.setCls(c2);    <br>                c3.add(stu4);    <br>                stu4.setCls(c3);    <br>                c3.add(stu5);    <br>                stu5.setCls(c3);    <br>                //如果要输出全部的内容Q则要进行双重@?nbsp;   <br>                System.out.println("学校名称Q?+sch.getName());    <br>                Iterator<Cls> iter1 = sch.getAllClss().iterator();    <br>                while(iter1.hasNext()){    <br>                        Cls c = iter1.next();    <br>                        System.out.println("\t|- 班名称Q?+c.getName());    <br>                        //输出一个班U中的全部学?nbsp;   <br>                        Iterator<Student> iter2 = c.getAllStudents().iterator();    <br>                        while(iter2.hasNext()){    <br>                                Student s = iter2.next();    <br>                                System.out.println("\t\t|- 学生姓名Q?+s.getName()+"Q学生年龄:"+s.getAge()+" --> "+s.getCls().getSchool().getName());    <br>                        }    <br>                }    <br>        }    <br>} <p>q行l果如图Q?a href="http://www.aygfsteel.com/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.aygfsteel.com/images/blogjava_net/TinySK/WindowsLiveWriter/f842ac4a449b_9B6C/_OM38%5B@O$QC@2%7BVTXN%60E9A1_thumb.jpg" width="517" height="179"></a> <p>本例q没有什么太多的隄Q只是想H出一下类与类之间的关pR本文到此结束,有很多不之处望大家批评指正?/p><img src ="http://www.aygfsteel.com/TinySK/aggbug/336908.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/TinySK/" target="_blank">闫佳</a> 2010-11-03 11:03 <a href="http://www.aygfsteel.com/TinySK/archive/2010/11/03/336908.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>对象引用间的比较问题http://www.aygfsteel.com/TinySK/archive/2010/10/19/335571.html闫佳闫佳Tue, 19 Oct 2010 06:03:00 GMThttp://www.aygfsteel.com/TinySK/archive/2010/10/19/335571.htmlhttp://www.aygfsteel.com/TinySK/comments/335571.htmlhttp://www.aygfsteel.com/TinySK/archive/2010/10/19/335571.html#Feedback0http://www.aygfsteel.com/TinySK/comments/commentRss/335571.htmlhttp://www.aygfsteel.com/TinySK/services/trackbacks/335571.html  两个对象引用q行比较Q比较的是这两个对象的引用,而引用是在内存中的一个地址。当然在q之前我们一定要清楚引用数据cd的堆栈二D式内存理模式。下面通过一个例子来掩饰引用间的比较?/p>

public class Obj {
    public static  void main(String [] args)
       {
               Obj t1=new Obj();
               Obj t2=new Obj();
               if(t1.equals(t2))
          {System.out.println("true");
          }
          else
          {
              System.out.println("false");
          }
       }
}

q行l果为:  false

equalsҎ在这里比较的是对象的引用Q用new关键字创建的对象地址是重新分配的Q它们进行比较地址当然是不同的?

下面对上面的E序q行扩展Q?

public class Obj {
     public String name;
     public int age;
     public void say(){
      System.out.println("姓名Q?+name+"  q龄Q?+age);
     }
public static  void main(String [] args)
       {
                Obj t1=new Obj();
                Obj t2=new Obj();
                Obj t3=new Obj();
                      t3=t1;
          if(t1.equals(t2))
          {System.out.println("true");
          }
          else
          {
              System.out.println("false");
          }
                 t1.name="Tiny";
                 t1.age=20;
                 t1.say();
                 t2.name="SK";
                 t2.age=10;
                 t1.say();
                 t2.say();
                 t1=t2;
        if(t1.equals(t3))
          {System.out.println("true");
          }
          else
          {
              System.out.println("false");
          }
                 t1.say();
                 t2.say();
                 t3.say();
        if(t3.equals(t2))
        {System.out.println("true");
        }
        else
        {
            System.out.println("false");
        }
       }
}

q行l果如图Q?a href="http://www.aygfsteel.com/images/blogjava_net/TinySK/WindowsLiveWriter/1bdef11c5df1_C4C4/%7DU%5D9%60G%60)M%7D7N%7B)IFQ%7B%7DXL00_2.jpg">}U]9`G`)M}7N{)IFQ{}XL00

有关E序的具体执行,通过图例演示Q如下:

                Obj t1=new Obj();
                Obj t2=new Obj();
                Obj t3=new Obj();

创徏Objcȝ实例Q在内存中开辟存储空间?a href="http://www.aygfsteel.com/images/blogjava_net/TinySK/WindowsLiveWriter/1bdef11c5df1_C4C4/clip_image001_2.gif">clip_image001

当执行t3=t1;Ӟ内存中存储Ş式变为:   clip_image001[27]                           

原来t3所指向的那块堆内存变为“垃䏀。由java垃圾回收机制自动回收?/p>

if(t1.equals(t2))
          {···· }
          else
          {····  }输出l果当然?false了?/p>                 t1.name="Tiny";
                 t1.age=20;
                 t1.say();
                 t2.name="SK";
                 t2.age=10;
                 t1.say();
                 t2.say();

执行完这几条语句后,内存l果为:clip_image001[37]


 

至于t1.say();和t2.say();q两条语句的l果我就不用多说了吧Q下面是关键部分Q当执行t1=t2;后内存中存储l果为:

clip_image001[41]

      

 

 

最后执行的那几步应该就很清CQ整个程序的程到此l束?nbsp;    

 

 



闫佳 2010-10-19 14:03 发表评论
]]>
վ֩ģ壺 | | ƽ| | פ| ɽ| ˫| Ž| | ɽ| ɽ| Ϫ| ӥ̶| | | | | ʯ| | | | ˮ| ͼʲ| | 㶫ʡ| | | | ͬ| | | | | ɽ| | | | ʤ| ÷| ֹ| ʲ|