??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲日产乱码一二三区别,久久精品亚洲综合一品,亚洲精品国产福利一二区http://www.tkk7.com/hitlang/category/11589.html学以致用zh-cnThu, 01 Mar 2007 13:50:46 GMTThu, 01 Mar 2007 13:50:46 GMT60Java学习(fn)W记http://www.tkk7.com/hitlang/articles/71847.htmlliulangliulangMon, 25 Sep 2006 15:00:00 GMThttp://www.tkk7.com/hitlang/articles/71847.htmlhttp://www.tkk7.com/hitlang/comments/71847.htmlhttp://www.tkk7.com/hitlang/articles/71847.html#Feedback0http://www.tkk7.com/hitlang/comments/commentRss/71847.htmlhttp://www.tkk7.com/hitlang/services/trackbacks/71847.html2004-8-12 (tng) (tng) (tng) 星期四?tng) (tng)?阴有暴雨

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

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

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

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

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

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

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

2004-8-13 (tng) (tng) (tng) 星期五?tng)??/p>

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

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

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

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

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

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

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


2004-8-16 (tng) (tng) (tng) 星期一 (tng) (tng) ?/p>

表达式和控制程

1. 变量和作用域

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

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

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

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

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

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


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

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

 (tng)

2004-8-17 (tng) (tng) (tng) 星期二?tng) (tng) (tng) (tng) (tng)??/p>

数组

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

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

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

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


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

2004-8-18 (tng) (tng) (tng) 星期三?tng) (tng) (tng) (tng) (tng)??/p>

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

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

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

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

2004-8-19 (tng) (tng) (tng) 星期四?tng) (tng) (tng) (tng) (tng)??/p>

对象和类(?

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

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

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

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

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

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

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

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

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

2004-8-20 (tng) (tng) (tng) 星期五?tng) (tng) (tng) (tng) (tng)??/p>

对象和类(?

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

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

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

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

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

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

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

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

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

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

2004-8-23 (tng) (tng) (tng) 星期一 (tng) (tng) (tng) (tng) (tng) (tng) ?/p>

高语言Ҏ(gu)??

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

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

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

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

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

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

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

2004-8-24 (tng) (tng) (tng) 星期二?tng) (tng) (tng) (tng) (tng)??/p>

高语言Ҏ(gu)??

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

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

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

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

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

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

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


2004-8-25 (tng) (tng) (tng) 星期三?tng) (tng) (tng) (tng) (tng)??/p>

高语言Ҏ(gu)??

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

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

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

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

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

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

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


2004-8-26 (tng) (tng) (tng) 星期四?tng) (tng) (tng) (tng) (tng)??/p>

异常

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

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

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

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

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

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

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

 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) Object
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) ?br /> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) Throwable
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) ?br /> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) |ˉˉˉˉˉˉˉˉ|
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) Error (tng) (tng) (tng) (tng) (tng) Exception
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) | (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) ?br /> (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) | (tng) (tng) (tng) (tng) |ˉˉˉˉˉˉˉ|
 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) RuntimeException


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

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

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

三个Java笑?/p>


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


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


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


2004-8-27 (tng) (tng) 星期五?tng) (tng) (tng) (tng)??/p>

创徏囑Ş用户界面

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

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

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

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

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

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

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

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

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

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

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

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

14. GridBagConstraintsc?br />{:(x)构造方?br /> (tng) (tng) (tng) GridBagConstraints()
 (tng) (tng) (tng) 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 (tng) (tng) 星期一 (tng) (tng) (tng) (tng) (tng) ?/p>

AWTlg?/p>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 (tng)

AWT事g模型

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

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

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

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

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

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

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

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


2004-8-31 (tng) (tng) 星期二?tng) (tng)??/p>


Java基础c?/p>

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

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

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

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


Java程?/p>

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

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

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

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

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


2004-9-1 (tng) (tng) 星期三?tng) (tng)??/p>

U程

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

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

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

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

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

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

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

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

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

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

2004-9-2 (tng) (tng) 星期四?tng) (tng)??/p>

式I/O和文?/p>

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

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

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

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

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

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

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

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

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


2004-9-3 (tng) (tng) 星期五?tng) (tng)??/p>

|络

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

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

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

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

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

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

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

 (tng)

 (tng)

 (tng)

 (tng) (tng) (tng)

 (tng)

 (tng)

 (tng)

 (tng)

 (tng)

 (tng)


 (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng) (tng)

 (tng)

 (tng)

 (tng)

 (tng)

 (tng)

 (tng)

 (tng)

 (tng)



liulang 2006-09-25 23:00 发表评论
]]>
վ֩ģ壺 gogoȫ| 99þþùƷţţ| ձϵ1ҳϵ| ˾Ʒձ11| ŷղ| ѿav뾫Ʒɫҹ| avպav߳| ޹a777| ƷƬ߹ۿ| ޶Ʒav| һ߹ۿ| ߹ۿ| ޹Ʒר߹ۿ| AVרAVJULIA| Ƶ߹ۿ| ޾Ļ| ۺɫAPP| ޹߹ۿ| ɫAëƬѿ| MVȫƵվ | 337pձŷ޴| þþƷAɫ| ޾ƷĻþò| ޹Ʒһ | ĻӰԺѲ| ҰƵѹۿ| ŷһ| ޹Ʒ˾Ʒ| ձһ| ŷպһ| AVרAV| һ3Ƶ| ߹ۿƵ| ԻȫƵַ| jlzzjlzzѲ| ޹ۺһ| AVһȾþ| Ľղ2021| ˰ǿŮ²Ƶ| һ| ձXXXѿ|