??xml version="1.0" encoding="utf-8" standalone="yes"?>天堂av在线播放,久久91导航,中文字幕精品一区二区精品绿巨人 http://www.aygfsteel.com/hitlang/category/11589.html学以致用zh-cnThu, 01 Mar 2007 13:50:46 GMTThu, 01 Mar 2007 13:50:46 GMT60Java学习W记http://www.aygfsteel.com/hitlang/articles/71847.htmlliulangliulangMon, 25 Sep 2006 15:00:00 GMThttp://www.aygfsteel.com/hitlang/articles/71847.htmlhttp://www.aygfsteel.com/hitlang/comments/71847.htmlhttp://www.aygfsteel.com/hitlang/articles/71847.html#Feedback0http://www.aygfsteel.com/hitlang/comments/commentRss/71847.htmlhttp://www.aygfsteel.com/hitlang/services/trackbacks/71847.html2004-8-12    星期四  ?阴有暴雨

1.  如何讄Java开发环?Win2000)
{:Start-Control panel-System-Advance-Environment Variables
    讄环境变量Q?br />    PATH = %PATH%;c:\j2sdk1.4.2_05\bin;
    CLASSPATH = .;

    注:javac~辑器L在当前查找文Ӟ而java解释器只有在c\径中包含??目录的情况下才会查找当前目录。如果类路径没有讄Qƈ不会产生什么问?-黙认c\径中包含?”目录。但Q如果设|了c\径,却没有包含?”话Q就会生问?-E序~译时不会出错,但却无法q行?/p>

2.  什么是Java?
{:1) ~程语言(先编译再解释)Q?br />    2) 开发环境;
    3) q行环境Q?br />    4) 部v环境Q?/p>

3.  Java的特?br />{:1) ?Java语法是C++语法的一个“纯净”版?Q?br />    2) 可移植?br />    3) 面向对象
    4) 分布?Java把打开套接字连接等J琐的网lQ务变得非常容?
    5) 健壮?Java~译器会查出很多其他语言在运行时L昄出来的错误;Java采用的指针模型可以消除重写内存和数据崩溃的可?
    7) 多线E?多线E编E的单性是Java成ؓ行的服务器端开发语a的主要原因之一)
    8) 安全(用Java可以构徏防病毒和防篡改的pȝ)
    9) 动?Java可随意增加新的方法以及实例变量,而客L却不需做Q何的更改)
    10)体系l构中立(字节码与计算Zpȝ构无养I只要存在q行时系l,可在多种处理器上执行)

4. Java中基本概?br />{:1) 源文?br />       在最层只包括一个publiccd的类/接口Q文件名与类/接口名同q以.java作ؓ文g后缀?br />    2) ?package ,在源文g中this idertify只能攑֜W一行,且最多只能是一?
       一个将cd接口l织在一块的实体Q在文gpȝ中以目录/文g夹型式呈现?/p>

事实上今天所学知识远比上面列出的要多Q更多的知识炚w过l习提前和我们见面了Q像如何自行创徏cR创建类的属性和Ҏ、控制打印输出的格式(通过消息对话框输出结?、以及局部变量、实例变量、全局变量(cd量、静态变?间的区别。以上知识点在以后的学习中会逐渐接触刎ͼ是故不详l介l。另外,今天的学习内Ҏ自己以前׃几倍的旉才摸索清楚的。有人手把手引着Q真好!

教Java的老师有二位,一位传授知识、一位辅导练习。授评薛老师讲课不温不火、胸有成竏V看CQ仿佛看到Java的高度。辅导的薛老师有问必答、拉q了我们与Java的距R?/p>

2004-8-13    星期五 ??/p>

1. 注释的三UŞ?br />{: //  单行注释
     /*  一或多行注?*/
     /** 文注释     */

2. Java代码中的“;”、“{}”、??br />{:Java语句以分号分隔;
    Java代码块包含在大括号内Q?br />    忽略I格?/p>

3. 标识W?br />{:1) 用以命名cR方法和变量、以及包Q?br />    2) 以字W、“_”或?”开_
    3) 无长度限制?/p>

4. 数据cd
{:1) 整型
       byte       8位     ?-128?27
       short      16位    ?-2^15?^15-1
       int        32位    ?-2^31?^31-1
       long       64位    ?-2^63?^63-1
    2) 点cd
       float      32位    ?
       double     64?br />    3) 字符cd
       char       16?br />    4) 布尔?br />       boolean    false/true

    注:1) char是无W号?6位整?字面值必ȝ单引hhQ?br />        2) String 是类Q非原始数据cdQ?br />        3) 长整型数字有一个后~为“L”或“l”,八进制前~为?”,十六q制前缀为?x”;
        4) 黙认点cd为doubleQ?br />        5) float数据cd有一个后~为“f”或“F?Double数据cd后可跟后~“D”或“d?

5. identifiers Naming Rules
{:1) c?接口名首字母大写Q?br />    2) Ҏ、变量名W一个字母小写,其余首字母大写;
    3) 帔R名称全部大写Q?br />    4) 包名全部写?/p>

6. 理解对象
{:在OOP中,E序由对象组成,q些对象h某种属性以及对象可执行的某些操?Ҏ)。OOP高效的关键在于它让每个对象负责执行一l相关的d?/p>


2004-8-16    星期一   ?/p>

表达式和控制程

1. 变量和作用域

{:1) 局部变?br />       定义在方法内部,其作用域ҎQ也UCؓ临时变量、栈变量?br />    2) 实例变量
       定义在类内部Q其作用域ؓ整个cR如未定义初|pȝ会自动ؓ其赋黙认倹{?/p>

       cd                     黙认?br />       byte                     0
       short                    0
       int                      0
       long                     0L
       float                    0.0f
       double                   0.0d
       char                     '\u0000'
       boolean                  false
       All reference types      null
 
2. 操作W?br />{:1) >>   前面是零补零Q前面是一补一;
    2) >>>  无符号右U?
    3) &&   短\与,前面为假Q表辑ּ为假Q后面不计;
    4) ||   短\或,前面为真Q表辑ּ为真Q后面不计算Q?/p>

