JAVA教学大纲.docx
- 文档编号:24797987
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:29
- 大小:89.35KB
JAVA教学大纲.docx
《JAVA教学大纲.docx》由会员分享,可在线阅读,更多相关《JAVA教学大纲.docx(29页珍藏版)》请在冰豆网上搜索。
JAVA教学大纲
第01章、JAVA概念、JDK安装
(1)JAVA语言的特点:
•简单性
•面向对象:
封装、继承、多态等;
•分布性:
有很强的通信库;可处理TCP/IP等协议;可通过URL访问网络资源;分布计算;
•健壮性
•安全性
•体系结构中立
•解释执行
•可移植性
•高效性
•多线程
•动态性:
可在库中自由加入新方法和实例变量,适应不断变化的环境;
(2)JAVA的三个版本:
•J2SE:
JAVA标准版;
•J2EE:
JAVA企业版;
•J2ME:
JAVA微缩版;
(3)相关基本概念:
JDK、SDK、JRE、JVM、
•JDK:
JavaDevelopmentKit(Java开发包);
•SDK:
SoftwareDevelopmentKit(软件开发包);
•JRE:
JavaRuntimeEnvironment(Java运行环境);
•JVM:
JavaVirtualMachine(Java虚拟机);
•API:
ApplicationProgramInterface(应用程序编程接口);
(4)JDK的安装和环境变量的设置;
若JDK安装在“D:
\ProgramFiles\Java\jdk1.6.0_01”目录,则环境变量设置如下:
•变量名:
JAVA_HOME
变量值:
D:
\ProgramFiles\Java\jdk1.6.0_01
•变量名:
Path
变量值:
D:
\ProgramFiles\Java\jdk1.6.0_01\bin
•变量名:
CLASSPATH
变量值:
.;D:
\ProgramFiles\Java\jdk1.6.0_01\lib\tools.jar;D:
\ProgramFiles\Java\jdk1.6.0_01\lib\dt.jar
(5)一个简单的HelloWorld简单示例;
publicclassA
{
publicstaticvoidmain(Stringargs[])
{
System.out.print(“HelloWorld”);
}
}
(6)javac.exe、java.exe的作用
•用javac.exe对源文件(.java)进行编译生成中间码/字节码(.class);
用法:
javacA.java(回车);
•用java.exe对中间码/字节码(.class)进行解释执行;
用法:
javaA.class(回车);
(7)基本输入输出应用
•importjava.util.Scanner;//引入Scanner类的包
Scanners=newScanner(System.in);//构建Scanner对象s
floatx=s.nextFloat();//使用s对象从键盘读取一个整数
charc=s.nextChar();//使用s对象从键盘读取一个字符
System.out.print(x);//屏幕输出x的值
System.out.print(x);//屏幕输出c的值
第02章、基本类型、数组、字符串
(1)JAVA的八种基本类型:
boolean、char、byte、short、int、long、float、double
基本类型
boolean
byte
char
short
int
long
float
double
包装类
Boolean
Byte
Character
Short
Integer
Long
Float
Double
※基本类型:
是定义变量时常用的基本数据类型,必须熟记;
※包装类:
提供各种对应基本类型的转换函数(详见javaAPI);
(2)常用类型转换
String<--int:
Strings=Integer.toString(int);
int<---String:
intx=Integer.parseInt(y);
float<---String:
floatx=Float.parseFloat(String)
String<--float:
Strings=Float.toString(float);
※更多转换,例如不同进制转化,参考javaAPI
(3)数组的声明、创建、初始化
•例:
int[]k;//声明//声明时一定不能在[]中写入数字
k=newint[10];//创建
k[0]=1;//初始化,10个元素为:
x[0]、x[1]、…x[9]
•通过初始化创建数组:
int[]k=newint[]{1,2,34,5};
int[]k={1,2,3,4,5};
String[]names=newString[]{“kack”,”wang”,”zhang”};
String[]names={“kack”,”wang”,”zhang”};
•二维数组
int[][]x;//声明
x=newint[3][];//创建,x相当于一维数组,每个元素又是一维数组
x[0]=newint[4];//初始化,第一行为4个元素
x[1]=newint[5];//初始化,第二行为5个元素
x[2]=newint[6];//初始化,第三行为6个元素
数组是类对象,其数组长度在创建时确定,可通过[数组名.length]获取到数组的长度
因此k.length==10;names.length==3;x.length==3;x[0].length=4;x[1].length=5;
上面生成的是一种不规则二维数组,也可以生成传统的规则二维数组,如下:
float[][]s;
s=newfloat[3][4];
其等价于:
s[0]=newfloat[4];s[1]=newfloat[4];s[2]=newfloat[4];
(4)字符串
•String:
字符串不可修改,但可以通过拼接间接实现,效率较低;
Strings1=”abc”;
Strings2=”abc”;
Strings3=newString(“abc”);
Strings4=newString(“abc”);
Strings5=”abcabc”;
注:
字符串常量”abc”在内存中是共享对象;
s1==s2?
s3==s4?
s1==s3?
s5==s1+s2?
s1.equals(s2)?
s3.equals(s4)?
s1.equals(s3)?
s5.equals(s1+s2)?
==:
比较两个变量(复合变量)是否指向同一个对象;
eques:
比较两个对象的内容是否相等;
•StringBuilder:
可以方便的进行字符串的修改,效率较高;
StringBuilders=newStringBuilder();
s.append(“abc”);
s.append(“efg”);
s.insert(3,”kkk”);
s.delete(0,3);
Stringk=s.toString();
第03章、类特征、定义、构造方法、实例化
(1)面向对象的三大特征:
封装、继承、多态
•封装:
解决了数据的安全性问题
•继承:
解决了代码的重用问题
•多态:
解决了程序的扩展问题(编译时多态;运行时多态)
(2)类、对象、对象变量的概念
设计图纸为【类】,那么按照图纸所建造成的建筑物就是【对象】
Object、Scanner为【类】;那么newObject()、newScanner(System.in)就是【对象】;
Objecto=newObject();o是【对象变量】;对象变量只是对象的引用,并不保存对象。
(3)类的结构和定义
class类名
{}
主要由不可缺少的三部分组成:
【关键字class】、【类名】、【类体】
【类体】中主要包含:
【变量】、【方法】
classstudent
{
intno;
Stringname;
booleansex;
voidstuding()
{
………
}
StringputSelfInfo()
{
……….
}
}
(4)类的构造方法及作用
•方法名和类名相同;
•只能通过new运算符调用,作用是用来创建类对象;
•构造方法不能有返回值,不写void;
第04章、包、访问权限、继承
(1)包的定义与使用
•定义:
package包名;
•使用:
import包名.类名;import包名.*;
•注意:
package在前,import在后;
(2)四种访问权限private、默认、protected、public
级别
修饰符
同类
同包
子类
不同包
私有
private
√
默认
无
√
√
受保护
protected
√
√
√
公开
public
√
√
√
√
说明:
类仅可以用public、默认修饰;成员可以全部用来修饰;
(3)类的继承:
classAextendsB{}
•只单继承,不能多重继承
•省略继承关系时,默认继承于Object,即extendsObject
•父类的构造方法、private修饰的成员都不能被子类继承
•实例化子类对象时,子类默认先调用执行父类的构造方法,然后再执行子类的构造方法。
第05章、this、super、重载、重写
(1)this与super的使用
this:
代表当前类对象;super代表父类对象;super()代表父类构造方法;
(2)方法的重载
•就是在同一个类中存在多个方法,其名称相同,但参数不同(个数、类型、顺序)
•重载是是JAVA中的编译时多态
(3)方法重写(overriding)
•就是在子类中重新定义与父类相同的方法;其方法的名成、返回值类型、参数列表完全一致。
•子类通过重写可以改变从父类继承来,也即覆盖。
•子类方法不能缩小父类方法的访问权限。
•父类的静态方法不能被子类覆盖为非静态方法;父类的非静态方法不能被子类覆盖为静态方法
•父类的非抽象方法可以被覆盖为抽象方法
•注意区分重载与重写的区别
(4)运行时多态
参考示例:
运行时多态.java
(5)类型测试运算符:
instanceof
用法:
if(A对象instanceofB类){}
(6)==与equals的区别
•==比较两个引用变量是否指向同一个对象
•equals比较两个引用变量所指对象内容是否相同
第06章、static、final、抽象类、接口
(1)static(静态)
•用static修饰的变量或方法称为静态变量和静态方法;
•一个类的所有对象共享同一个静态变量和静态方法;
•静态变量和静态方法不用实例化就可以使用,用法:
类名.静态成员;
•静态方法中不能引用非静态的变量或方法,当然this也不允许出现;
(2)final(最终)
•用来修饰类:
类不能被继承;
•用来修饰方法:
方法不能被重写;
•用来修饰变量:
变量只读;定义时赋初值,或在构造方法中附初值;
(3)抽象类
•抽象类:
用关键词abstract修饰的类为抽象类;
•抽象方法即:
由abstract修饰,只提供方法声明而不提供方法实现;
•抽象类中可以有抽象方法也可以没有抽象方法;
abstractclassC
{
abstractvoidaaa();//抽象方法
voidbbb(){}//非抽象方法
}
•抽象类不能创建实例;必须通过子类继承并实现其全部抽象方法后方可创建实例;
(4)接口
•可以多重继承,包含常量定义和方法定义两部分,其所有方法不能有方法体;
•接口声明:
[public]interface接口名[extendssuperinterface1,superinterface1…]
•默认继承于EventListener接口
•其中常量默认具有public、final、static属性;方法默认具有public、abstract属性
举例:
接口Flyer的定义如下:
publicinterfaceFlyer
{
intNO=1001;
publicvoidtakeoff();
publicvoidland();
publicvoidfly();
}
•接口实现:
即在类中写出接口的所有方法的实现(方法体);
举例:
接口Flyer的实现
publicclassAirPlaneimplementsFlyer
{
publicvoidtakeoff(){实现代码}
publicvoidland(){实现代码}
publicvoidfly(){实现代码}
}
第07章、图形界面、布局、事件
(1)概念:
GUI、AWT、Swing
•GUI:
GraphicsUserInterface,即图形用户界面。
•AWT:
AbstractWindowToolkit,即抽象窗体工具包(java.awt),用于创建图形用户界面程序。
•swing:
图形界面工具包(javax.swing)。
目前图形界面通常采用Swing而不是AWT,但大部分Swing程序要用到AWT的基础底层结构和事件模型。
•什么是组件(Label、Button、TextArea、Panel、Frame…);
•什么是容器(Panel、Frame…);
•如何创建一个基本的Windows(GUI)应用程序;
【1】创建窗口程序:
publicclassmyjframe{
publicstaticvoidmain(String[]args){
JFramewin=newJFrame();
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Imageim=Toolkit.getDefaultToolkit().getImage("c:
\\a.gif");
win.setIconImage(im);
win.setBounds(300,300,400,400);
win.getContentPane().setBackground(Color.BLUE);
win.setResizable(false);
win.setTitle("我的第一个窗体程序");
win.setVisible(true);
}
}
【2】创建窗口程序:
publicclassmyjframe{
publicmyjframe(){
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Imageim=Toolkit.getDefaultToolkit().getImage("c:
\\a.gif");
this.setIconImage(im);
this.setBounds(300,300,400,400);
this.getContentPane().setBackground(Color.BLUE);
this.setResizable(false);
this.setTitle("我的第一个窗体程序");
this.setVisible(true);
}
publicstaticvoidmain(String[]args){
newmyjframe();
}
}
※两种方式,强烈建议使用方式【2】
(2)布局管理器
每个容器都可以设置为以下的任一种布局管理
•FlowLayout:
流式布局【从左至右,从上至下,组件为默认大小】
•BorderLayout:
边界布局【按照上、下、左、右、中摆放】
•GridLayout:
网格布局【按照给定行列摆放,组件大小相同】
•CardLayout:
卡片布局【只显示最上面的一个组件】
•GridBagLayou:
网格包布局【摆放很灵活、使用很复杂】
提示:
获取屏幕分辨率的方法如下
intWidth=java.awt.Toolkit.getDefaultToolkit().getScreenSize().width;
intHeight=java.awt.Toolkit.getDefaultToolkit().getScreenSize().height;
※各种布局方式的使用,请参考【示例程序:
布局方式】
(3)事件处理
•什么是事件、事件源、事件处理器
•实现思路:
定义事件类-->注册事件到组件上
•常见事件处理接口及其方法
事件源
接口名
方法
说明
Buttot
List
MenuItem
TextField
ActionListener
actionPerformed
通常按下按钮,双击列表项或选中一个菜单项时,就会生成此事件。
Scrollbar
AdjustmentListener
adjustmentValueChanged
操纵滚动条时会生成此事件。
Component
KeyListener
keyPressed
keyReleased
keyTyped
接收到键盘输入时会生成此事件。
Component
MouseListener
mouseClicked
mouseEntered
mouseExited
mousePressed
mouseReleased
鼠标按下并释放、进入组件、离开组件、按下单击、释放
Component
MouseMotionListener
mouseDragged
mouseMoved
鼠标拖动、未按下移动
Window
WindowListener
windowActivated
windowDeactivated
windowClosed
windowClosing
windowIconified
windowDeiconified
windowOpened
当一个窗口激活、关闭、失效、恢复、最小化、打开或退出时会生成此事件。
※如何使用事件,请参考【示例程序:
事件应用】
第08章、内部类
(1)概念:
定义在某一个类内部的类,称为内部类。
(2)优点:
内部类可以作为外包类的成员使用;在内部类中可以访问外包类的所有成员;
publicclassouter//外部类定义
{
intx=1;inty=2;
innerinner_Obj=newinner();//内部类作为外包类的成员
voidprintStr()
{
System.out.println("外部类方法");
}
classinner//内部类定义
{
intx=3;
publicvoidprintData(intx)
{
inta=x;//形参
intb=this.x;//内部类变量
intc=y;//外部类变量
intd=outer.this.x;//外部类与内部类同名变量
System.out.println(a+""+b+""+c+""+d);
printStr();//调用外部类方法
}
}
publicstaticvoidmain(String[]args)
{
outero=newouter();
o.inner_Obj.printData(4);//通过外部类对象调用内部类方法
}
}
(3)外包类之外访问内部类
outero=outer();
outer.innerv=o.newinner();
(4)特点:
内部类可以使用public、protected、默认、private四种访问权限;可以被static修饰;
内部类可以继承外包类;
※内部类事件处理应用,请参考示例程序:
内部类事件应用.java
※不使用内部类时,类之间变量传递的解决方法,请参考示例程序:
类之间传递参数.java
第09章、Applet
(1)什么是Applet
•是嵌入到网页中通过浏览器执行的JAVA小程序,没有main方法,是基于图形界面的;
•可以使用JDK的appletviewer来运行网页文件;
(2)Applet的定义和使用
•类的定义
importjava.applet.*;
publicclasshellowextendsApplet{
//主要是对父类方法的重写
}
•网页中的调用