Java程序设计基础.docx

上传人:b****4 文档编号:24630676 上传时间:2023-05-29 格式:DOCX 页数:36 大小:40.70KB
下载 相关 举报
Java程序设计基础.docx_第1页
第1页 / 共36页
Java程序设计基础.docx_第2页
第2页 / 共36页
Java程序设计基础.docx_第3页
第3页 / 共36页
Java程序设计基础.docx_第4页
第4页 / 共36页
Java程序设计基础.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

Java程序设计基础.docx

《Java程序设计基础.docx》由会员分享,可在线阅读,更多相关《Java程序设计基础.docx(36页珍藏版)》请在冰豆网上搜索。

Java程序设计基础.docx

Java程序设计基础

 

《Java程序设计》教案

 

么老师

2012年07月31日

目录

目录II

第一章Java概述1

第二章Java语言基础3

第三章Java面向对象的程序设计6

第四章Java异常处理10

第五章JavaGUI程序设计12

第六章JavaApplet15

第七章Java多线程17

第八章Java数据流23

第九章Java网络应用25

第一章Java概述

一.Java的产生

1.1991年SUN公司为Green项目设计了oak语言准备用于家电控制。

2.1992年投标失败(华纳机顶盒,SGI),受Mosaic启发,编写了HotJava浏览器。

3.1995年Sun公司正式推出Java1.0,目前版本1.6,2009年推出.

4.2009年4月21日,sun被oracle以74亿美元收购。

二.Java平台:

Java在1.2版改革巨大,通常将1.2版及以后的版本称为Java2,又分成:

J2SE–Java2StandardEdition用于台式机及工作站

J2EE–Java2EnterpriseEdition 用于企业级服务器平台

J2ME–Java2MicroEdition 用于手机,PDA等个人消费产品

在1.5版以后,不再称Java2,三个平台改名为JavaSE,JavaEE,JavaME.

三.Java开发工具

1.JDK命令行工具(Javac,Java)

2.流行开发工具Eclipse,JCreater,NetBeans,IntelliJ-IDEA

3.专业开发工具BorlandJBuilder

4.著名的J2EEServers:

Tomcat,BEAWeblogic,IBMWebsphare

四.Java语言特点

1.语法简单,功能强大,完全面向对象,有C++的强大性,去掉C++中的指针,结构;

2.分布式网络应用能力(内置TCP/IP,HTTP,FTP等网络协议库)与安全性(语言定义,字节码检查,解释执行三级检查机制);

3.基于二进制字节码的跨平台(硬件及操作系统双平台)的无关性(Writeonce,Runanywhere),JVM虚拟机解释执行,相比较C/C++,Java可称植性极高;

4.高效率的字节码解释执行(速度达到C的10%)+即时编译JIT(HotSpot);

5.语言级别而不是操作系统级别的多线程;

6.基于字符而不是地址的动态符号加载,动态执行,对类的代码覆盖有重要意义;

7.自动垃圾回收,理论上不会产生内存泄漏;不需要程序员维护内存释放。

8.远程访问能力和软件的易维护;

9.丰富的API文档和类库;

10.和Microsoft.Net平台的竞争关系;

五.Java的运行环境及配置

1.JDK的下载与安装()

2.JDK中的命令行java,javac,javap,javadoc

3.配置环境变量classpath=.(JDK1.42以后的版本中不配置也可以)

4.配置环境变量path=D:

\j2sdk1.4.2\bin\

5.一个简单的JavaApplication

//Hello.java

publicclassHello{

publicstaticvoidmain(String[]args){

System.out.println(“Hellojava”);

}

}

6.命令行参数

[编译javachello.java;windows下文件名不分大小写]

[加载运行javaHello,Hello是类名,区分大小写]

7.常见错误(1.path配置错误2.public类名与文件名一致3.加载类名区分大小写4.一个文件中只能有至多一个public类5.main函数必须是publicstaticvoid

8.Java的API文档

9.IntelliJ-IDEA:

(psvm+TAB自动出主函数)

10.Eclipse:

设计思想是:

一切皆插件。

Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。

快捷键:

ALT+‘/’:

弹出快捷列表,syso+ALT+’/’即可自动产生System.out.println();

CTRL+‘/’:

本行注释。

Ctrl+D:

删除本行

第二章Java语言基础

一.标识符、关键字和数据类型

1.基本语法单位

1)空白、注释[新增加的文档注释,文档生成工具javadoc]及语句和块

2)关键字:

P20[注意,没有sizeof算符]

3)标识符:

字母,数字,下划线,$

4)java编程风格(变量,类,常量命名,缩进,块)

2.基本数据类型