3. 数字cd之间的{?br />{:1) byte ——→ short ——→ int ——→ long
    2) char ——→ int - - - ?float
    3) float ——→ double
    4) long - - - ?float+++++++++++++++
    5) long - - - ?double
    6) int ——→ double

    注:1)实箭头表C无信息损失的{换,虚箭头表C{换可能引h失;
        2)int和float同ؓ32位,但float要有几位表示q的位数Q在_ֺ位数上要比int要小Q所以有可能会有损失。long转ؓdouble同理Q?br />        3)char和short同ؓ16位,但char属无W号敎ͼ其范围ؓ0~2^16, short的范围ؓ-2^15~2^15-1 , 所以char和short不能怺转换Q?br />        4)byte、short、char属child型,在计时会自动{为int型,然后转ؓ更大范围cd(long、short、double)?/p>

4. 强制cd转换
{:1) 语法Q圆括号中给转换的目标类型,随后是待转换的变量名。例Qdoublc x=9.997;int nx = (int)x;
    2) 如果试图强制转换的类型超Z目标cd的范_l果是一个被截取的不同的数?
    3) 不能在布值和M数字cd间强制类型{换,如确要{换,可用条件表辑ּQ例Qb?1:0?/p>

5. 自动转换的三U类?br />{:1) 赋值       ?double d=1.23f;
    2) Ҏ调用     Math.sqrt(2);
    3) 数D{?-9.232e20+1;


6. 强制转换(cast)的二U类?br />{:1) 赋?br />    2) Ҏ调用

7. switch与case
{:1) switch变量可以是byte、short、char、int;
    2) default值可以位于switch代码剙、中部或底部;
    3) break不是必须的。例如:case 1:case 2:case 3:

 

2004-8-17    星期二     ??/p>

数组

1. 声明数组
{:1) 一l相同类?可以是类)数据的集?
    2) 一个数l是一个对?
    3) 声明一个数l没有创Z个对?
    4) 数组能以下列形式声明Q?br />       int[] i ?int i[]
       Car[] c ?Car c[]

2. 创徏数组
{:1) 创徏原始数组    int[] i = new int[2];
    2) 创徏cȝ型数l?Car[] c = new Car[100];
    3) 数组创徏后有初始倹{?/p>

3. 初始化数l?br />{:1) 初始化、创建、和声明分开
       int[] i;
       i = new int[2];
       i[0] = 0;
       i[1] = 1;
    2) 初始化、创建、和声明在同一旉
       int[] i = {0,1};
       Car[] c = {new Car(),new Car()};

4. 多维数组
{:1) 有效
       int[][] i1 = new int[2][3];
       int[][] i2 = new int[2][];
       i2[0] = new int[2],i2[1] = new int[3];
    2) 无效
       int[][] i1 = new int[][3];
    3) 数组长度
       int[] i = new int[5];
       int len = i.length;//len = 5;
       Student[][] st = new Student[4][6];
       len = st.length;//len = 4;
       len = st[0].length;//len = 6;


请问以下哪段代码哪个可正执行?(a,c)
1. a  char[] i = {'a','b'}; i = new char[]{'b','c'};
   b  char[] i = {'a','b'}; i = {'b','c'};
   c  char[] i = new char[2]; i = new char[]{'b','c'};
   d  char[] i = new char[2]; i = {'b','c'};

2004-8-18    星期三     ??/p>

今天讲完数组Q类的概念开了一个头。封装、ѝ多态,p三个概念展开、D例、D猫、狗、哺乛_特的例子。Dl猫、狗增加一只眼睛只要改变一下父cM子。三只眼睛的狗?我们哈哈大笑Q只是,今天的日记怎么写?都是一些概忉|的东西?/p>

接口(interface)是ؓ了解军_重承,l承产生多?cR方?。封装可以最大限度地代码重用。类是一U抽象、包含有属性以及改变属性的Ҏ。对象是cȝ实例Q除了这些还有什么?数组是对象吗Q?/p>

不能定Q那查API、问同学、请教老师。还不行Q那老师l你开灶吧!教室后头架着DVQ用影像真实地记录着我们的学习生z,谁也不许掉队?/p>

大多数知识在译֠上解决了Q晚上的旉Q看书、预习,能看多远看多q。自已看Q雾里看花;而老师教,一片瞪明。一路通透下去,只是依然担心Q十八天能否Core Java讲完?/p>

2004-8-19    星期四     ??/p>

对象和类(?

1. 装、多态、和l承
{:1) 装
       a. 把数据和行ؓl合在一个包中,q对对象的用者隐藏数据的实现q程。对象中的数据称为对象的实例字段(instance field), 操作数据的函数和q程UCؓ对象的方?method)。一个特定对象就是类在实例字D上有着特定值的某个实例?br />       b. 实现装的关键在于绝不让Ҏ直接讉K其他cȝ实例字段?/p>

    2) l承
       a. 在现有类的基上构建新的类。当l承一个现有类Ӟ重?l承)了那个类的方法和字段Q同Ӟq可以向新类中增L的方法和字段?br />       b. 在通过扩展类来定义子cLQ只需要说明子cd类的区别就行。所以在设计cLQ把最通用的方法放在超cMQ把更专门的Ҏ攑֜子类中?/p>

    3) 多?polymorphism)
       一个对象变量可以指向多U实际类型的现象?/p>

2. cd对象
{:1) c:数据cd/元数据的抽象;
    2) 对象Q类的实?instance of)?/p>

3. Ҏ定义
{:1) 格式 <modifiers><return_type><name>([argument_list>])[throws <exception>]{<block>}
            例如Qpublic String getName(){ return name; }
    2) 当没有返回值时Q返回类型必被定义为voidQ?br />    3) 构造方法没有返回类型?/p>

4. 参数传?br />{:Java语言L使用传D用。这意味着Ҏ得到的只是所有参数值的拯。因此,Ҏ不能修改传递给它的M参数变量的内宏V?/p>

5. this
{:1) this是个隐式参数Q代表被构造的对象;
    2) 如果构造器的第一个语句具有Ş式this(...)Q那么这个构造器调用同一cM的其他构造器?/p>

6. 装的特?br />{:1) 使具体实C可视;
    2) Ҏ有的用户l一接口;
    3) 增强可维护性?/p>

7. Ҏ重蝲
{:1) Ҏ名相?
    2) 参数必须不同;
    3) q回cd可以不同;

2004-8-20    星期五     ??/p>

