??xml version="1.0" encoding="utf-8" standalone="yes"?>成本人h片动漫网站在线观看 ,97成人在线,av不卡高清http://www.aygfsteel.com/Angel1156/archive/2010/12/11/340344.html❤Fly❤FlySat, 11 Dec 2010 08:43:00 GMThttp://www.aygfsteel.com/Angel1156/archive/2010/12/11/340344.htmlhttp://www.aygfsteel.com/Angel1156/comments/340344.htmlhttp://www.aygfsteel.com/Angel1156/archive/2010/12/11/340344.html#Feedback0http://www.aygfsteel.com/Angel1156/comments/commentRss/340344.htmlhttp://www.aygfsteel.com/Angel1156/services/trackbacks/340344.html    JDBC是Java Database ConnectivityQJava数据库连接)的羃写,它有一l用Java语言~写的类和接口组成。通过JDBCQ开发h员可以用Java语言~写各种复杂的数据库应用E序。JDBC已经成ؓ(f)Java语言讉K数据库用的标准API。如合通过JDBC讉K数据库呢Q主要有以下几步Q?/p>

    1、加载数据库驱动。(JDBC本nq不能直接访问数据库Q它需要依赖于JDBC驱动E序。)

    2、与数据库徏立连接。(格式QDriverManager.getConnection("jdbc:mysql://localhostQ或?27.0.0.1Q?端口?数据库名","用户?, "q入数据库的密码");Q?/p>


    3、发送查询或更新语句到数据库?/p>

    4、执行查询ƈq回查询l果?/p>

看一下下面的例子?/p>

/**
* DriverManager 驱动E序理?nbsp; 在数据库和相应驱动程序之间徏立连?br> * Connection 对象代表与数据库的连接,也就是在已经加蝲的Driver和数据库之间建立q接
* Statement 提供在基层连接上q行SQL语句Qƈ且访问结?br> * ResultSet 在Statement执行SQL语句Ӟ有时?x)返回ResultSetl果集,包含的是查询的结果集
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Tester {

    public static void main(String[] args) {   
            query();

    }   
    public static void query(){   
            Connection conn = null;   
            try {
                    //1.加蝲数据库驱?br>                    Class.forName("com.mysql.jdbc.Driver");   
                    //DriverManager 驱动E序理?nbsp; 在数据库和相应驱动程序之间徏立连?br>                    //2.获得数据库连?br>                    conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/jdbc_db", "root", "1234");   
                    //3.创徏语句
                    String sql = "select * from UserTbl";   
                    //q回一个执行SQL的句?br>                    Statement stmt = conn.createStatement(); 
                    //q回查询?br>                    //4.执行语句
                    ResultSet rs = stmt.executeQuery(sql);
                    //5.遍历l果?br>                    while(rs.next()){   
                            int id = rs.getInt(1);   
                            String username = rs.getString(2);   
                            String password = rs.getString(3);   
                            int age = rs.getInt(4);   
                            System.out.println(id+":"+username+":"+password+":"+age);   
                    }   
            } catch (Exception e) {   
                    e.printStackTrace();   
            }finally{   
                    if(conn!=null){   
                            try {    //关闭数据库连?br>                                    conn.close();   
                            } catch (SQLException e) {   
                                    conn = null;   
                                    e.printStackTrace();   
                            }   
                    }   
            }   
    }
}

q行l果Q?

      要注意的是在获得数据库连接时Ҏ(gu)你所用的数据库种c选择加蝲的connector。加载方法先连接数据库的jar包放q你的Project的一个Folder内,然后叛_选择build path-----add  to build path可以了。第三步创徏的SQL应根据你具体的需要编写?

image

      获得数据库连接还可以通过下面两种Ҏ(gu)Q?

// W一U方?br>    public Connection getConnection(String driver, String url, String user,
            String password) {
        Connection conn = null;
        try {
            // Class.forName加蝲驱动
            Class.forName(driver);
            // DriverManager获得q接
            conn = DriverManager.getConnection(url, user, password);
            return conn;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    // W二U方?br>    public Connection openConnection() {
        String driver = "";
        String url = "";
        String user = "";
        String password = "";
        Properties prop = new Properties();
        Connection conn = null;
        try {
            // 加蝲属性文?br>            prop.load(this.getClass().getClassLoader().getResourceAsStream(
                    "DBConfig.properties"));
            driver = prop.getProperty("driver");
            url = prop.getProperty("url");
            user = prop.getProperty("user");
            password = prop.getProperty("password");
            // Class.forName加蝲驱动
            Class.forName(driver);
            // DriverManager获得q接
            conn = DriverManager.getConnection(url, user, password);
            return conn;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

W二U方法比较常用,因ؓ(f)做修改的时候不需要对E序q行大的修改Q只要在配置文g中进行增、删、改可以了?/p>

 

 

写一下关于数据库表的操作SQLQ内容不重要Q重要的是理解结构和含义哈?/p>

//有自增的语句

CREATE TABLE person(
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT ,
name VARCHAR(20) NOT NULL ,
age INT
) ;

/*创徏学生?/
create table Student(
                     Sno char(9) primary key,/*列玩整性约束条ӞSno是主?/
                     Sname char(20) unique,   /*Sname 取唯一?/
                     Ssex char(2),
                     Sage smallint,
                     Sdept char (20),
                   );

/*创徏评?/
create table Course(
                    Cno char(4) primary key,  /*列表完整性约束条ӞCno是主?/
                    Cname char(40),
                    Cpno char(4),    /*Cpno的含义是先修?/
                    Ccredit smallint,
                    foreign key (Cpno) references Course(Cno)
                    /*表完整性的U束条gQCpno是外码,被参照表是CourseQ被参照列式Cno*/
                   );

/*创徏学生评?/
create table SC(
                Sno char (9),
                Cno char(4),
                Grade smallint,
                primary key(Sno,Cno),/*ȝ׃个属性构成,必须作ؓ(f)表完整性进行定?/
                foreign key (Sno) references Student(Sno),/*表完整性约束条ӞSno是外码,被参照表是Student*/
                foreign key (Cno) references course(Cno),/*表完整性约束条ӞSno是外码,被参照表是Student*/
                );

/*向Student表增加“入学时间”列   */
alter table Student add S_entrance date;