1)基本数据类型及取值范围及对应的包装类P22,图P2-1

boolean:

true,false--Boolean

byte:

-128~+127--Byte

char:

16bitunsignedintegerUNICODE--Character

short:

16Bitsignedinteger--Short

int:

32Bitsignedinteger--Integer

long:

64bitsignedinteger--Long

float:

32bit--Float

double:

64bit--Double

2)取值范围常量:

Byte.MAX_VALUE,Short.MAX_VALUE...P23

3)类型转换

低精度向高精度转换时能自动转换,反之则要进行强制类型转换.

boolean类型和int类型不兼容,不能转换,强制转换也不行。

4)变量、说明和赋值(和C++类似,只是没有全局变量)

5)final常量

3.复合数据类型

1)类2)数组3)接口

二.表达式

表达式由操作数和运算符组成。

1.操作数

1)常量:

‘A’,‘\t’,123,45L,34.67f

2)变量:

只有类成员变量和函数内局部变量,没有全局变量。

3)成员变量自动初始化(初值为0,null或false),自动变量未初始化不能引用

4)变量作用域P44[注意和C++和不同,Java不允许存在多重同时可见的局部变量,但允许成员变量和方法局部变量同名同时存在]

2.运算符

1)基本运算符(算术[%运算支持浮点数],关系,逻辑,位运算基本同C/C++)

2)>>>逻辑右移算符(逻辑右移)

3)移位byte,short(移位前都自动转换为int),int以32为模,long以64为模

4)其它运算符instanceof,new,。

5)运算符及优先级[注:

没有逗号运算符]P49

3.表达式的提升和转换

三.流控制

1.表达式语句[和C不同,无作用表达式+分号不能构成语句,比如i;i+1;]

2.块语句{}[就是复合语句]

3.分支语句if[注:

条件表达式只能是逻辑值,不能是算术值,C程序如何移植?

4.循环语句for[尽管没有“,”算符,但沿用了C的写法,允许同时定义多个变量或对多个变量初始化],while,dowhile

5.Switch和循环语句中的break,循环中的continue标号[P59]

四.数组和字符串

1.数组

1)数组说明inta[];int[]a;[“[]”的位置无所谓,不能静态数组如ints[10]]

2)java中的数组名是变量(对象)。

[在C中是常量,是数组的地址]

3)创建数组int[]a=newint[10];[动态初始化,内容自动清0|null(对象)]

4)数组初始化int[]a={1,2,3};[静态初始化]

5)多维数组int[][]a={{1,2},{3,4},{5,6}};[写成int[]a[],inta[][]都合法]

int[][]a=newint[3][4];

int[][]a=newint[3][];[写成int[][]a=newint[][4]不合法]

a[0]=newint[2];a[1]=newint[3];a[2]=newint[5]

[java实际上没有多维数组,多维数组只是数组的数组,由于java数组的动态性,“多维数组”实际上可以不是矩阵数据,即每维长度都是可变的]

6)数组的引用a[i][j][引用时,不能写成[i]a[j],[i][j]a]

7)数组边界a.length[length是java自动为数组生成的final常量]

8)数组复制System.arraycopy(),P76

2.字符串类[型]

1)概述:

String和StringBuffer(P82)

2)说明及初始化

Strings=“Hello”;

[java里面,出现的所有常量字符串会自动放进常量池(constantpool)且不会重复]

3)字符串的引用(对象引用P38错误)

4)字符串处理(连接,比较,修改P83)

3.Vector类

1)创建Vectorv=newVector(容量,增长量);

2)添加,删除,修改,查表元素

add,removeAt,set,get/elementAt/indexOf/contains

3)其它函数[P79-P80]

第三章Java的面向对象特性

一.抽象和封装和类

1.类定义及封装[类有权限,其它同C++]

2.成员方法[每个方法的权限要独立设定,其它同C++]

3.创建对象和对象引用[Java中,所有的对象变量定义都只是引用,而不是对象本身]

4.this引用[相当于C++的this指针,VB的Me引用,Delphi的self引用]

5.null对象[对一个对象赋值为null用来清除对该对象的引用];

6.对象数组[A[]a=newA[10];产生一个对象数组,每个成员都是一个对象引用,值为null]

二.方法重载(overload)

1.同一个类中,可以存在多个同名方法。

2.这些同名方法必须参数个数不同或至少有一个类型不同。

三.对象的构造和初始化

1.在创建对象实例时,类的所有成员自动清成二进制的0/null/false

2.显式成员初始化[和C++不同,类的成员可以在定义的时候指定初值]

3.构造方法[和类同名方法,可以有参无参,无返回值,同C++]