对象和类(?

8. 创徏和初始化对象
{:1) Z个对象分配内存空_q初始化q个对象的gؓQ?/null/false?br />    2) 调用构造方法?/p>

9. 构造器
{:1) 构造器和类h相同的名?
    2) 一个类可以有多个构造器;
    3) 构造器可以?个?个或者多个参?
    4) 构造器没有q回?
    5) 构造器只能和newq算W一赯调用?

10. 构造器重蝲
{:1) 黙认构造器指没有参数构造器Q它把所有实例字D设为默认?
    2) 如果~写的类没有构造器Q系l会自动提供黙认构造器Q那么构造没有构造参数的对象是非法的?/p>

11. 子类
{:1) 是一U关p?现有cȝc?super class)、基c?base class)、或是父c?parent class); 而新cȝ为子c?subclass child class)或者是zc?derived class));
    2) 一U声明类型,public class Student extends Person{...};
    3) 单ѝ?/p>

12. l承
{:1) 构造器不能被初始化;
    2) Ҏ和字D可以被初始?
    3) 子类构造器自动调用父类的黙认构造器Q?br />    4) 当父c黙认构造器不存在时Q子cL造器要显式调用超cȝ其它构造器?/p>

13. Super
{:1) 调用类Ҏ;
    2) 调用类构造器?/p>

14. l承(Polymorphism)
{:1) 一个对象变量可以指向多U实际类型的现象;
    2) 它是一个运行时x?/p>

15. instanceof操作W?br />{:1) Booleancd;
    2) 判断某个实例是否属于指定c?接口

16. casting
{:1) 把一U类型强制{换成另一U类型的q程被称为类型{?casting);
    2) q行转换的惟一原因在于有时在暂时忽视对象实际类型之后,需要用实际对象的全部功能;
    3) 要养成在cd转换之前先判断它是否能成功的~程习惯(使用instanceof);
    4) 应尽量少用类型{换和instanceof操作W?/p>

17. Ҏ重写(overridden)
{:1) 名称、参数列表和q回cd相同;
    2) modifier不能来窄;
    3) 异常抛出不能变宽;
  

2004-8-23    星期一       ?/p>

高语言Ҏ??

1. 静态字D和Ҏ
{:1) 静态字D:每个cM只存在一个这L字段Q反之,cȝ每一对象都有自己一份对q个实例字段的拷?
    2) 静态方法:能不通过对象直接讉K; 不能讉K非静态变? 不能被非静态方法重?

2. 初始化块
{:1) 只被执行一?
    2) 初始化块首先被运行,然后才是构造器的主体部分被执行?/p>

3. 调用构造器后详l的执行q程
{:1) 初始化所有数据字Dؓ默认?0?.0、false或null);
    2) 按照在类声明中出现的ơ序依次执行所有字D初始化语句和初始化?
    3) 如果构造器的第一行代码调用了另一个构造器Q则执行被调用的构造器M;
    4) 执行构造器M?/p>

4. final关键?br />{:1) finalcM能被l承;
    2) finalҎ不能被改?
    3) final变量不能被改?

5. 抽象c?br />{:1) Ҏ没有Ҏ体,必须被声明ؓ抽象Ҏ; 例:abstract int getAge();
    2) 一个类中包含有抽象Ҏ必须声明为抽象类;
    3) 抽象cM能实例化Q但仍可以创建类的对象变?
    4) 能声明方法或cȝ型ؓ抽象;
 
    注:1) 抽象Ҏ如同Ҏ占位W,q些Ҏ一定要在子cM实现;
        2) 即不含抽象ҎQ类也可被声明ؓ抽象cR?/p>

6. 接口
{:1) 接口是抽象类的另外一UŞ?没有实例变量的抽象类);
    2) 在一个接口中所有方法都是抽象方?
    3) 接口中所有变量都必须被定义ؓfinal staticQ?br />    4) 接口可以l承多个接口?/p>

    注:1) 接口中的Ҏ自动被置为public, 因此Q在接口中声明方法ƈ不需要提供public关键字。但在实现接口时Q必LҎ声明为public?br />       

2004-8-24    星期二     ??/p>

高语言Ҏ??

7. 讉K控制
{:修饰W   ?内部c ?相同包  ?子类     其它
    public       √     ?√     ?√     ??br />    protected    √     ?√     ?√     ?
    default      √     ??br />    private      √     ?

8. ?=”操作符和equals()Ҏ
{:1) ?=”操作符定两个引用是否指向相同对象;
    2) equals()Ҏ判断两个对象是否指向同一块内存区?q种试q没有太大用处,如果x试对象是否相{,需要覆盖equalsҎQ进行更有意义的比较);

9.  toString()Ҏ
{:1) 和equals()Ҏ一PtoString()是Objectcd外一个重要的Ҏ;
    2) 它返回一个代表该对象值的字符丌Ӏ几乎每个类都会覆盖该方法,以便打印该对象当前状态的表示?br />    3) 无论何时对象同字W串相连接,那么可以?+"操作W,q时Java~译器会自动调用toStringҎ获得对象的字W串表示。例Q?br />       Point p = new Point(10,20);
       String message = "The current position is " + p;//自动调用p.toString()

10. 内部c?br />{:内部cL定义在其他类内部的类Q?br />    1) 内部cd象能够访问创建它的对象的实现-包括那些U有数据;
    2) 内部c能够隐藏v来,不ؓ同一包中的其他类所?
    3) 匿名内部cd以方便地定义q行时回?
    4) 所有内部类在编写事件程序时用v来很方便?/p>

11. 静态内部类
{:1) 内部cȝ最单Ş?
    2) 不能和外部类同名;
    3) 被编译成一个独立的cL?
    4) 只能讉K外部cȝ静态方法、静态实例变?包括U有cd);

12. 实例内部c?br />{:1) 定义在类内部Q没有用static修饰W?
    2) 像实例变?
    3) 能访问外部类的所有实例变?
    4) 在一个外部类里创Z个实例内部类实例Qthis.new Innerclass();
    5) 在一个外部类外创Z个实例内部类实例Q?new OuterClass()).new Innerclass();
    6) 在一个内部类里访问一个实例内部类QOuterclass.this.member;

13. 局部内部类
{:1) 定义在方法里;
    2) 最的一U内部类;
    3) 和局部变量类? 不能被定义ؓpublicQprotectedQprivate和static;
    4) 只能讉Kfinal型局部变量?/p>