/*修改Student中Sage的属?/
alter table Student alter column Sage int;

/*修改Course表中Cname为唯一?/
alter table Course add unique (Cname);

/*删除表Student*/
Drop Table Student CascadeQ(cascade 删除表是该表没有限制条gQ在删除基本表的同时Q相关的依赖对象,例如 视图{,都被删除
                              restrict删除的表不能被其他约束所引用Q不能有视图Q触发器。存储过E或函数{?Q?

                                   /***     表的索引    ***/

/*在Student表的Sname列上建立一个聚族烦?/
create cluster intdex Stusname on Student(Sname);

/*在三个表中徏立唯一索引*/
create unique index Stuno on Student(Sno);
create unique index Coucno on Course(Cno);
create unique index SCno on SC(Sno ASC, Cno DESC);

/*删除Student表中stusname索引*/
drop index Student;

                                /***        数据查询           ***/
一、普通查?

//查询全体学生的详l记?br>select *
from Student;

//查询l过计算的?br>select Sname Q?004-Sage
from Student;

//查询全体学生的姓名、出生年份和所在的院系Q要求用写的字母表C所有系?br>1、select Sname,'year of birth:' birth, 2004-Sage birthday,LOWER(Sdept) departement
   from Student;
2、select Sname,'year of birth:', 2004-Sage ,LOWER(Sdept)
   from Student;

//查询选修评的学生学?br>select QallQSno
from SC;

//查询选修评的学生学P消除取值重复的行)
select distinct Sno
from SC;

二、条件查?

//查询全体计算机系的所有学?nbsp;  
select Sname
from Student
where Sdept='CS';

//查询所有年龄在20岁以下的学生姓名和年?br>select Sname Sage
from Student
where Sage<20;

//成W有不?qing)格学生的学?br>select distinct Sno
from SC
where Grade<60;

//q里不在20?0岁之间的学生姓名、系别、和q龄
select  Sname,Sdept,Sage
from Student
where Sage not between 20 and 23;

//查询在CS、MA、IS学生的姓名和性别
select  Sname,Ssex
from Student
where Sdept in('CS','MA','IS');

//查询不在CS、MA、IS学生的姓名和性别
select  Sname,Ssex
from Student
where Sdept not in('CS','MA','IS');

//查询学号200215121的学生详l情?br>select *
from Student
where Sno like '200215121';  Qlike 可用=替换Q?

//查询所有姓刘的学生姓名和性别
select *
from Student
where Sname like '?';  Q?   {符L(fng)含义Q?br>//删除q龄大于25岁的
delete from Student where age>25;



❤Fly 2010-12-11 16:43 发表评论
]]>
多线E的同步锁(synchronizedQ?/title><link>http://www.aygfsteel.com/Angel1156/archive/2010/11/12/337957.html</link><dc:creator>❤Fly</dc:creator><author>❤Fly</author><pubDate>Fri, 12 Nov 2010 15:56:00 GMT</pubDate><guid>http://www.aygfsteel.com/Angel1156/archive/2010/11/12/337957.html</guid><wfw:comment>http://www.aygfsteel.com/Angel1156/comments/337957.html</wfw:comment><comments>http://www.aygfsteel.com/Angel1156/archive/2010/11/12/337957.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Angel1156/comments/commentRss/337957.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Angel1156/services/trackbacks/337957.html</trackback:ping><description><![CDATA[<p>     多线E共享同一资源Ӟ在某一旉点上?x)出现多个线E同时访问资源的情况。虽然编译没有问题,但是实际用v来却很有可能造成困扰。比如R站卖,把同一个号的两张票卖给两个人,特别是卖火R的时候,恐怕这两位拿同一L(fng)乘客׃(x)闹矛盾了。比如下面的q个例子:(x)</p> <p>代码Q?/p> <p>class MyThread4 implements Runnable{<br>    private int ticket = 8;//定义8张票<br>    public  void run(){<br>        for(int i=0;i<100;i++){<br>                if(this.ticket>0){<br>                    try{<br>                        Thread.sleep(100);<br>                    }catch(Exception e){}<br>                    System.out.println(Thread.currentThread().getName()+"L(fng)?+</p> <p>                     "==>On sael#######"+(ticket--));<br>                }<br>        }<br>    }<br>} </p> <p>public class Tongbukuai {<br>    public static void main(String [] args){<br>        MyThread4 mt = new MyThread4();//׃n同一资源<br>        Thread t1 = new Thread(mt);//<br>        Thread t2 = new Thread(mt);//三个U程代表三个售票H口<br>        Thread t3 = new Thread(mt);//<br>        t1.start();<br>        t2.start();<br>        t3.start();<br>    } <p>} <p>q行l果Q?<p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/e2668d0bb0d5_144EC/image_2.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="246" alt="image" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/e2668d0bb0d5_144EC/image_thumb.png" width="302" border="0"></a> <p>      q怎么可以Q?号和1L(fng)口卖Z两张8L(fng)Q而且卖出的票的L是不正常的。这是因为多个线E同时进入取的循环Q而程序还没来得及(qing)把票数减一Q后面的0号和-1L(fng)的出现是因ؓ(f)当ticket Cؓ(f)1的时?受?号和2号三个线E进入@环里Q?号取得了1L(fng)Q此时应该停止买了Q但?受?L(fng)E还在@环里Q所以就依次取出?号和-1L(fng)?<p>      q种情况的处理办法就是ؓ(f)资源加上一把“锁”。每ơ只允许一个线E进入,当前的线E结束操作后才允怸一个线E进入。实现加同步锁的操作有两U方法:(x)1、同步块  2、同步方法。两U方法都要用到synchronized关键字?<p>      代码?qing)运行结果如下?x) <p>同步块:(x) <p>class MyThread4 implements Runnable{<br>    private int ticket = 8;//定义8张票<br>    public  void run(){<br>        for(int i=0;i<8;i++){</p> <p><br>            synchronized(this){<br>                if(this.ticket>0){<br>                    try{<br>                        Thread.sleep(100);<br>                    }catch(Exception e){}<br>                    System.out.println(Thread.currentThread().getName()+"L(fng)?+</p> <p>                     "==>On sael#######"+(ticket--));<br>                }<br>            }<br>        }<br>    }<br>} </p> <p>public class Tongbukuai {<br>    public static void main(String [] args){<br>        MyThread4 mt = new MyThread4();//׃n同一资源<br>        Thread t1 = new Thread(mt);//<br>        Thread t2 = new Thread(mt);//三个U程代表三个售票H口<br>        Thread t3 = new Thread(mt);//<br>        t1.start();<br>        t2.start();<br>        t3.start();<br>    } <p>} <p>q行l果Q?<p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/e2668d0bb0d5_144EC/image_10.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="209" alt="image" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/e2668d0bb0d5_144EC/image_thumb_4.png" width="371" border="0"></a> <p>同步Ҏ(gu)Q?<p>class MyThread4 implements Runnable{<br>    private int ticket = 8;//定义8张票<br>    public void run(){<br>        for(int i=0;i<8;i++){<br>            try{<br>                Thread.sleep(100);<br>            }catch(Exception e){}<br>            this.sale();<br>        }<br>    }<br>     public synchronized void sale(){<br>         {<br>                if(ticket>0)<br>                {<br>                    System.out.println(Thread.currentThread().getName()+"L(fng)?+this.ticket--+"L(fng)");<br>                }<br>        }<br>    }<br>}<br> <p>public class Tongbukuai {<br>    public static void main(String [] args){<br>        MyThread4 mt = new MyThread4();//׃n同一资源<br>        Thread t1 = new Thread(mt);//<br>        Thread t2 = new Thread(mt);//三个U程代表三个售票H口<br>        Thread t3 = new Thread(mt);//<br>        t1.start();<br>        t2.start();<br>        t3.start();<br>    } <p>} <p></p> <p>q行l果Q?/p> <p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/e2668d0bb0d5_144EC/image_8.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="219" alt="image" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/e2668d0bb0d5_144EC/image_thumb_3.png" width="389" border="0"></a> </p> <p>注意synchronized的位|,不要N位置哦!</p> <p>我的q个放错了= =Q!</p> <p>class MyThread4 implements Runnable{<br>    private int ticket = 8;//定义8张票<br>    public  void run(){<br>        synchronized(this){   //一个窗口全部卖?br>        for(int i=0;i<8;i++){<br>                if(this.ticket>0){<br>                    try{<br>                        Thread.sleep(100);<br>                    }catch(Exception e){}<br>                    System.out.println(Thread.currentThread().getName()+"L(fng)?+"==>On sael#######"+(ticket--));<br>                }<br>        }<br>        }<br>    }<br>} <p>public class Tongbukuai {<br>    public static void main(String [] args){<br>        MyThread4 mt = new MyThread4();//׃n同一资源<br>        Thread t1 = new Thread(mt);//<br>        Thread t2 = new Thread(mt);//三个U程代表三个售票H口<br>        Thread t3 = new Thread(mt);//<br>        t1.start();<br>        t2.start();<br>        t3.start();<br>    } <p>} <p>看看l果Q?<p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/e2668d0bb0d5_144EC/image_12.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="202" alt="image" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/e2668d0bb0d5_144EC/image_thumb_5.png" width="329" border="0"></a> <p>     虽然没卖重号的票Q也没多卖出0?1L(fng)Q但是却全都是一个窗?-0L(fng)口卖出去的。因为在ti也就?L(fng)Estart的时候调用run()Ҏ(gu)Q然?号就(zhn)剧的被错位的synchronized锁在了里面,所以只能一个窗口全部卖完了?<p>     提醒一下大Ӟ不要犯类似的错误?<img src ="http://www.aygfsteel.com/Angel1156/aggbug/337957.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Angel1156/" target="_blank">❤Fly</a> 2010-11-12 23:56 <a href="http://www.aygfsteel.com/Angel1156/archive/2010/11/12/337957.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实现多线E的两种Ҏ(gu)http://www.aygfsteel.com/Angel1156/archive/2010/11/10/337698.html❤Fly❤FlyWed, 10 Nov 2010 03:31:00 GMThttp://www.aygfsteel.com/Angel1156/archive/2010/11/10/337698.htmlhttp://www.aygfsteel.com/Angel1156/comments/337698.htmlhttp://www.aygfsteel.com/Angel1156/archive/2010/11/10/337698.html#Feedback0http://www.aygfsteel.com/Angel1156/comments/commentRss/337698.htmlhttp://www.aygfsteel.com/Angel1156/services/trackbacks/337698.html     U程与进E很怼Q他们都是程序的一个顺序执行机构,但又有一些区别。进E是一个实体,每个q程都有自己独立的状态和自己的专用数据段。线E则׃n数据Q同一个程序中的所有线E只有一个数据段Q线E间可能互相影响Q比如数据访问的互斥和同步?/p>

     U程本n的数据通常只有寄存器数据和E序执行时的堆栈D,所以线E的切换比进E的负担要小。线E不能自动运行,必须跻n在某一q程中,pE触发。一个进E可以有多个U程且进E间不共用线E?/p>

     实现多线E有两种Ҏ(gu)Q一是承Threadc,二是实现Runnable接口?/p>

     l承Threadcd建线E时Q首先要定义一个Threadcȝ子类Qƈ在该子类中重写runQ)Ҏ(gu)。runQ)Ҏ(gu)是线E体Q说明该U程的具体操作。需要创建线E时Q只需创徏该子cȝ对象在调用其startQ)Ҏ(gu)卛_?/p>

     实现Runnable接口创徏U程必须重写该接口的runQ)Ҏ(gu)QRunnable接口只有一个runQ)Ҏ(gu)Q?/p>

     ׃Java是单l承语言Q不直接支持多承,如果一个类已经是其他类的子c,׃能在l承ThreadҎ(gu)使该cL为线E类Q这时就要采用实现Runnable接口的方式?/p>

     两种Ҏ(gu)创徏的线E中h相同目标对象的线E可以共享内存单元,但是实现Runnable接口的线E去创徏目标对象的类可以是某个特定类的子c,因此实现Runnable接口创徏U程比承Threadcd建线E更灉|?/p>

     丑և个小例子来看一下哈

     l承Threadcd现的多线E:(x)