4.默认的构造方法[和类同名,无参数,无返回值]

5.如果没定义无参构造方法,系统会自动产生这个方法,如果定义了非默认的无参构造方法,系统将不再产生无参构造方法[同C++]。

6.在构造方法中调用其它构造方法[调用格式:

this([参数]),必须在首行调用]

7.没有类似C++的拷贝构造方法[形参是值传递或引用传递,不用拷贝]

8.finalize方法(Object.finalize())[在对象内存被垃圾回收器回收之前调用]

9.static和 final成员

1)static成员属于类,不属于对象实例,

2)static方法没有this引用,又称类方法。

3)final数据成员只能被显式初始化或在构造方法中初始化(仅能赋值一次,位置不限定

4)final方法不允许派生类覆盖

10.类中的static语句块{}在类加载时被调用,如果存在多个static块,则它们被以声明的顺序引用,但都先于构造方法被调用。

11.自动垃圾回收及手动回收(System.gc())

12.例Date,Point

四.继承

1.单重继承extends关键字[java不支持多重继承]

2.Java中所有的类都隐含继承于Object类,或者说Object类是所有类的基类。

3.super关键字[派生类对基类的称呼]

4.方法覆盖(override),派生类同名方法自动覆盖基类中同名方法[非final的]

[和C++不同,方法覆盖不会覆盖基类中其它重载的同名方法]

5.赋值兼容性[派生类的对象引用可以赋值给基类对象引用]

6.多态性[所有的非静态方法都是虚方法]

7.运行时支持RTTI,instanceof[objAinstanceofClassB]

8.强制类型转换(父类的引用转成子类的引用)

9.final类和final方法[用于不可继承和不可覆盖]

10.abstract类和abstract方法

1)只有方法声明,没有方法体的方法必须说明为abstract方法;

2)abstract类不能产生对象实例;

3)含有一个以上abstract方法的类必须是abstract类;

11.interface和 implements

1)接口所有成员都是public的,即使没有声明为public

2)实现相应接口也必须为public

3)实现一个接口必须实现该接口的所有方法

4)接口也可以继承其它接口,而且可以继承多个接口

5)一个类可以同时实现多个接口,但至多只能继承一个类

6)接口中可以定义数据成员,但它自动成为static,final,public的,因此,可以用接口定义一组常量,应避免多个接口定义相同名字的常量,否则一个类同时实现多个接口的时候可能会产生冲突,一旦发生冲突就只能用“接口名.成员常量”的方式去访问。

7)接口可以嵌套,实现一个接口不需要一定实现内嵌接口

interfaceIA{

voidf();

interfaceIIA{

voidg();

}

}

8)接口使用示例:

interfaceIA{voidDraw();}

interfaceIB{voidMove();}

interfaceIConst{inta=1;intb=2;}

interfaceIABextendsIA,IB,IConst{}

classIMPextends[Parent]ImplementsIA,IB{

publicvoidDraw(){}

publicvoidMove(){}

}

12.内部类

1)内部类是其所在类的非静态成员,持有其所在类的this引用。

classOuter{

classInner{

}

}

classHello{

publicstaticvoidmain(Stringargs[]){

newOuter().newInner();

}

}

2)内部类可以使用包含它的那个类的成员,原因见1。

3)内部类成员方法调用外部类同名成员方法:

Outer.this.Method

4)内部类成员方法可以使用外问类的同名变量:

Outer.this.varible

5)内部类不能在其所在的外部类的静态成员中被直接使用(如创建对象实例),因为静态成员没有this引用,而内部类要求有一个this引用。

5)内部类本身不能含有静态成员,除非内部类本身是静态类(见14.静态类)

6)在方法内定义的内部类不能使用方法中的变量,除非那个变量是final的。

13.匿名类

1)匿名类是一个内部类,是对已有类继承的子内部类。

2)匿名类定义的新方法无法被外部调用,因为该类是从其它类继承而来,而本身没有名字,无法进行强制类型转换(从其类到派生类)

3)匿名类不能定义构造函数,因为它没有名字,如果基类构造需要参数,可以直接传给基类,如newA(3){voidf(){}};

4)匿名类如果使用方法的局部对象,要求该对象是final的,参见内部类6)。

14.静态类

1)静态类只能是内部类,是其所在类的一个静态成员类,即不持有所在类的this引用,所以不能访问所在类的成员。

2)静态类的成员可以是静态成员,也可以是非静态成员。

五.包(Package)

1.package概念[相当于C++中的namespace,使用路径名作为包名]

2.使用其它包中的类

3.import导入其它的包及系统包

4.jar包

产生:

jarcvfHello.jar*.classA/*.class产生Hello.jar包

修改:

Manifest.mf文件,添加内容:

Main-Class:

Hello

或先制作好MANIFEST.MF文件,然后执行:

jarcvfmHello.jarMANIFEST.MF*.classA/*.class

执行:

java–jarHello.jar

六.权限(publicprotecteddefaultprivate)

1.同一个文件中只能有一个public的类并且和文件同名,区分大小写

2.权限变化

    权限

访问者

public

protected

default

(friendly)

private

同一个类中

可以

可以

可以

可以

同一个包中

可以

可以

可以

不同包中子类对父类

可以

可以

不同包中

可以

3.派生类的方法权限不能低于基类,即权限不能弱化(weaker)

第四章Java异常处理

一.异常概述

二.异常例子(JVM)

P84,数组超界异常

三.关键字:

try,catch,finally,throw

一般形式:

try{

//SomeCodemaybethrowException

//只能抛出Throwable的子类对象,不能抛出其它对象。

}

catch(Exceptiontype1e){

//如果Exceptiontype1是Exceptiontype2的子类,

//则对子类异常的捕获必须写在基类的前面

}

catch(Exceptiontype2e){

}

finally{

}

四.公共异常

1.ArithmeticException

2.NullPointerException

3.NegativeArraySizeException

4.ArrayIndexOutOfBoundsException

5.SecurityException

五.抛出异常

throwSomeException;

和C++不同,java对异常的处理要求是强制性的,如果某方法有抛出异常的语句或者调用了可能抛出异常的其它方法,那必须以下列两种方式之一处理:

1.使用try/catch语句块捕获异常并处理。

2.如果不想处理,就必须在该方法中声明该方法可能会抛出异常,让异常向上继续传递

voidsomefun()throwsSomeException{

throwSomeException;

}

3.例外情况,对于RuntimeException/Error或其子类,由于是系统运行时可能产生的异常,由JVM来处理,这时用户不必捕获,例如NULLPointerException。

尽管这类异常也可以捕获,但一般不推荐,因为可能会掩盖了系统的问题。

六.创建自己的异常

classMyExextendsException{

MyEx(Strings){

super(s);

}

}

publicclassHello{

publicstaticvoidmain(String[]args)throwsException{

thrownewMyEx("KKKKK");

}

}

第五章JavaGUI程序设计

一.概述

1.AWT(AbstractWindowToolkit)和Swing

2.Java的GUI由组件(component)和容器(container)组成

3.组件的定位及布局管理器(layoutmanager)

1)组件的容器含有一个实现了某个LayoutManager接口的实例

2)可以用setLayout(null)来阻止布局管理器的自动布局,然后用setSize(),setLocation(),setBounds实现自已布局

3)创建自已的类实现LayoutManager接口

4.组件的大小也是由布局管理器自动调整的

二.框架(Frame)

是Window类的子类,是一个带标题栏并且可以改变大小的窗口

1.创建一个简单的Frame

2.继承Frame

3.加入Panel

三.布局

Java中包含几种布局管理器

1.FlowLayout(Panel,Applet默认布局管理器)

2.BorderLayout(Window,Dialog,Frame默认布局管理器)

3.GridLayout(网格式布局管理器)

4.CardLayout(卡片式管理器,也称为向导(Wizard)模式管理器)

5.BoxLayout(水平或垂直线式管理器)

6.因为每个容器都有布局管理器,所以可以嵌套布局

四.AWT事件模型

1.事件来源

2.事件处理JDK1.0版本[已过时]

1)Component.HandleEvent(Evente)重载这个函数,实现系统不关心的消息,当然如果不必要也可以不重载

2)重载事件函数,如publicvoidmouseMove(Evente,intx,inty)

3.事件模型(委托模型)JDK1.1及以后版本

每个组件要自已监听消息,能过addXXXXListener实现,只有对事件加了监听的组件才能收到消息.

1)Listener接口

类别

Interface

方法

Action

ActionListener

actionPerformed(ActionEvent)

Item

ItemListener

itemStateChanged(ItemEvent)

MouseMotion

MouseMotionListener

mouseDragged(MouseEvent)

mouseMoved(MosueEvent)

MouseButton

MouseListener

mousePressed(MouseEvent)

mouseReleased(MouseEvent)

mouseEntered(MouseEvent)

mouseExited(MouseEvent)

mouseClicked(MouseEvent)

Key

KeyListener

keyPressed(KeyEvent)

keyReleased(KeyEvent)

keyTyped(KeyEvent)

Focus

FocusListener

focusGained(FocusEvent)

focusLost(FocusEvent)

Adjustment

Adjustme

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1