2004-8-25    星期三     ??/p>

高语言Ҏ??

14. 匿名内部c?br />{:1) 没有cd;
    2) 没有class关键?
    3) 没有l承和声?
    4) 没有构造函? 

15. 装c?br />{:原始基本cd     包装c?br />       boolean       Boolean
       byte          Byte
       short         Short
       char          Character
       int           Integer
       long          Long
       float         Float
       double        Double

16. 集合接口cd?br />{:
               Collection
                    ?br />              |ˉˉˉˉˉˉ|   
             Set          List        Map
              ↑                    ??br />              |                       |
           SortedSet              SortedMap

   1) Set: 集合cM不允许有重复对象;
   2) SortedSet: 和Set接口同,但元素按升序排列;
   3) List: 元素加蝲和移出时按照有顺序,可以保存重复对象?br />   4) Map: 存储了唯一关键字L识的对象Q不允许有重复关键字?br />   5) SortedMap: 和MapcdQ但对象按他们关键字的升序排列?/p>

17. 包括具体cd内的集合cd?br />{:
               Collection
                    ?br />              |ˉˉˉˉˉˉ|   
           HashSet     LinkedList       Hashtable
            (Set)    Vector, ArrayList   Hashmap
                         (List)           (Map)
              ↑                         ??br />              |                            |
            TreeSet                     TreeMap
          (SortedSet)                 (SortedMap)

18. 五个最常用的集合类之间的区别和联系
{:1) ArrayList: 元素单个Q非同步Q效率高Q多用于查询
    2) Vector:    元素单个Q同步,U程安全Q多用于查询
    3) LinkedList:元素单个Q多用于插入和删?br />    4) HashMap:   元素成对Q非同步Q元素可为空
    5) HashTable: 元素成对Q同步,元素不可为空

19. 反射
{:1) 定一个对象的c?
    2) 获得一个类的修改符、变量、方法、构器函数、和父类的相cM?
    3) 扑և哪些帔R和方法是从一个接口声明的;
    4) 创徏一个在q行时才知道名称的类;
    5) 调用对象的方?


2004-8-26    星期四     ??/p>

异常

1. 异常的基本概?br />{:1) 异常事g改变E序程;
    2) 当一个异怺件发生时Q一个异常被抛出;
    3) 响应处理异常的代码被UCؓexception handler;
    4) exception handler捕获异常;
    5) 异常处理能让你集中精力在一个地方解决问题,然后处理错误的代码分开来放在另一个地斏V?/p>

2. 捕获异常
{:1) 讄一个try/catch的代码块;
    2) 如果try块内的Q何代码抛Z由catch子句指定的异常,?br />       a. E序跌try块中的其他代?
       b. E序执行catch从句中的处理器代码?br />    3) 如try块内没有抛出异常Q直接蟩qcatch从句内容?br />    4) 如try块内抛出的异常没有在catch从句中指? 则该Ҏ会立即退出?/p>

3. 处理异常
{:1) 应捕捉ƈ处理那些已知如何处理的异常,而传递那些不知如何处理的异常;
    2) 如想传递异常,必须在方法的定义中增加一个throws修饰W,以通知调用者可能会抛出一个异?
    3) 对子cL法抛出的异常不能出类Ҏthrows指o的范围。如父类不抛ZQ何异常,在子cL法中必须捕捉每一个“已查异常”?/p>

4. 捕捉多个异常
{:1) 每个异常cd使用一个catch从句;
    2) 如前面catch从句捕获异常Q将直接跌后面catch从句内容;
    3) 按异常类型的子类->类的顺序排列catch从句的先后顺序?/p>

5. finally 声明
{:无论是否捕获异常Q都会执行finally从句中的代码;

6. 异常调用?br />{:1. 哪个Ҏ调用的代码发生异常,q回到哪个方?
    2. mainҎ调用的代码发生异常,q回到虚拟机?/p>

7. 异常层次
{:1) h于Error的类代表不常用的环境(通常是硬件层?;
    2) 应用E序不能够从Error中恢复正?
    3) 所有的Java异常都v源于Exception;
    4) RuntimeExcepiton也称为未查异?
    5) 未检查异常无L?
    6) 其它异常Q也UCؓ查异常,必须处理

                  Object
                    ?br />                Throwable
                    ?br />            |ˉˉˉˉˉˉˉˉ|
          Error      Exception
            |            ?br />            |     |ˉˉˉˉˉˉˉ|
               RuntimeException


8. 一些未查的异常
{:1) java.lang.ArithmeticException  如:?;
    2) java.lang.NullPointerException 如:没初始化一个References便?
    3) java.lang.ArrayIndexoutofBoundsException 如:调用一个有十个元素的Array的第十一个元素的内容;
    4) java.lang.NumberFormatException 如:Integer.parseInt("a");

9. 写你自己的异?br />{:1) 要做的仅仅是从Exceptionl承或者是从Exception的一个子c衍生出自己需要的cd?
    2) 习惯为每一个异常类提供一个默认的构造器以及一个包含详l信息的构造器?/p>

10. 抛出你自q异常
{:1) 在方法的定义中增加一个throws修饰W,以通知调用者可能会抛出一个异?
    2) 在方法中构造一个该cȝ实例Q然后抛实例?/p>

三个Java笑?/p>


1. 作ؓ父亲的儿子,我是他的子类Q我l承他的全部属性和ҎQ但Z么父亲会开车,我不会?开车这个方法也许是finalcd?/p>


2. 你们M十家公司面试Q也许没有一家会问你内部c?累不?。虽然内部类很少用,但没人性的公司即应聘成功Q徏议也别去?/p>


3. 你今天早上出门的时候看了不该看的一q,以致于一天没有干zR看到这U异常,你们的项目经理过来问你是否技术上到了问?试图捕获异常)Q你摇摇?异常cd不对)Q然后你们的事务l理q来Q你告诉他你在早上看C自己最喜欢的Polo车竟然有最不喜Ƣ的l色。事务经理安C可将目标转ؓ宝马Qƈ允诺周末一起开他的宝马Lv上田园兜?捕获异常)Q你情A大ؓ好{q提动加?异常得到处理Q程序正常运?。不q的是,你们的事务经理刚好情l也不好Q他直接你的情况反映给ȝ?捕获异常Q没处理直接抛出)。更不幸的是Q也怽们公司的Zl理和项目经理刚好不在,q种情况被你们的头看刎ͼ他将你开?首先被Exception捕获Q粗略处?。你被开除后Q整个项目无法进行下去,最后公司被宣布解散。因为整个公司就你一个h?/p>