class MyThread1  extends Thread{
     private String name;
     public MyThread1(String name){
         this.name= name;
     }
     public void run(){
         for(int i=0;i<15;i++){
             System.out.println(this.name+"---->Is Running");
         }
     }

}
public class ThreadDemo01{
     public static void main(String[] args){
        Runnable r1 = new MyThread1("U程A");
        Runnable r2 = new MyThread1("U程B");
        Runnable r3 = new MyThread1("U程C");
        Runnable r4 = new MyThread1("U程D");
        Thread t1 = new Thread (r1);
        Thread t2 = new Thread (r2);
        Thread t3 = new Thread (r3);
        Thread t4 = new Thread (r4);
        t1.start();
        t2.start();
        t3.start();
        t4.start();

//也可以这样写
        /* MyThread mt1 = new MyThread("U程A");
         MyThread mt2 = new MyThread("U程B");
         MyThread mt3 = new MyThread("U程C");
         MyThread mt4 = new MyThread("U程D");
         mt1.start();

//同一U程不能q箋启动Q编译没错误Q但q行错误

         mt2.start();
         mt3.start();
         mt4.start();*/
     }
}

0.0Q!q行l果好长Q就不截图了哈,可以自己试试?/p>

     实现Runnable接口的多U程Q实C׃n资源Q:(x)

class MyThread2 implements Runnable{
    //定义十张?/p>

    private int ticket=10;
    public void run(){
        for(int i=0;i<500;i++){
            if(this.ticket>0){
                System.out.println("卖票-------"+(this.ticket--));
            }
        }
    }
}
public class ThreadDemo02 {
    public static void main(String[] args){
        MyThread2 mt =new MyThread2();

        //׃n同一资源
        Thread mt1 = new Thread(mt);
        Thread mt2 = new Thread(mt);
        Thread mt3 = new Thread(mt);
        mt1.start();
        mt2.start();
        mt3.start();
    }

}

q行l果Q?

image