2004-8-27   星期五    ??/p>

创徏囑Ş用户界面

1. AWT
{:1) Abstract Window Toolkit(抽象囑Ş工具);
    2) 提供一pd的对象去创徏囑Ş用户界面;
    3) 在java.awt包里包括三种cd的类Q?br />       a lg: 可视化图形工L基本c,包括容器;
       b 容器: 一U可以装载其他组件的Ҏlg;
       c 布局理? 容器里用来定?布置)用户界面lg的一U接口?/p>

2. 创徏囑Ş用户界面步骤一Q选择容器
{:1) lg可被加入到容?
    2) 通常使用以下容器: Frame, Dialog, Applet, Panel;
   
                 Component
                    ?br />                 Container
                    ?br />       |ˉˉˉˉˉˉ|ˉˉˉˉˉˉ|
   ScrollPane    Window        Panel
                    ↑ ??br />               |ˉˉˉˉˉ|      |
             Frame     Dialog  Applet
                          ?br />                     FileDialog

3. 容器Ҏ
{:1) add(Component com) : 组件加入容?
    2) setLayout(): 讄布局理?   
    3) pack(): 按照首选的寸和组件的布局构徏H体;
    4) setTitle(): 讄H体标题;

4. 创徏囑Ş用户界面步骤二:选择布局理?br />{:1) 使用容器的setLayout()Ҏ讄容器理器;
    2) lgҎsetLocation()、setSize()、setBounds()定义了组件的寸和位|?
    3) Windowcd器黙认布局理器是BorderLayoutQ?br />    4) Panelcd器黙认布局理器是BorderLayoutQ?/p>

5. 创徏囑Ş用户界面步骤三:增加lgq容?br />{:1) 创徏lg
       TextField tf = new TextField();
       ...
    2) 使用容器Ҏadd()组件增加进容器
       add(tf);

6. 创徏囑Ş用户界面步骤四:创徏事务处理
{:使用lgҎQaddXXXListener()

7. Frames
{:1) h自Windowc?
    2) 不能作ؓ一个部件放到其他部仉;
    3) 有标题、连框和菜单工具?
    4) 默认的布局理器是BorderLayout;
    5) 使用setLayout()改变布局理?
    6) 创徏一个frame标例: Frame frame = new Frame("The First GUI")?/p>

8. Panels
{:1) 通常被加入其它容?
    2) 把一l相关的lg攑ֈ容器?
    3) 默认的布局理器是FlowLayout;

9. FlowLayout布局理?br />{:1) 重每个lg自n的大?
    2) 构造方法:
       FlowLayout()
       FlowLayout(int align)
       FlowLayout(int align, int hgap, int vgap)
  
       int align: FlowLayout.LEFT, FlowLayout.RIGHT, FlowLayout.CENTER, FlowLayout.LEADING, FlowLayout.TRAILING

10. BorderLayout布局理?br />{:1) 分ؓ五个区域Q?br />       BorderLayout.CENTER, BorderLayout.EAST,
       BorderLayout.WEST, BorderLayout.SOUTH,
       BorderLayout.NORTH
    2) 南北区域保持lg高度Q?但宽度因容器宽度改变;
    3) 东西区域保持lg宽度Q?但高度因容器宽度改变;
    4) 中部区域Q高宽均改变;
    5) 构造方?br />       BorderLayout(), BorderLayout(int hgap, int vgap)

11. GridLayout布局理?br />{:1) 在容器里以网格Ş状排列组?
    2) 每个|格均是相等寸;
    3) 忽略每个lg的原始尺?
    4) 构造方?
       GridLayout()
       GridLayout(int rows, int cols)
       GridLayout(int rows, int cols, int hgap, int vgap)

12. CardLayout布局理?br />{:1) 每一个组件处理成一张牌Q在M时候只有一张牌可视;
    2) 不尊重组件的原始寸;
    3) 构造方法:
       CardLayout()
       CardLayout(int hgap, int vgap)
    4) CardLayout中方?br />       void first(Container c)
       void last(Container c)
       void next(Container c)
       void show(Container c, String name)
 
13. GridBagLayout 布局
{:1) 在网格里攄lg;
    2) 一个组件可占多行或?
    3) 当组件被加入容器旉过GridBagConstraints对象定lg占多少个表?
    4) 构造方法:GridBagLayout();
    5) 重要ҎQsetConstraints(Component c, GridBagConstraints gcs)

14. GridBagConstraintsc?br />{:构造方?br />    GridBagConstraints()
    GridBagConstraints(int gridx, int gridy, int gridwidth, int gridheight, double weightx, double weighty, int anchor, int fill, Insets insets, int ipadx, int ipady)

2004-8-30   星期一      ?/p>

AWTlg?/p>

1. lg公有Ҏ
{:1) setForeground(): 讄前景颜色;      setBackground(): 讄背景颜色;
    2) getForeground(): 取得前景颜色;      setBackground(): 取得背景颜色;
    3) setEnabled(): 使组件有?           getEnabled(): 取得lg有效的状?
    4) setVisible(): 使组件可?           getVisible(): 取得lg可视状?
    5) setFont(): 讄lg字体;            getFont(): 取得lg字体;
    6) setSize(): 讄lg大小;            getSize(): 取得lg大小;
    7) getPreferredSize(): 取得默认的尺?
    8) setLocation(): 讄lg位置;        getLocation():获得lg位置;
    9) setBounds(): Udq且重新调整寸;  getBounds(): q回q个lg的范?位置和尺?;
    10)paint(): l制lg; repain():重绘;   update():更新;

2. 按钮(Button)
{:1) 当单L产生一个动作action;
    2) 构造函敎ͼ
       Button()
       Button(String label)
    3) ҎQ?br />       setActionCommand(): 讄q个按钮触发的动作事件的命o名称;
       getActionCommand(): q回q个按钮触发的动作事件的命o名称;
       setLabel(): 讑֮q个按钮的标{?
       getLabel(): 得到q个按钮的标{?
       addActionListener(): 加入指定的动作侦听器L按钮动作事g;
       removeActionListener(): U除指定的动作侦听器Q按钮不再接收动作事g;
       getActionListeners(): q回所有登记的动作侦听器的数组;
 
3. d(Canvas)
{:1) 用来昄囑Ş;
    2) l制外Ş、像素以及带有许多颜色的文本
    3) 构造方法:
       Canvase()
       Canvas(GraphicsConfiguration conf)
    4) ҎQ?br />       paint()
       update()

4. 复选框(Checkbox)
{:1) 单独使用Q显CZ选中或不选中的复选框;
    2) 作ؓ复选框l的成员Q它的表现和单选按钮同;
    3) 构造函?
       checkbox()
       checkbox(String label)
       checkbox(String label, boolean state)
       checkbox(String label, boolea state, CheckboxGroup group)
       checkbox(String label, CheckboxGroup, boolean state)
    4) 关于checkbox的方?
       addItemListener(): 加入指定目监听器接收复选框目事g;
       removeItemListener(): U除指定的项目监听器Q复选框不再接收复选框事g;
       setState(): 复选框讑֮为指定状?
       getState(): 判断复选处于“开”或“关”状?
       setLabel(): 讄复选框标签;
       getLabel(): 得到复选框标签?br />    5) 关于CheckboxGroup的方?br />       getSelectedCheckbox(): 从复选框l中得到当前选择;
       setSelectedCheckbox(): 讄复选框l中指定复选框为选中?/p>

5. 下拉列表(Choice)
{? 1) 一U下拉菜单Ş式的单选项;
    2) 当前选中的项目显C在屏幕?
    3) 构造函?
       Choice()
    4) Ҏ:
       add(): Z拉列表加入选项元素;
       insert: 在指定位|插入选项元素;
       getSelectedItem(): 以字W串形式q回当前选项;
       getSelectedIndex(): q回当前选项的烦?
       getItem(): q回下拉列表中指定烦引位|元素的字符串格?
       addItemListener(): 加入指定目监听器,接收来自下拉列表的项目事?
       removeItemListener(): U除指定目监听器,使它不再接收来自下拉列表的项目事?

6. 标签(Label)
{:1) 用以在屏q上昄文本;
    2) 没有直接的交互动?
    3) 构造方法:
       Label()
       Label(String text)
       Label(String text, int alignment)
    4) Ҏ
       setText(): 讄标签的文本ؓ指定内容;
       getText(): 得到标签的文本内?

7. 列表(List)
{:1) 在屏q上昄一l文本选项;
    2) 允许用户单选或多?
    3) 构造方?br />       List()
       List(int rows)
       List(int rows, boolean multipleModel)

8. 文本?Textfield)
{:1) 提供一单行可供~辑的文?br />    2) 构造方?br />       Textfield()
       Textfield(int columns)
       Textfield(String text, int columns)

9. 文本?TextArea)
{:1) 提供多行多列的可~辑文本?
    2) 文本区将昄水^和垂直的滚动?
    3) 构造方?br />       TextArea()
       TextArea(int rows, int cols)
       TextArea(String text)
       TextArea(String text, int rows, int cols)
       TextArea(String text, int rows, int cols, int scrollbars)

10. 对话?Dialog)
{:1) 一个带有标题和边界的自q?
    2) 黙认的布局理器是BorderLayout;
    3) 必须拥有一个调用?
    4) 可以是模式和非模式的?/p>

11. 文g对话?File Dialog)
{:1) 模式对话?
    2) 用以选择文g;

12. 滚动面板(Scroll Pane)
{:1) 一个容器类;
    2) 能ؓ单个lg自动水^或垂直滚?

13. 菜单?MenuBar)
{:1) 一个菜单条lg是一个水q单,它只能加入到一个框架中Qƈ成ؓ所有菜单树的根?br />    2) 使用框架的setMenuBar()Ҏ讄菜单?

14. 菜单(Menu)
{:1) 主要功能是装载菜单项;
    2) l承自MenuItemc,因此它能装蝲其它菜单;

15. 菜单?MenuItem)
{:1) 菜单组件是菜单树的文本“叶”结点,它们通常被加入到菜单中,以构成一个完整的菜单;
    2) 通常一个ActionListener加入C个菜单项对象中,以提供菜单的行ؓ?/p>

16. 弹出式菜?PopupMenu)
{:1) 提供了一U独立的菜单Q可以在Mlg上显C?
    2) 可以菜单条目和菜单加入到弹出式菜单中去?/p>

 

AWT事g模型

1. 什么是事gQ?br />{:1) 事g?事g的生器;
    2) 事g-描述发生了什么的对象;
    3) 事g处理?接收事g、解释事件ƈ处理用户交互的方?

2. 事g?br />{:1) 事g源是一个事件的产生?
    2) 提供Ҏ允许其它Ҏ增加或移除事件处理器;
    例:在Buttonlg上点击鼠标会产生以这个Button为源的一个ActionEvent, q个ActionEvent实例是一个对象,它包含关于刚才发生的那个事g的信息的对象?/p>

3. 事g处理?br />{:1) 事g处理器就是一个接收事件、解释事件ƈ处理用户交互的方法?/p>

4. 事gcd
{:1) 对于每类事gQ都有一个接口,q个接口必须由想接收q个事g的类的对象实现。这个接口还要求定义一个或多个Ҏ。当发生特定的事件时Q就会调用这些方法?/p>

5. ActionEvent
{:1) 双击列表?
    2) 按钮被选中;
    3) 菜单被选中;
    4) 文本域回车?/p>

6. TextEvent
{:适用二行文本域同步情?/p>

7. ItemEvent
{:1) 多选框选中或取?
    2) 可选菜单选中或取?
    3) 下拉列表w中;
    4) 列表w中?/p>

8. 事g适配?br />{:1) 事g适配器空实现了一个事件处理器的所有方?
    2) 你只需l承q写你感兴的Ҏ卛_


2004-8-31   星期二  ??/p>


Java基础c?/p>