❤Fly 2010-11-10 11:31 发表评论
]]>
关于IO的一些要?/title><link>http://www.aygfsteel.com/Angel1156/archive/2010/11/08/337493.html</link><dc:creator>❤Fly</dc:creator><author>❤Fly</author><pubDate>Sun, 07 Nov 2010 16:44:00 GMT</pubDate><guid>http://www.aygfsteel.com/Angel1156/archive/2010/11/08/337493.html</guid><wfw:comment>http://www.aygfsteel.com/Angel1156/comments/337493.html</wfw:comment><comments>http://www.aygfsteel.com/Angel1156/archive/2010/11/08/337493.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Angel1156/comments/commentRss/337493.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Angel1156/services/trackbacks/337493.html</trackback:ping><description><![CDATA[<p>     首先什么是IO呢?IO是Input和Output卌入输出。Java中将从能够发送字节序列的M数据源取得输入和输出发送到能够接收字节序列的Q何目的地抽象为流的输入和输出。要注意q里说的输入是指从文件、网l连接或内存块中d字节序列到程序中Q输出是指从E序中流出到文g、网l连接或内存块中?/p> <p>     Ҏ(gu)的类型可以从三个角度q行分类?/p> <p>     按数据流的方向不同可以分入流和输出流。(以程序的角度考虑Q?/p> <p>     按处理数据的单位不同分ؓ(f)字节(以byte为单?位)和字W流Q?6位)?/p> <p>     按功能的不同可以分ؓ(f)节点和处理?/p> <p>     下表中的是输入输出的抽象c,是不能进行实例化的?/p> <p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/IO_14D7E/image_2.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="156" alt="image" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/IO_14D7E/image_thumb.png" width="776" border="0"></a></p> <p>     以下的是上面抽象cL较常用的的子c,在实现父cL法的同时都定义了自nҎ(gu)的功能?/p> <blockquote> <p>FileInputStream/FileOutputStream//以File开_(d)节点,用来操作文gQ字节流?/p> <p>FileReader\FileWriter //以File开_(d)处理,用来操作文gQ字W流?/p> <p>BufferedInputStream/BufferedOutputStream//带缓冲的Q处理流Q字节流?/p> <p>BufferedReader\BufferedWriter //带缓冲的Q处理流Q字W流?/p></blockquote> <p>     不难看出以Streaml尾的是字节,以Reader、Writerl尾的是字符?/p> <p>     ~冲要套接在相应的节点上Q将d的数据先攑֜内存中进行缓存,提高了镀锡效率,同时扩展了一些方法。用flushҎ(gu)可以使内存中数据立刻写出?/p> <p>     处理要套接在节Ҏ(gu)或者处理流上,通过Ҏ(gu)据的处理增强E序的读写功能?/p> <p>     举一部分例子Q?</p> <p>     用File创徏文g</p> <p>1.</p> <p>import java.io.File;<br>import java.io.IOException; <p>public class IODemo1 {<br>    public static void main(String[] args) throws IOException{<br>        File f = null;<br>        f = new File("f:"+File.separator+"demo.txt");//或写?"f:\\demo.txt")<br>        System.out.println(f.createNewFile());//当不存在h此抽象\径名指定名称的文件时Q创Z个新的空文g?br>        System.out.println(f.getPath());//获取文g目录<br>        System.out.println(f.isDirectory());//判断文g是否是一个目?br>    }<br>} <p>q行l果 <p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/IO_14D7E/image_4.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="106" alt="image" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/IO_14D7E/image_thumb_1.png" width="317" border="0"></a> </p> <p>2. <p>import java.io.File; <p>public class IODemo2 {<br>    public static void main(String[] args){<br>        File f = null;<br>        f = new File("f:"+File.separator+"demo01.txt");<br>        if(f.exists()){//如果文g存在则删?br>            f.delete();<br>        }<br>        else{<br>            try{<br>                System.out.println(f.createNewFile()+"文g已创?);//文g不存在则创徏<br>            }catch(Exception e){}<br>        }<br>    } <p>} <p>q行l果提示文g已创建?<p>3. <p>import java.io.File; <p>public class IODemo3 {<br>    public static void main(String[] args){<br>        File f = new File("F:");<br>        File file[] = f.listFiles();//F盘的文g和目录名存在数组?br>        for(int i=0;i<file.length;i++){<br>            System.out.println(file[i]);<br>        }<br>        String str[] = f.list();//F盘的文g存在数组?br>        for(int i=0;i<str.length;i++){<br>            System.out.println(str[i]);<br>        }<br>    }<br>} <p>?nbsp; F盘文件太多了Q就不截图了哈,可以自己试一下!^_^</p> <p>     InputStream的例子:(x)</p> <p>import java.io.File;<br>import java.io.FileInputStream;<br>import java.io.InputStream; <p>public class IODemo8 {<br>    public static void main(String[] args) {<br>        File f = new File("e:" + File.separator + "demo.txt");// 要输入到的文?br>        InputStream input = null;<br>        try {<br>            input = new FileInputStream(f);<br>        } catch (Exception e) {<br>        }<br>        byte b[] = new byte[9];<br>        for (int i = 0; i < b.length; i++) {<br>            try {<br>                b[i] = (byte) input.read();<br>            } catch (Exception e) {<br>            }<br>        }<br>        try {<br>            input.close();<br>        } catch (Exception e) {<br>        }<br>        // 输出d的内?br>        System.out.println(new String(b));<br>    } <p>} <p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/IO_14D7E/image_8.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="93" alt="image" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/IO_14D7E/image_thumb_3.png" width="368" border="0"></a> <p>因ؓ(f)定义的数l长度是1024Q所以后面跟了N多个I格?<p>FileInputStrea的例子:(x) <p>import java.io.File;<br>import java.io.FileInputStream;<br>import java.io.FileNotFoundException;<br>import java.io.IOException; <p>public class IODemo13 {<br>    public static void main(String[] args){<br>        int b=0;<br>        FileInputStream in = null;<br>        try{<br>            in = new FileInputStream("e:"+File.separator+"demo1.txt");<br>        }catch(FileNotFoundException e){<br>            e.printStackTrace();<br>        }<br>        long num  = 0;<br>        try{<br>            while((b=in.read())!=-1){//到文件尾得到-1Q结束@?br>                System.out.print((char)b);<br>                num++;<br>            }<br>            in.close();<br>        }catch(IOException e){e.printStackTrace();}<br>        System.out.println("p取了"+num+"个字?);<br>    } <p>} <p>Reader的例子:(x) <p>import java.io.File;<br>import java.io.FileReader;<br>import java.io.Reader; <p>public class IODemo11 {<br>    public static void main(String[] args){<br>        File f=new File("e:"+File.separator+"demo.txt");<br>        Reader r =null;<br>        try{<br>            r = new FileReader(f);<br>        }catch(Exception e){}<br>        char c[] = new char[1024];<br>        int count = 0;<br>        try{<br>            count = r.read(c);<br>        }catch(Exception e){}<br>        System.out.println(new String(c,0,count));<br>    } <p>} <p>q行l果^_^ <p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/IO_14D7E/image_12.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="101" alt="image" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/IO_14D7E/image_thumb_5.png" width="324" border="0"></a> <p>FileWriter的例子:(x) <p>import java.io.File;<br>import java.io.FileWriter; <p>public class IODemo12 {<br>    public static void main(String[] args){<br>        File f =new File("e:"+File.separator+"demo02.txt");//要写入到的文?br>        FileWriter out = null;<br>        try{<br>            out = new FileWriter(f);<br>        }catch(Exception e){}<br>        try{<br>            out.write("Hello fly?);//写入的内?br>        }catch(Exception e){}<br>        try{<br>            out.close();<br>        }catch(Exception e){}<br>    } <p>} <p>?q个在E盘生成了一个文件demo02Q里面有以句话Hello fly—?<p>BufferedReader的例子:(x) <p>import java.io.BufferedReader;<br>import java.io.InputStreamReader; <p>public class IODemo17 {<br>    public static void main(String[] args){<br>        BufferedReader buf = null;<br>        buf = new BufferedReader(new InputStreamReader(System.in));//从键盘获取输入的内容<br>        String str = null;<br>        System.out.print("误入内容:(x)");<br>        try{str = buf.readLine();//d输入的内?br>        buf.close();<br>        }catch(Exception e){}<br>        System.out.println("输入的内容:(x)"+str);<br>    } <p>} <p></p> <p></p> <p></p> <p> </p> <p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/IO_14D7E/image_14.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="115" alt="image" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/IO_14D7E/image_thumb_6.png" width="347" border="0"></a></p> <p> </p> <p>׃Dq些例子吧!有错的请指出来哈^_^Q?/p><img src ="http://www.aygfsteel.com/Angel1156/aggbug/337493.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Angel1156/" target="_blank">❤Fly</a> 2010-11-08 00:44 <a href="http://www.aygfsteel.com/Angel1156/archive/2010/11/08/337493.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZIO实现的简单h事管理系l?/title><link>http://www.aygfsteel.com/Angel1156/archive/2010/11/06/337432.html</link><dc:creator>❤Fly</dc:creator><author>❤Fly</author><pubDate>Sat, 06 Nov 2010 15:40:00 GMT</pubDate><guid>http://www.aygfsteel.com/Angel1156/archive/2010/11/06/337432.html</guid><wfw:comment>http://www.aygfsteel.com/Angel1156/comments/337432.html</wfw:comment><comments>http://www.aygfsteel.com/Angel1156/archive/2010/11/06/337432.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Angel1156/comments/commentRss/337432.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Angel1156/services/trackbacks/337432.html</trackback:ping><description><![CDATA[<p>      实现的功能:(x)d、修改和览记录Q包括姓名,q龄Q职位,薪酬Q?/p> <p>      q行E序昄l果如下Q?/p> <p>1、添加记录:(x)</p> <p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/IO_14754/image_2.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="368" alt="image" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/IO_14754/image_thumb.png" width="480" border="0"></a> </p> <p>2、修改记录:(x)</p> <p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/IO_14754/image_4.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="343" alt="image" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/IO_14754/image_thumb_1.png" width="482" border="0"></a> </p> <p>3、浏览记录:(x)</p> <p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/IO_14754/image_6.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="154" alt="image" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/IO_14754/image_thumb_2.png" width="481" border="0"></a> </p> <p>4、退出系l:(x)</p> <p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/IO_14754/image_8.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="213" alt="image" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/IO_14754/image_thumb_3.png" width="481" border="0"></a> </p> <p>各类之间调用关系如下图所C:(x)</p> <p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/IO_14754/image_12.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="384" alt="image" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/IO_14754/image_thumb_5.png" width="481" border="0"></a> </p> <p> </p> <p>E序代码如下Q?/p> <p>import com.dr.demo.menu.Menu; <p>public class Main {    <br>        public static void main(String[] args) {    <br>                new Menu();    <br>        }    <br>} <p>  <p>public class Menu {<br>    InputData input = null;<br>    public Menu(){<br>        this.input = new InputData();<br>        //循环出现菜单<br>        while(true){<br>            this.show();<br>        }<br>    }<br>    //要定义的菜单的内?br>    public void show(){<br>        System.out.println("\t\t\t\t1~增加人员信息");<br>        System.out.println("\t\t\t\t2~修改人员信息");<br>        System.out.println("\t\t\t\t3~览人员信息");<br>        System.out.println("\t\t\t\t4~退出本pȝQ?);<br>        System.out.println("\n\n请选择要用的操作Q(1.2.3.4Q?);<br>        int temp = input.getInt();<br>        switch(temp){<br>        case 1:{//增加人员信息<br>            new PersonOperate().add();//业务处理?br>                break;<br>        }<br>        case 2:{//修改人员信息<br>            new PersonOperate().update();<br>                break;<br>        }<br>        case 3:{//览人员信息<br>            new PersonOperate().show();<br>                break;<br>        }<br>        case 4:{//退出系l?br>            System.out.println("选择的是退出本pȝQ?);<br>            System.out.println("成功退出本pȝQ?);<br>            System.exit(1);<br>        }<br>        default:{<br>            System.out.println("输入的内容不正确Q请重新输入Q?);<br>            break;<br>        }<br>        }<br>    }<br>} <p>  <p>import java.io.BufferedReader;<br>import java.io.IOException;<br>import java.io.InputStreamReader; <p>public class InputData {<br>    public BufferedReader buf = null;<br>    public InputData(){<br>        buf = new BufferedReader(new InputStreamReader(System.in));<br>    }<br>    public String getString(){<br>        String str = null;<br>        try {<br>            str = buf.readLine();<br>        } catch (IOException e) {<br>            // TODO Auto-generated catch block<br>            e.printStackTrace();<br>        }<br>        return str;<br>    }<br>    public  int getInt(){<br>        int temp = 0;<br>        String str = null;<br>        boolean flag = true;<br>        while(flag){<br>            //输入数据<br>            str = this.getString();<br>            if(!(str.matches("\\d+"))){<br>                //输入的不?-4的数Q提C重新输?br>                System.out.println("输入的数字有误,请重新输入!Q必L整数1-4Q?);<br>            }<br>            else {//数据输入正确Q进行{?br>                temp = Integer.parseInt(str);<br>                //退出@?br>                flag = false;<br>            }<br>        }<br>        return temp;<br>    }<br>    public String getpsString(){<br>        String str = null;<br>        try {<br>            str = buf.readLine();<br>        } catch (IOException e) {<br>            // TODO Auto-generated catch block<br>            e.printStackTrace();<br>        }<br>        return str;<br>    }<br>    public float getFloat(){<br>        float f = 0;<br>        String str = null;<br>        boolean flag = true;<br>        while(flag){<br>            str = this.getString();<br>            if(!(str.matches("\\d+?.\\d{1,2}"))){<br>                //如果输入的不是两位的数则提C重新输?br>                System.out.println("输入的数必须是floatcdQ请重新输入Q?);<br>            }<br>            else{<br>                f = Float.parseFloat(str);<br>                flag = false;//退出@环哈<br>            }<br>        }        <br>        return f;<br>    } <p>} <p></p> <p></p> <p></p> <p></p> <p></p> <p> </p> <p>public class PersonOperate {<br>    private InputData input = null;<br>    public PersonOperate(){<br>        this.input = new InputData();<br>    }<br>    //增加记录<br>    public void add(){<br>        String name = null;<br>        int age = 0;<br>        String position = null;<br>        float salary = 0;<br>        System.out.println("误入姓名:(x)");<br>        name = this.input.getString();<br>        System.out.println("误入年龄:(x)");<br>        age = this.input.getInt(); <br>        System.out.println("误入职位:(x)");<br>        position = this.input.getpsString();<br>        System.out.println("误入薪酬:(x)");<br>        salary = this.input.getFloat();<br>        //生成对象q保存在文g?br>        Person p = new Person(name,age,position,salary);<br>        try{<br>            new FileOperate().save(p);//IO操作?br>            System.out.println("数据保存成功Q?);<br>        }catch(Exception e){<br>        System.out.println("数据保存p|Q?);<br>        }<br>    }<br>    //览记录<br>    public void show(){<br>        Person p = null;<br>        try{<br>            p = (Person)new FileOperate().read();<br>        }catch(Exception e){<br>            System.out.println("昄数据p|Q请(g)查数据是否存在!");<br>        }<br>        if(p!= null){<br>            System.out.println(p);<br>        }<br>    }<br>    //修改记录<br>    public void update(){<br>        Person p = null;<br>        try{<br>            p = (Person)new FileOperate().read();<br>        }catch(Exception e){<br>            System.out.println("昄数据p|Q请(g)查数据是否存在!");<br>        }<br>        if(p!=null){<br>            String name = null;<br>            int age = 0;<br>            String position = null;<br>            float salary = 0.0f;<br>            System.out.println("误入新姓名Q(原姓名:(x)"+p.getName()+"Q?);<br>            name = this.input.getString();<br>            System.out.println("误入新q龄Q(原年?+p.getAge()+"Q?);<br>            age = this.input.getInt();<br>            System.out.println("误入新职位Q(原职?+p.getPosition()+"Q?);<br>            position = this.input.getpsString();<br>            System.out.println("误入新工资Q(原工?+p.getSalary()+"Q?);<br>            salary = this.input.getFloat();<br>            //信息重置<br>            p.setName(name);<br>            p.setAge(age);<br>            p.setPosition(position);<br>            p.setSalary(salary);<br>            try{<br>                new FileOperate().save(p);<br>                System.out.println("数据更新成功Q?);<br>            }catch(Exception e){<br>                System.out.println("数据更新p|Q?);    <br>            }<br>        }<br>    }<br>}</p> <p> </p> <p>import java.io.File;<br>import java.io.FileInputStream;<br>import java.io.FileOutputStream;<br>import java.io.ObjectInputStream;<br>import java.io.ObjectOutputStream; <p>public class FileOperate {<br>    public  static final String FILENAME = "e:"+File.separator+"person.ser";<br>    //把对象保存在文g?br>    public void save(Object obj){<br>        ObjectOutputStream  out = null;<br>        try{<br>            out = new ObjectOutputStream(new FileOutputStream(new File(FILENAME)));<br>            //写入对象<br>            out.writeObject(obj);<br>        }catch(Exception e){<br>            try{<br>                throw e;<br>            }catch(Exception e1){}<br>        }finally{<br>            try{<br>                out.flush();<br>                out.close();<br>            }catch(Exception e){}<br>        }<br>    }<br>    //从文件中d对象<br>    public Object read() throws Exception{<br>        Object obj = null;<br>        ObjectInputStream input =null;<br>        try{<br>            input = new ObjectInputStream(new FileInputStream(new File(FILENAME)));<br>            obj = input.readObject();<br>        }catch(Exception e){<br>            throw e;<br>        }finally{<br>            try{<br>                input.close();<br>            }catch(Exception e){}<br>        }<br>        return obj;<br>    }<br>} <p>  <p>import java.io.Serializable; <p>public class Person implements Serializable{<br>    public String toString(){<br>        return "姓名Q?+this.name+"\tq龄Q?+this.age+"   \t职位Q?+this.position+"\t薪酬Q?+this.salary;<br>    }<br>    private String name;<br>    private int age;<br>    private String position;<br>    private float salary;<br>    public Person(){}<br>    public Person(String name,int age,String position,float salary){<br>        this.name = name;<br>        this.age = age;<br>        this.position = position;<br>        this.salary = salary;<br>    }<br>    public String getName() {<br>        return name;<br>    }<br>    public void setName(String name) {<br>        this.name = name;<br>    }<br>    public int getAge() {<br>        return age;<br>    }<br>    public void setAge(int age) {<br>        this.age = age;<br>    }<br>    public String getPosition() {<br>        return position;<br>    }<br>    public void setPosition(String position) {<br>        this.position = position;<br>    }<br>    public float getSalary() {<br>        return salary;<br>    }<br>    public void setSalary(float salary) {<br>        this.salary = salary;<br>    }<br>} <p> </p> <p>     本程序优点在于各层之间耦合性不大,独立性比较强Q重在理解Menu层、文件操作层、IO操作层三层之间的调用关系。存在的~陷希望读者可以完善?/p><img src ="http://www.aygfsteel.com/Angel1156/aggbug/337432.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Angel1156/" target="_blank">❤Fly</a> 2010-11-06 23:40 <a href="http://www.aygfsteel.com/Angel1156/archive/2010/11/06/337432.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常用集合cȝ单说?/title><link>http://www.aygfsteel.com/Angel1156/archive/2010/11/03/336913.html</link><dc:creator>❤Fly</dc:creator><author>❤Fly</author><pubDate>Wed, 03 Nov 2010 03:48:00 GMT</pubDate><guid>http://www.aygfsteel.com/Angel1156/archive/2010/11/03/336913.html</guid><wfw:comment>http://www.aygfsteel.com/Angel1156/comments/336913.html</wfw:comment><comments>http://www.aygfsteel.com/Angel1156/archive/2010/11/03/336913.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Angel1156/comments/commentRss/336913.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Angel1156/services/trackbacks/336913.html</trackback:ping><description><![CDATA[<p> </p> <p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/c169cda89326_A6C0/image_4.png"><img title="image" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="507" alt="image" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/c169cda89326_A6C0/image_thumb_1.png" width="742" border="0"></a> </p> <p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/c169cda89326_A6C0/image_6.png"><img title="image" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="403" alt="image" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/c169cda89326_A6C0/image_thumb_2.png" width="578" border="0"></a>上面的只是比较常用的一部分Qƈ不全面,Ƣ迎你补充。有错误的话h出来哈?</p><img src ="http://www.aygfsteel.com/Angel1156/aggbug/336913.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Angel1156/" target="_blank">❤Fly</a> 2010-11-03 11:48 <a href="http://www.aygfsteel.com/Angel1156/archive/2010/11/03/336913.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZSWT的医院挂h队系l?/title><link>http://www.aygfsteel.com/Angel1156/archive/2010/11/02/336876.html</link><dc:creator>❤Fly</dc:creator><author>❤Fly</author><pubDate>Tue, 02 Nov 2010 14:09:00 GMT</pubDate><guid>http://www.aygfsteel.com/Angel1156/archive/2010/11/02/336876.html</guid><wfw:comment>http://www.aygfsteel.com/Angel1156/comments/336876.html</wfw:comment><comments>http://www.aygfsteel.com/Angel1156/archive/2010/11/02/336876.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Angel1156/comments/commentRss/336876.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Angel1156/services/trackbacks/336876.html</trackback:ping><description><![CDATA[<p>实现的功能:(x)</p> <p>      1.病h挂号使用的客L(fng)Q在界面上选择想选择的专家对应的专家P屏幕上提C挂h功,同时该病hdC所选的专家对应的病人队列中?/p> <p>      2.医院工作人员使用的客L(fng)Q在界面上单ȝ应的专家号就?x)在其对应的病h队列中取Z位病人,在屏q上昄该病人对应的id和名字(防止出现重名的尴)q提C到对应的专家处p。当没有病hӞ做出提示?/p> <p>装ȝc?</p> <p>public class Doctor {<br>    private String ID; <p>    public String getID() {<br>        return ID;<br>    } <p>    public void setID(String iD) {<br>        ID = iD;<br>    } <p>} <p>装病hc?<p>public class Patient {<br>    private String id;<br>    private String name;<br>    private String doctorID;//病h选择的专家的ID<br>    public String getDoctorID() {<br>        return doctorID;<br>    }<br>    public void setDoctorID(String doctorID) {<br>        this.doctorID = doctorID;<br>    }<br>    public String getid() {<br>        return id;<br>    }<br>    public void setid(String id) {<br>        this.id = id;<br>    }<br>    public String getName() {<br>        return name;<br>    }<br>    public void setName(String name) {<br>        this.name = name;<br>    }<br>} <p>挂号服务器类 <p>import java.util.HashMap;<br>import java.util.LinkedList;<br>import java.util.List;<br>import java.util.Map;<br>import java.util.Queue; <p>public class Hospitalserver {<br>    public Map<String,Queue<Patient>> specialistList = new HashMap<String,Queue<Patient>>();<br>    Queue<Patient> doc1Queue = new LinkedList<Patient>();<br>    Queue<Patient> doc2Queue = new LinkedList<Patient>();<br>    Queue<Patient> doc3Queue = new LinkedList<Patient>();<br>    List<Patient>  allPatient = new LinkedList<Patient>();<br>    public void init(){<br>        //实例化三个医生,其ID是对应的专家号<br>        Doctor doc1 = new Doctor();<br>        doc1.setID("01");<br>        Doctor doc2 = new Doctor();<br>        doc2.setID("02");<br>        Doctor doc3 = new Doctor();<br>        doc3.setID("03");<br>        //实例?个病?q添加到对应的专安列中<br>        Patient aa = new Patient();<br>        aa.setid("001");<br>        aa.setName("joe a");<br>        aa.setDoctorID("01");<br>        doc1Queue.add(aa);<br>        Patient bb = new Patient();<br>        bb.setid("002");<br>        bb.setName("joe b");<br>        aa.setDoctorID("01");<br>        doc1Queue.add(bb);<br>        //********************************************<br>        Patient cc = new Patient();<br>        cc.setid("003");<br>        cc.setName("joe c");<br>        aa.setDoctorID("02");<br>        doc2Queue.add(cc);<br>        Patient dd = new Patient();<br>        dd.setid("004");<br>        dd.setName("joe d");<br>        aa.setDoctorID("02");<br>        doc2Queue.add(dd);<br>        //********************************************<br>        Patient ee = new Patient();<br>        ee.setid("005");<br>        ee.setName("joe e");<br>        aa.setDoctorID("03");<br>        doc3Queue.add(ee);<br>        Patient ff = new Patient();<br>        ff.setid("006");<br>        ff.setName("joe f");<br>        aa.setDoctorID("03");<br>        doc3Queue.add(ff);<br>        specialistList.put(doc1.getID(), doc1Queue);<br>        specialistList.put(doc2.getID(), doc2Queue);<br>        specialistList.put(doc3.getID(), doc3Queue);<br>    }<br>} <p>病h使用的客L(fng) <p>import java.util.Queue; <p>import org.eclipse.swt.SWT;<br>import org.eclipse.swt.events.SelectionAdapter;<br>import org.eclipse.swt.events.SelectionEvent;<br>import org.eclipse.swt.graphics.Font;<br>import org.eclipse.swt.widgets.Button;<br>import org.eclipse.swt.widgets.Display;<br>import org.eclipse.swt.widgets.Shell;<br>import org.eclipse.swt.widgets.Text; <p>public class HospitalPatientUI {<br>    public static void main(String[] args) {<br>        final Display display = Display.getDefault();<br>        final Shell shell = new Shell();<br>        shell.setMaximized(true);<br>        shell.setText("医院排队之病Z用的客户度端");<br>        // ------------------新插入的界面核心代码------------------------<br>        Hospitalserver hospatient = new Hospitalserver();// 实例化类<br>        hospatient.init();// 初始化队列服务器<br>        final Queue<Patient> doc1Queue = hospatient.specialistList.get("01");<br>        final Queue<Patient> doc2Queue = hospatient.specialistList.get("02");<br>        final Queue<Patient> doc3Queue = hospatient.specialistList.get("03"); <p>        final Text patient1Txt = new Text(shell, SWT.MULTI);<br>        patient1Txt.setBounds(100, 50, 200, 150); <p>        final Button patient1button = new Button(shell, SWT.Activate);<br>        patient1button.addSelectionListener(new SelectionAdapter() { // 加一个选择监听?br>                    public void widgetSelected(SelectionEvent e) {<br>                        //实例化一个病人,q添加到他选择的专家的队列?br>                        Patient patient1 = new Patient();<br>                        doc1Queue.add(patient1);<br>                        patient1Txt.setText("Ƣ迎(zhn)选择一号专家\n请在{待区稍{\n另外请关注广播和屏幕通知Q?);<br>                    }<br>                }); <p>        patient1button.setBounds(100, 330, 200, 75); // 讄按钮位置<br>        patient1button.setFont(new Font(display, "宋体", 12, SWT.BOLD));<br>        patient1button.setText("一号专?);// 讄按钮上的文字 <p>        // ***************************************************************** <p>        final Text patient2Txt = new Text(shell, SWT.MULTI);<br>        patient2Txt.setBounds(400, 50, 200, 150); <p>        final Button patient2button = new Button(shell, SWT.Activate);<br>        patient2button.addSelectionListener(new SelectionAdapter() { // <br>                    public void widgetSelected(SelectionEvent e) {<br>                        Patient patient2 = new Patient();<br>                        doc1Queue.add(patient2);<br>                        patient2Txt.setText("Ƣ迎(zhn)选择二号专家\n请在{待区稍{\n另外请关注广播和屏幕通知Q?);<br>                    }<br>                });<br>        patient2button.setBounds(400, 330, 200, 75); // 讄按钮位置<br>        patient2button.setFont(new Font(display, "宋体", 12, SWT.BOLD));<br>        patient2button.setText("二号专家");// 讄按钮上的文字 <p>        // *************************************************** <p>        final Text patient3Txt = new Text(shell, SWT.MULTI);<br>        patient3Txt.setBounds(700, 50, 200, 150); <p>        final Button patient3button = new Button(shell, SWT.Activate);<br>        patient3button.addSelectionListener(new SelectionAdapter() { <br>                    public void widgetSelected(SelectionEvent e) {<br>                        Patient patient3 = new Patient();<br>                        doc1Queue.add(patient3);<br>                        patient3Txt.setText("Ƣ迎(zhn)选择三号专家\n请在{待区稍{\n另外请关注广播和屏幕通知Q?);<br>                    }<br>                });<br>        patient3button.setBounds(700, 330, 200, 75); // 讄按钮位置<br>        patient3button.setFont(new Font(display, "宋体", 13, SWT.BOLD));<br>        patient3button.setText("三号专家");// 讄按钮上的文字 <p>        // ------------------END---------------------------------------------<br>        shell.layout();<br>        shell.open();<br>        while (!shell.isDisposed()) {<br>            if (!display.readAndDispatch())<br>                display.sleep();<br>        } <p>    }<br>} <p>q行l果Q?<p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/SWT_134CA/image_2.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="350" alt="image" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/SWT_134CA/image_thumb.png" width="644" border="0"></a> <p>医院工作人员使用的客L(fng)Q?<p>import java.util.Queue;<br>import org.eclipse.swt.SWT;<br>import org.eclipse.swt.events.SelectionAdapter;<br>import org.eclipse.swt.events.SelectionEvent;<br>import org.eclipse.swt.graphics.Font;<br>import org.eclipse.swt.widgets.Button;<br>import org.eclipse.swt.widgets.Display;<br>import org.eclipse.swt.widgets.Shell;<br>import org.eclipse.swt.widgets.Text; <p>public class HospitalWorkerUI {<br>        public static void main(String[] args) {<br>            final Display display = Display.getDefault();<br>            final Shell shell = new Shell();<br>            shell.setMaximized(true);<br>            shell.setText("医院排队之医院工作h员用的客户?);<br>            // ------------------新插入的界面核心代码------------------------<br>            Hospitalserver qs = new Hospitalserver();//实例化类<br>            qs.init();//初始化队列服务器<br>            final Queue<Patient> doc1Queue=qs.specialistList.get("01");<br>            final Queue<Patient> doc2Queue=qs.specialistList.get("02");<br>            final Queue<Patient> doc3Queue=qs.specialistList.get("03"); <p>            final Text doc1Txt = new Text(shell,SWT.MULTI);<br>            doc1Txt.setBounds(100, 50, 200, 150);<br>            final Button doc1button = new Button(shell, SWT.Activate);<br>            doc1button.addSelectionListener(new SelectionAdapter() { // 加一个选择监听?br>                        public void widgetSelected(SelectionEvent e) {<br>                                        Patient one=doc1Queue.poll();<br>                                        if(one!=null)<br>                                        {<br>                                            doc1Txt.setText("?+one.getid()+"L(fng)?+one.getName()+"C号专家处pQ请其他病hE等?);<br>                                        }<br>                                        else<br>                                        {<br>                                            doc1Txt.setText("暂时没有病h了,hE作休息?);<br>                                        }<br>                                    }<br>                                }); <p>            doc1button.setBounds(100, 330, 200, 75); // 讄按钮位置<br>            doc1button.setFont(new Font(display,"宋体",12,SWT.BOLD));<br>            doc1button.setText("一号专?);// 讄按钮上的文字<br>            //***************************************************************** <p>            final Text doc2Txt = new Text(shell,SWT.MULTI);<br>            doc2Txt.setBounds(400, 50, 200, 150);<br>            final Button doc2button = new Button(shell, SWT.Activate);<br>            doc2button.addSelectionListener(new SelectionAdapter() { // 加一个�?择监听器<br>                        public void widgetSelected(SelectionEvent e) { <p>                            Patient two=doc2Queue.poll();<br>                            if(two!=null)<br>                            {<br>                                doc2Txt.setText("?+two.getid()+"L(fng)?+two.getName()+"请到二号专家处就诊,请其他病人稍{?);<br>                            }<br>                            else<br>                            {<br>                                doc2Txt.setText("暂时没有病h了,hE作休息?);<br>                            }<br>                        }<br>                    });<br>            doc2button.setBounds(400, 330, 200, 75); // 讄按钮位置<br>            doc2button.setFont(new Font(display,"宋体",12,SWT.BOLD));<br>            doc2button.setText("二号专家");// 讄按钮上的文字<br>            //*************************************************** <p>            final Text doc3Txt = new Text(shell,SWT.MULTI);<br>            doc3Txt.setBounds(700, 50, 200, 150);<br>            final Button doc3button = new Button(shell, SWT.Activate);<br>            doc3button.addSelectionListener(new SelectionAdapter() { // 加一个�?择监听器<br>                        public void widgetSelected(SelectionEvent e) {<br>                             Patient three=doc3Queue.poll();<br>                                if(three!=null)<br>                                {<br>                                    doc3Txt.setText("?+three.getid()+"L(fng)?+three.getName()+"请到三号专家处就诊,请其他病人稍{?);<br>                                }<br>                                else<br>                                {<br>                                    doc3Txt.setText("暂时没有病h了,hE作休息?);<br>                                }<br>                            }<br>                        });<br>            doc3button.setBounds(700, 330, 200, 75); // 讄按钮位置<br>            doc3button.setFont(new Font(display,"宋体",13,SWT.BOLD));<br>            doc3button.setText("三号专家");// 讄按钮上的文字 <p>            // ------------------END---------------------------------------------<br>            shell.layout();<br>            shell.open();<br>            while (!shell.isDisposed()) {<br>                if (!display.readAndDispatch())<br>                    display.sleep();<br>            }<br>        } <br>} <p>q行l果Q?<p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/SWT_134CA/image_4.png"><img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="345" alt="image" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/SWT_134CA/image_thumb_1.png" width="644" border="0"></a> <p>     不之处Q没有实现自动判断病人选择的专家号Q没有实现病Z用的客户端和医院工作人员使用的客L(fng)的同步更新。当然还有一些其他的不Q期待?zhn)指出q提出完善意见?<img src ="http://www.aygfsteel.com/Angel1156/aggbug/336876.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Angel1156/" target="_blank">❤Fly</a> 2010-11-02 22:09 <a href="http://www.aygfsteel.com/Angel1156/archive/2010/11/02/336876.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZSWT的银行排队系l?/title><link>http://www.aygfsteel.com/Angel1156/archive/2010/11/02/336823.html</link><dc:creator>❤Fly</dc:creator><author>❤Fly</author><pubDate>Tue, 02 Nov 2010 08:51:00 GMT</pubDate><guid>http://www.aygfsteel.com/Angel1156/archive/2010/11/02/336823.html</guid><wfw:comment>http://www.aygfsteel.com/Angel1156/comments/336823.html</wfw:comment><comments>http://www.aygfsteel.com/Angel1156/archive/2010/11/02/336823.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Angel1156/comments/commentRss/336823.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Angel1156/services/trackbacks/336823.html</trackback:ping><description><![CDATA[<p>实现的功能:(x)</p> <p>      1.银行工作人员使用的客L(fng)实现功能Q每ơ单击Button“下一个”,H口上会(x)昄提示X号顾客去yL(fng)口办理业务;当顾客队列里没有֮时对工作人员作出提示?/p> <p>      2.֮使用的客L(fng)实现功能Q每当有֮单击Button“个Z务”,H口上会(x)昄当前֮在队伍中的位|以?qing)他的前面还有多位֮Q当排在当前֮前面的顾客h数超q?0人时提示前面已经?0个hQ是否l等候。关于这个金卡通道嘛,现在行各种?x)员啊VIP啦等{,q个金卡通道当然是为银行的VIP准备的。当单击Button“金卡通道”时Q将当前Waiterd到顾客队列的首位q在H口上显C无需{待~~?/p> <p>代码如下Q?/p> <p>      装֮cR?/p> <p>public class Waiter { <p>    private int num;         //֮?br>    private int frontNum;  //排在前面的h?br>    private int flag;          //卡类? <p>    public int getFlag() {<br>        return flag;<br>    } <p>    public void setFlag(int flag) {<br>        this.flag = flag;<br>    } <p>    public int getNum() {<br>        return num;<br>    } <p>    public void setNum(int num) {<br>        this.num = num;<br>    } <p>    public int getFrontNum() {<br>        return frontNum;<br>    } <p>    public void setFrontNum(int frontNum) {<br>        this.frontNum = frontNum;<br>    }<br>} <p>  <p>初始化顾客队列(30个hQ? <p>import java.util.LinkedList;<br>import java.util.List;<br>import java.util.Queue; <p>public class QueueServer { <p>    LinkedList<Waiter> waiterList = new LinkedList<Waiter>();<br>    public LinkedList<Waiter> init(){<br>        for(int i=1;i<=30;i++){<br>            Waiter w = new Waiter();<br>            w.setNum(i);<br>            w.setFrontNum(i-1);<br>            waiterList.offer(w);<br>        }<br>        return waiterList;<br>    }<br>} <p>  <p>֮使用的客L(fng)Q? <p>import java.util.LinkedList; </p> <p>import org.eclipse.swt.SWT;<br>import org.eclipse.swt.events.SelectionAdapter;<br>import org.eclipse.swt.events.SelectionEvent;<br>import org.eclipse.swt.graphics.Font;<br>import org.eclipse.swt.widgets.Button;<br>import org.eclipse.swt.widgets.Display;<br>import org.eclipse.swt.widgets.Shell;<br>import org.eclipse.swt.widgets.Text; </p> <p>public class Swtgoldcard {<br>        public static void main(String[] args) {<br>            final Display display = Display.getDefault();<br>            final Shell shell = new Shell();<br>            shell.setMaximized(true);<br>            shell.setText("银行排队pȝ之金卡插?);<br>            // ------------------新插入的界面核心代码------------------------<br>            QueueServer qs = new QueueServer();//实例化顾客队列类<br>            final LinkedList<Waiter> waiterList = qs.init();//初始化队列服务器<br>            final Text txt = new Text(shell,SWT.MULTI);<br>            txt.setBounds(40, 50, 500, 450);<br>            final Button button = new Button(shell, SWT.Activate);<br>            button.addSelectionListener(new SelectionAdapter() { // 加一个选择监听?br>                        public void widgetSelected(SelectionEvent e) {<br>                            //System.out.println("############### " + waiterList.size());<br>                            Waiter waiter = new Waiter();                        <br>                            waiter.setNum(waiterList.size()+1);<br>                            waiter.setFrontNum(waiterList.size());<br>                            waiterList.offer(waiter);<br>                            if(waiterList.size() <= 50){<br>                                txt.setText( "(zhn)现在排?+waiter.getNum()+"位置上\n(zhn)前面有"+waiter.getFrontNum()+"个h\nh耐心{候!");<br>                            }else{<br>                                txt.setText("(zhn)前面已l排50个h\n误(g)虑是否l箋{待Q\n"+"(zhn)现在排?+waiter.getNum()+"位置上\n(zhn)前面有"+waiter.getFrontNum()+"个h\nh耐心{候!");<br>                            }<br>                        }<br>            });<br>            button.setBounds(180, 530, 200, 75); // 讄按钮位置<br>            button.setFont(new Font(display,"宋体",12,SWT.BOLD));<br>            button.setText("个h业务");// 讄按钮上的文字</p> <p> </p> <p><br>            //金卡通道<br>            final Text goldTxt = new Text(shell,SWT.MULTI);<br>            goldTxt.setBounds(900, 50, 500, 450);<br>            final Button goldButton = new Button(shell, SWT.Activate);<br>            goldButton.addSelectionListener(new SelectionAdapter() { // 加一个选择监听?br>                        public void widgetSelected(SelectionEvent e) {<br>                            Waiter goldWaiter = new Waiter();<br>                            goldWaiter.setFlag(1);<br>                            waiterList.addFirst(goldWaiter);                        <br>                            goldTxt.setText("(zhn)是金卡用户Q|可以优先接受服务Q|无需{待Q\n"+"(zhn)现在排?+goldWaiter.getNum()+"位置上,\n(zhn)前面有"+goldWaiter.getFrontNum()+"个h");<br>                        }<br>            });<br>            goldButton.setBounds(1060, 530, 200, 75); // 讄按钮位置<br>            goldButton.setFont(new Font(display,"宋体",12,SWT.BOLD));<br>            goldButton.setText("金卡通道");// 讄按钮上的文字 </p> <p>            // ------------------END---------------------------------------------<br>            shell.layout();<br>            shell.open();<br>            while (!shell.isDisposed()) {<br>                if (!display.readAndDispatch())<br>                    display.sleep();<br>            }<br>        } <p>        } <p>q行l果Q? <p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/SWT_CE14/image_8.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="251" alt="image" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/SWT_CE14/image_thumb_3.png" width="580" border="0"></a> <p>当等待队列中人数过50人时昄l果Q? <p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/SWT_CE14/image_10.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="277" alt="image" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/SWT_CE14/image_thumb_4.png" width="584" border="0"></a> <p>  <p>银行工作人员使用的客L(fng)Q? <p>import java.util.Queue; <p>import org.eclipse.jface.dialogs.MessageDialog;<br>import org.eclipse.swt.SWT;<br>import org.eclipse.swt.events.SelectionAdapter;<br>import org.eclipse.swt.events.SelectionEvent;<br>import org.eclipse.swt.widgets.Button;<br>import org.eclipse.swt.widgets.Display;<br>import org.eclipse.swt.widgets.Shell;<br>import org.eclipse.swt.widgets.Text; <p>public class BankWorkerUI {<br>    public static void main(String[] args) {<br>        final Display display = Display.getDefault();<br>        final Shell shell = new Shell();<br>        shell.setSize(352, 253);<br>        shell.setText("银行排队pȝ之工作h员客L(fng)");<br>        // ------------------新插入的界面核心代码------------------------<br>        QueueServer qs = new QueueServer();//实例化类<br>        final Queue<Waiter> waiterList = qs.init();//初始化队列服务器<br>        final Text txt = new Text(shell,SWT.MULTI);<br>        txt.setBounds(65, 30, 220, 70);<br>        final Button button = new Button(shell, SWT.Activate);<br>        button.addSelectionListener(new SelectionAdapter() { // 加一个选择监听?br>                    public void widgetSelected(SelectionEvent e) {<br>                        //System.out.println("############### " + waiterList.size());<br>                        Waiter waiter= waiterList.poll();<br>                        if(waiter!= null){<br>                          txt.setText(waiter.getNum()+"号顾客请?L(fng)口办理业?);<br>                        }else{<br>                            txt.setText("暂时没有֮要办理业务,(zhn)可以休息一下!\n ");<br>                        }<br>                    }<br>                });<br>        button.setBounds(120, 141, 100, 25); // 讄按钮位置<br>        button.setText("下一?);// 讄按钮上的文字 <p>        // ------------------END---------------------------------------------<br>        shell.layout();<br>        shell.open();<br>        while (!shell.isDisposed()) {<br>            if (!display.readAndDispatch())<br>                display.sleep();<br>        }<br>    }<br>} <p>q行l果Q? <p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/SWT_CE14/image_6.png"><img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="214" alt="image" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/SWT_CE14/image_thumb_2.png" width="304" border="0"></a> <p>q个E序q有~陷Q没有用到数据库Q无法实现工作h员所用的客户端与֮所用的客户端同步更斎ͼ请高手指点完善? <img src ="http://www.aygfsteel.com/Angel1156/aggbug/336823.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Angel1156/" target="_blank">❤Fly</a> 2010-11-02 16:51 <a href="http://www.aygfsteel.com/Angel1156/archive/2010/11/02/336823.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>面向对象的基本特?/title><link>http://www.aygfsteel.com/Angel1156/archive/2010/10/19/335546.html</link><dc:creator>❤Fly</dc:creator><author>❤Fly</author><pubDate>Tue, 19 Oct 2010 04:08:00 GMT</pubDate><guid>http://www.aygfsteel.com/Angel1156/archive/2010/10/19/335546.html</guid><wfw:comment>http://www.aygfsteel.com/Angel1156/comments/335546.html</wfw:comment><comments>http://www.aygfsteel.com/Angel1156/archive/2010/10/19/335546.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Angel1156/comments/commentRss/335546.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Angel1156/services/trackbacks/335546.html</trackback:ping><description><![CDATA[<p>面向对象的基本特性包括三点:(x)装  l承  多态?/p> <p>      1装?/p> <p>      装性是一U信息隐蔽技术,它体Ccȝ说明Q是对象重要的特性。封装数据和操作该数据的方法(函数Q封装ؓ(f)一个整体,形成独立性很强的模块Q得用户只能看到对象的外部Ҏ(gu)(对象可以接受哪些信息Q可以进行何U处理)Q而对象的内部Ҏ(gu)(内部private的属性和实现处理能力的算法)用户是看不到的。简a之就是封装对象的设计者和对象的用者分开Q用者只要知道对象可以做什么,无需知道是怎么做出来的。借助装有助于提高类和系l的安全性?/p> <p>      看一下下面的例子Q?/p> <p>没有装的程序:(x)</p> <p>class Person{ <p>String name; <p>int age; <p>public void say(){ <p>System.out.println(“NAME:***?name+?nbsp;  AGE:***?age); <p>} <p>} <p>public class Demo01{ <p>public static void main(String arg[]){ <p>Person p=new Person(); <p>p.name=“Michael? <p>p.age  = ?6; <p>p.say(); <p>} <p>} <p>  q行l果Q? <p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/210342f89b66_976A/Demo02_2.jpg"><img title="Demo02" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="62" alt="Demo02" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/210342f89b66_976A/Demo02_thumb.jpg" width="244" border="0"></a>   <p>  未封装时E序可以通过~译q行也没有问题,但是q龄是不可以值的。这是属性直接对外可见造成的笑话? <p>  <p>  <p>装后的E序Q? <p>class Person{ <p><strong>private String name; </strong> <p><strong>private int age;</strong> <p>public void say(){ <p>System.out.println(“NAME:***?name+?nbsp;  AGE:***?age); <p>} <p>} <p>public class Demo02{ <p>public static void main(String arg[]){ <p>Person p=new Person(); <p>p.name=“Michael? <p>p.age=-26; <p>p.say(); <p>} <p>} <p>  q行l果Q? <p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/210342f89b66_976A/Demo01_2.jpg"><img title="Demo01" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="104" alt="Demo01" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/210342f89b66_976A/Demo01_thumb.jpg" width="304" border="0"></a> <p>  ׃q行了封装,属性对外不可见Q所以编译时提示上图灰色区域中的内容? <p>  对于装的属性的讄和取得应该通过setter和getterҎ(gu)Q通过Setter和GetterҎ(gu)讄装的属性ƈ对年龄D行检查的E序如下Q? <p>class Person{ <p>    private String name; <p>    private int age; <p>    public void setName(String n){ <p>    name=n; <p>    } <p>    public String getName(){ <p>    return name; <p>    } <p>    public void setAge(int a){ //Setter是入口,Getter是出口,在setterҎ(gu)处检查年龄是否在允许的范围内? <p>    if(a>=0&&a<120){ <p>    age=a; <p>    }else{ <p>    age = -1;<br>    System.out.println("q龄非法");//提示q龄非法; <p>    } <p>    } <p>    public int getAge(){ <p>    return age; <p>    } <p>    public void say(){ <p>    System.out.println("NAME:***"+name+"   AGE:***"+age); <p>    } <p>    } <p>    public class Demo04{ <p>    public static void main(String arg[]) <p>    { <p>    Person p=new Person(); <p>    p.setName("Michael"); <p>    p.setAge(-26); <p>    p.say(); <p>    } <p>    } <p>  此时q行后提C年龄非法:(x) <p> <p> <p></p> <p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/210342f89b66_976A/Demo03_2.jpg"><img title="Demo03" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="87" alt="Demo03" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/210342f89b66_976A/Demo03_thumb.jpg" width="244" border="0"></a> </p> <p>  Q承?/p> <p>  l承是一U由已有cd建新cȝ机制Q利用承,可以先创Z个共有属性的一般类Q根据这个一般类再创建具有特D属性的新类。新cȝ承一般类的方法ƈҎ(gu)需要增加它自己的新Ҏ(gu)。有l承而得到的cȝ为子c,被承的cȝ为父c(类Q,当然子类也可以成为父cR如下图Q由下向上看Q双炔R机类和歼?yn)Lc都l承了战斗机cȝ特点但又分别h自己新的功能Q同P战斗机类和民用机c都h飞机cL有的特点也都扩展了属于自q新功能。也是说双炔R机和歼击机既h飞机的全部特点又拥有战斗机的全部特点?/p> <p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/210342f89b66_976A/p2_6.jpg"><img title="p2" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="227" alt="p2" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/210342f89b66_976A/p2_thumb_2.jpg" width="445" border="0"></a> </p> <p>用程序说明一下:(x)</p> <p>class Person{<br>    String name;<br>    int age;<br>    public String getInfo()<br>    {<br>        return "姓名Q?--"+this.name+"\n"+"q龄Q?--"+this.age;</p> <p>    }<br>}</p> <p> </p> <p>Q/Studentcȝ承Personc?/p> <p><br>class Student extends Person</p> <p>{<br>      String school;Q/StudentcM扩展的属?br>} </p> <p> </p> <p>public class Demo01 {<br>        public static void main(String args[])<br>        {<br>            Student s = new Student();</p> <p>    Q/?Person  cM为属性赋?nbsp;       </p> <p>  s.name = "Michael";<br>            s.age = 25;</p> <p>    Q/?Student  cM为属性赋?br>            s.school = "Camoridge University " ;<br>            System.out.println(s.getInfo()+"\n"+"学校Q?--"+s.school);</p> <p>            }<br>        } </p> <p>q行l果如下</p> <p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/210342f89b66_976A/p1_2.jpg"><img title="p1" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="114" alt="p1" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/210342f89b66_976A/p1_thumb.jpg" width="244" border="0"></a> </p> <p>  Q多态?/p> <p>  同一个信息被不同的对象接收到时可能生完全不同行为,q就是多态性。通过l承q程中的Ҏ(gu)重写可以实现多态。多态可以改善程序的l织构架Q提高程序的可读性,也是E序更容易扩充?/p> <p>用下面的E序说明一下:(x)</p> <p>class A    <br>{ <br>        public void fun1() <br>        { <br>                System.out.println("使用父类Ҏ(gu)!"); <br>        } <br>}<br>class B extends A <br>{ <br>        // 此方法重写父cM的fun1()Ҏ(gu) <br>        public void fun1() <br>        { <br>                System.out.println("父类Ҏ(gu)已被子类Ҏ(gu)重写Q?+"\n"+"使用子类Ҏ(gu)"); <br>        } <br>}<br>public class Overrid<br>{ <br>        public static void main(String args[]) <br>        { <br>                A a = new A();<br>                B b = new B(); <br>                a.fun1();<br>                b.fun1(); <br>        } <br>} <p>q行l果如下Q?<p><a href="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/210342f89b66_976A/p3_4.jpg"><img title="p3" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="103" alt="p3" src="http://www.aygfsteel.com/images/blogjava_net/Angel1156/WindowsLiveWriter/210342f89b66_976A/p3_thumb_1.jpg" width="215" border="0"></a> <p>同样使用了fun1()Ҏ(gu)Q在父类和子cM产生了完全不同的l果?/p> <p>  在此单说明一下重写和重蝲的区别。重写(OverrideQ是发生在子cd父类之间Qؓ(f)满需要,子类对从父类中承来的方法进行重写,Ҏ(gu)的名U和参数cd或个数相同但是子cL法的讉K权限不可以比父类更严根{而重载(OverloadingQ只发生在同一个类中,Ҏ(gu)的名U相同,但是参数的个数或者类型不同?/p><img src ="http://www.aygfsteel.com/Angel1156/aggbug/335546.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Angel1156/" target="_blank">❤Fly</a> 2010-10-19 12:08 <a href="http://www.aygfsteel.com/Angel1156/archive/2010/10/19/335546.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>I指针异常和数组界异常http://www.aygfsteel.com/Angel1156/archive/2010/10/11/334345.html❤Fly❤FlyMon, 11 Oct 2010 02:52:00 GMThttp://www.aygfsteel.com/Angel1156/archive/2010/10/11/334345.htmlhttp://www.aygfsteel.com/Angel1156/comments/334345.htmlhttp://www.aygfsteel.com/Angel1156/archive/2010/10/11/334345.html#Feedback0http://www.aygfsteel.com/Angel1156/comments/commentRss/334345.htmlhttp://www.aygfsteel.com/Angel1156/services/trackbacks/334345.html        1.什么是I指针异常呢Q就比如国让小日本来骚(d)C国,但是如果日本早沉没了不存在了Q此时就?x)发生空指针异常。当定义的字W串为空Q引用该对象的方法时׃(x)发生I指针异常。空指针异常l常发生Q这只是众多情况中的一U?br /> 错误的代码如下:(x)
public class Error1 {
 