1. JFC预览
{:1) Java基础cL关于GUIlg和服务的完整集合Q它大大化了健壮Java应用E序的开发和实现;
    2) Java基础cd中的一部分是Swing, Swing是构{在AWT上层的一些组件的集合;
    3) Java基础cM要包?个APIQ?br />       a. AWT: 为各cJava应用E序提供了多UGUI工具;
       b. Java2D: 一囑ŞAPI, 为Java应用E序提供了一套高U的有关二维囑Ş囑փ处理的类;
       c. Accessibility API: 提供了一套高U工P用以辅助开发用非传统输入和输出的应用E序?br />       d. Drag & DropQ提供了Java和本地应用程序之间的互操作性,用来在Java应用E序和不支持Java技术的应用E序之间交换数据?br />       e. Swing:JFC模块的重点,用来q行ZH口的应用程序开发,它提供了一套丰富的lg和工作框Ӟ以指定GUI如何独立于^台地展现其视觉效果?/p>

2. Swing介绍
{:1) 它是围绕着实现AWT各个部分的API构筑?
    2) 大多数组件不象AWT那样使用与^台相关的实现?/p>

3. 导入Swingq程
{:1) 导入Swing?
    2) 选择外观和感?getLookAndFeel());
    3) 讄H口容器
       a. JFrame与Frame怼;
       b. 你不能直接将lg加入到JFrame?
       c. 一个content pane包含了除菜单条外所有Frame的可视组?/p>

4. JComponentc?br />{:1) 所有Swing都作为JComponent的子cL实现;
    2) Swinglg从JComponentl承了如下功能:
       a. Ҏ(setBorder()Ҏ指定在组件周围显C的Ҏ, EmptyBorder的实例来指定一个组件在其周围留有一定的额外I间);
       b. 双缓?可以改善一个频J被改变的组件的外观Q缺省是双缓?;
       c. 提示?通过用setToolTipText()Ҏ来指定一个字W串Q提供给用户有关某个lg的帮助信?
       d. 键盘D
       e. 应用E序范围的可插式外观和感?/p>


Java程?/p>

1. 什么是Applet?
{:1) Applet是能够嵌入到一个HTML面中,且可通过Web览器下载和执行的一UJavac?
    2) Applet通过览器或applet viewersq行;

2. Applet的安全限?br />{:1) q行时执行另一E序;
    2) M文g的输?输出;
    3) 调用本地Ҏ;
    4) 试打开除提供Applet的主Z外的Mpȝ的Socket?/p>

3. Applet和AWT的层?br />{:java.lang.Object
           |
           |
   java.awt.Component
           |
           |
   java.awt.Containter
           |
           |
    java.awt.Panel
           |
           |
   java.applet.Applet

4. Applet的方法和Applet的生命周?br />{:1) init()
       a. 只在Applet首次装入时被调用, q且在调用start()之前执行完成;
       b. 可用于初始化数据?
    2) start()
       a. 当Applet成ؓ可见时运?br />    3) stop()
       a. 当Applet成ؓ不可见时q行

5. Applet标记
{:1) code=appletFile.class  l定了含有编译好的Applet子类的文件名;
    2) width = pixels  height = pixels  l出了Applet昄区域的初始宽度和高度;
    3) codebase = codebaseURL 指定了Applet的URL(包含有Applet代码的目? 如该属性未指定Q则采用文的URL);
    4) align = alignment  指定了Applet的对齐方?br />    5) <param name = appletAttribute1 value = value>  提供参数
  
6. Applet和浏览器的交互方?br />{:1) getParameter(String name)Q?取得参数;
    2) getCodeBase(): q回一个描qAppletcL件本w源目录的URL对象;
    3) getDocumentBase(): q回一个描q装载Applet的HTML文g的URL对象;


2004-9-1   星期三  ??/p>

U程

1. 什么是U程Q?br />{:1) 一个线E是一个程序单个的q箋控制;
    2) 一个Y件能处理一pd的线E构?
    3) U程能同时运行,彼此独立;
    4) 包ؓjava.lang.Thread;

2. U程或上下文的构?br />{:1) 一个虚拟处理机;
    2) CPU执行的代?br />       代码可以或不可以由多个线E共享,q和数据是独立的。两个线E如果执行同一个类的实例代码,则它们可以共享相同的代码?br />    3) 代码操作的数?br />       数据可以或不可以由多个线E共享,q和代码是独立的。两个线E如果共享对一个公共对象的存取Q则它们可以׃n相同的数据?/p>

3. U程机制
{:1) 当线E开始,run()Ҏ里代码被执行;
    2) 创徏U程的二U方法:
       a. l承Threadc?
       b. 实现Runnable接口?/p>

4. 通过l承ThreadcdZ个线E?br />{:1) 定义
       public class MyThread extends Thread{
         public void run(){...}
       }
    2) 初始?br />       MyThread testThread = new MyThread()

5. 通过实现runnable接口创徏一个线E?br />{:1) 定义
       public class MyRunnable implements Runnable {
         public void run(){...}
       }
    2) 初始?br />       MyRunnable testRunnable = new MyRunnable();
       Thread testThread = new Thread(testRunnable)

6. 二种创徏U程Ҏ的比?br />{:1) l承ThreadcL面向对象~程;
    2) 实现Runnable接口解决了单l承

7. U程调度
{:1) U程是抢占式的,但ƈ不一定是分时的;
    2) 有多个线E可q行Q但只有一个线E在实际q行?br />    3) 所有可q行U程Ҏ优先U保存在池中Q当一个被d的线E变成可q行Ӟ它会被放入相应的可运行池Q优先最高的非空池中的线E得到处理机旉?br />    4) sleep()调用会给较低优先U线E一个运行的ZQyield()Ҏ只会l相同优先U程一个执行的Z?/p>

8. U程的基本控?br />{:1) 启动U程Q用start()ҎQ这意味着U程可以由JVM调度q执行,q不意味着U程׃立即执行?br />    2) l止一个线E:当一个线E结束运行ƈl止Ӟ它就不能再运行了?br />    3) 试一个线E:isAlive()Ҏ用来定一个线E是否仍是活的。活着的线Eƈ不意味着U程正在q行?br />    4) 延迟U程Q?br />       sleep()QɾU程停止一D|_间隔期满后,U程不一定立x复执行?br />       join()Q挂起当前线E,直至它所调用的线E终止?/p>

9. synchronized关键?br />{:1) 标识一l变量应该被一个线E独占地使用;
    2) public void push(char c){
         synchronized(this){
         ...
         }
       }
       public synchronized void push(char c) {
       ...
       }
    3) 所有对易碎数据的存取应当是同步的,由synchronized保护的易数据应当是private的?/p>

10. U程交互
{:1) wait()Q交出锁和CPU的占?
    2) notify()Q将从对象的{待池中U走一个Q意的U程Qƈ攑ֈ锁池中,那里的对象一直在{待Q直到可以获得对象的锁标记?br />    3) notifyAll(): 从{待池中U走所有等待那个对象的U程q放到锁池中Q只有锁池中的线E能获取对象的锁标记Q锁标记允许U程从上ơ因调用wait()而中断的地方开始l运行?/p>

2004-9-2   星期四  ??/p>

式I/O和文?/p>

1. 和基础知识
{:1) 一个流是字节的源或目的
    2) 二种基本的流是:输入和输出?br />      
2. InputStreamҎ
{:1) 三个基本的read()Ҏ
       a. int read(): 从流里读出的一个字节或?1;
       b. int read(byte[])Q将数据d到字节数l中Qƈq回所ȝ字节?
       c. int read(byte[], int , int)Q两个int参数指定了所要填入的数组的子范围?br />    2) 其它Ҏ
       a. void close(): 关闭,如用过滤器,关闭栈顶部的,会关闭其余的?br />       b. int available(): q回可从中d的字节数?br />       c. skip(long): 丢弃了流中指定数目的字符?/p>

2. OutputStreamҎ
{:1) 三个基本的read()Ҏ
       a. void write():
       b. void write(byte[])Q?br />       c. void write(byte[], int , int)Q?br />       写输出流?br />    2) 其它Ҏ
       a. void close(): 关闭,如用过滤器,关闭栈顶部的,会关闭其余的?br />       b. int flush(): 允许你强制执行写操作?/p>

3. FileInputStream和FileOutputStream
{:1) l点,使用盘文g?br />    2) 要构造一个FileInputStream, 所兌的文件必d在而且是可ȝ?br />    3) 要构造一个FileOutputStream而输出文件已l存在,则它被覆盖?br />       FileInputStream infile = new FileInputStream("myfile.dat");
       FIleOutputStream outfile = new FileOutputStream("results.dat");

4. BufferInputStream和BufferOutputStream
{:qo器流Q可以提高I/O操作的效?/p>

5. DataInputStream和DataOutStream
{:通过来dJava基本c?注意DataInputStream和DataOutputStream的方法是成对的?/p>

6. PipedInputStream和PipedOutputStream
{:用来在线E间通信.

7. Reader和Writer
{:1) Java技术用Unicode来表C字W串和字W,而且提供16位版本的,以便用类似的Ҏ处理字符?br />    2) InputStreamReader和OutputStreamWriter作ؓ字节与字符中的接口?br />    3) 如果构造了一个连接到的Reader和WriterQ{换规则会在用缺省^台所定义的字节编码和Unicode之间切换?/p>

8. 文g
{:1) 一个文件对象可以代表文件或者目?
    2) Filecd理所有磁盘操?
    3) 构造方法:
       a. File(File parent, String child):
       b. File(String pathName);
       c. File(String parent, String child);
       d. File(URI uri)
    4) 目录分隔
       File.separator
9. 随机存取文g
{:1) 实现了二个接口:DataInput和DataOutput;
    2) 只要文g能打开pd;
    3) 通过文g指针能读写文件指定位|?
    4) 可以讉K在DataInputStream和DataOutputStream中所有的read()和write()操作;
    5) 在文件中UdҎ:
       a. long getFilePointer(): q回文g指针的当前位|?br />       b. void seek(long pos): 讄文g指针到给定的l对位置?br />       c. long length(): q回文g的长度?/p>

10. 串行?br />{:1) 一个对象存攑ֈ怹存储器上UCؓ保持;
    2) 只有对象的数据被串行?
    3) 标记为transient关键字的数据不被串行化?/p>


2004-9-3   星期五  ??/p>

|络

1. socket
{:1) 在一个特定编E模型下Q进E间通信链\的端炏V?br />    2) 一个socket包括两个:一个输入流(d另一个进E所写的数据)和一个输出流(向另一个进E发送数??/p>

2. Java技术中的网l?br />{:1) q接的地址(Host name 或?IP Address);
    2) 端口?范围?-65535, 于1024的端口号保留l预定义的服?;

3. Java中的|络模型:
{:1) 服务器分配一个端口号Q如果客戯求一个连接,服务器用accept()Ҏ打开socketq接;
    2) 客户在host的port端口建立q接;
    3) 服务器和客户使用InputStream和OutputStreamq行通信?/p>

4. 建立服务器端
{:1) ServerSocket server = new ServerSocket(post)
    2) Socket connection = server.accept();
    3) ObjectInputStream input = new ObjectInputStream(connection.getInputStream());
       ObjectOutputStream output = new ObjectOutputStream(connection.getOutputStream());
    4) 处理输入和输出流;
    5) 关闭和socket?/p>

5. 建立客户?br />{:1) Socket connection = new Socket(127.0.0.1, 7777);
    2) ObjectInputStream input = new ObjectInputStream(connection.getInputStream());
       ObjectOutputStream output = new ObjectOutputStream(connection.getOutputStream());
    3) 处理输入和输出流;
    4) 关闭和socket?/p>

6. URLq接
{:1) URL和URLConnectioncd装了大量复杂的从q端服务器获取信息的操作Q?br />    2) 支持HTTP和FTP资源
       URL url = new URL("       URL url = new URL("ftp://TonyDeng@enterinfo.net")
    3) 打开一个网l连?br />       URLConnection urlconn = url.openConnection()
    4) 打开一个输入流
       inputStream in = url.openStream()

7. UDP socket
{:1) 无连接的协议
    2) 不保证消息的可靠传输
    3) 它们由Java技术中的DatagramSocket和DatagramPacketcL?/p>

 

 

 

   

 

 

 

 

 

 


                                                                    

 

 

 

 

 

 

 

 



liulang 2006-09-25 23:00 发表评论
]]>
վ֩ģ壺 ѷ| | ˮ| ̨| ̨| ¬| | ¡| Ϸ| | ղ| Ͼ| | ˮ| | ű| | µ| | | ҵ| | Ȩ| | ˮ| | Ͱ| | ɽ| Ԫ| | | | ǡ| ζ| | | ԰| | | ˮ|