 public static void main(String[] args){
  
  String str = null;
  System.out.print(str.substring(1));
 }
}
昄错误Q?font style="font-size: 10pt; color: #ff0000" size="2">Exception in thread "main" java.lang.NullPointerException?br /> 正确代码为:(x)
public class Error1 {
 
 public static void main(String[] args){
  
  String str = "null";
  System.out.print(str.substring(2));
 }
}

正确的运行结果ؓ(f)Q?font style="font-size: 8pt" size="2">llQnull的后两位llQ?/font>
         2.数组界异常Q定义的数组arr长度?Q正常的下标为(0,1,2,3,4,5,Q,所以arr[6]是非法的?br /> public class Error2 {
 
 public static void main(String[] args){
  
  int j = 0;
  int arr[] = {1,2,3,4,5,6};
        for(int i=0;i<arr.length;i++){
         j +=arr[i];
         arr[6] = j;
         System.out.print(j);
        }  
 }
}
昄错误QException in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6?br /> 正确代码Q?br /> public class Error2 {
 
 public static void main(String[] args){
  
  int j = 0;
  int arr[] = {1,2,3,4,5,6};
        for(int i=0;i<arr.length;i++){
         j +=arr[i];
         arr[5] = j;
         System.out.print(j);
        }  
 }
}
正确的运行结果:(x)1 3 6 10 15 30?br />
                      


❤Fly 2010-10-11 10:52 发表评论
]]>
վ֩ģ壺 ׶| | | ʡ| | | ʼ| | ѧ| ɽ| | | | | | | | | | | | Ϸ| ֦| ӯ| ֦| | Ͻ| °| | ï| ѭ| | | | Ϫ| | ɽ| ¬| | Ͻ| |