ASP网络程序设计.ppt
Java语言程序设计,上海大学春季学期,教学参考书,实践大师:JAVA 2 编程篇JAVA 2 Programmers Interactive Workbook电子工业出版社文字JAVA 面向对象程序设计教程 清华大学出版社Java语言导学 机械工业出版社,实验教学指导书,JAVA与 面向对象程序设计实验指导与习题集 清华大学出版社,教学安排,上课:周三下午12节上机:周三下午34节 (第二周开始上机C420、421),学 习 方 法,Not to study, But to learn.少做笔记,多听、多动手。,课 程 考 试,平时情况与考试情况相结合书面考试与上机实验相结合,第一章 Getting Started,1. 关于Java技术2 . Java开发工具包的安装与配置3. Java程序的建立、编译与运行4. 程序HelloWorld的分析,1.1 关于Java技术,IT 界到处都在谈论Java技术,但是Java技术到底是什么?下面我们介绍Java编程语言和Java平台。,1.1.1 Java编程语言,Java编程语言是一种高级编程语言,它具有如下性质: 简单 Simple 稳固 Robust 高性能 High performance 安全 Secure 面向对象 Object oriented 多线程 Multithreaded 动态 Dynamic 分布式 Distributed 与平台无关 Platform independent 解释 Interpreted 轻便 Portable,1.1.1 Java编程语言,对于大多数语言,要运行程序,要么编译程序要么解释程序;而Java语言的程序则既要被编译又要被解释。编译程序将Java源程序翻译为字节码(bytecode)程序;解释程序Java虚拟机分析并运行字节码程序。一次编写,处处运行Write once,run anywhere!,用Java源程序先被编译、后被解释,一次编写,处处运行,1.1.2 Java平台, 平台(Platform)是程序在其中运行的硬件或软件环境。 最流行平台:Windows 2000, Linux, Solaris, MacOS Java平台:一种运行在其它硬件平台上纯软件 平台,它有两个组件: Java虚拟机(Java VM)和 Java应用编程接口(Java API),1.1.2 Java平台, Java VM是Java平台的基础 Java API是预先建立的软件组件的集合,提供丰富的功能,如GUI部件。 Java API被分为相关类和接口的库,这些库称为包(package),Java API和Java VM将程序与硬件分离,1.1.3 Java技术可以做什么, Java程序的常见类型是Applet和Application Java平台的每种完整实现均提供如下功能:基本内容:对象、字符串、线程、输入/输出、数据结构、系统属性、日期、时间等;Applets:与Java applet使用的一组约定;连网:URL、传输控制协议(TCP)、用户数据报协议(UDP)套接字和IP地址。国际化:帮助进行本地化的程序。,1.1.3 Java技术可以做什么,(6) 安全:包括低层和高层安全性,如电子签名、 公共密钥和私有密钥管理、访问控制和证书。(7) 软件组件:称为Java Beans的组件可以插入现有的组件体系结构。(8) 对象串行化:通过远程方法调用(Remote Method Invocation, RMI)支持轻型的持久性和通信。(9) Java数据库连接(JDBC):提供对各种关系数据库的统一访问。,Java 2 SDK,1.2 Java开发工具包的安装与配置,为了鼓励使用Java语言开发软件,Sun Microsystems公司提供了免费的软件开发工具包(SDK),其中包括编译器、虚拟机、调试器等开发工具,称为Java开发工具包或JDK。Windows版和Solaris版的JDK可以从如下站点下载: http:/www.sun.com/products/jdk/1.2/index.html,1.2 Java开发工具包的安装与配置,安装:执行安装程序,按提示即可。,1.2 Java开发工具包的安装与配置,路径配置:加入路径C:jdk1.3bin SET PATH=%PATH; C:jdk1.3bin环境变量:SET CLASSPATH=%CLASSPATH;.;C:JDK1.3Lib,1.3 Java程序的建立、编译与运行, 创建第一个应用程序:程序HelloWorldApp将显示一句问候语“HelloWorld!”。 创建第一个小应用程序:程序HelloWorld也将显示一句问候语“HelloWorld!”。,1.3.1 创建第一个应用程序,Step1:创建源代码文件;Step2:将源代码文件编译为字节码文件;Step3:运行字节码文件,1.3.1.1 创建源代码文件,启动“记事本”,输入如下代码:public class HelloWorldApp public static void main(String args) /Display the string. System.out.println("Hello World!"); 注意:大小写敏感;文本文件;文件名为.java,1.3.1.2 编译源代码文件,进入DOS或Command提示符状态;转到Java源程序所在目录,如C:java输入如下命令,并回车: javac HelloWorldApp.java注意:编译成功后将生成字节码文件 HelloWorldApp.class,1.3.1.3 运行程序,在相同目录下输入如下命令,并回车: java HelloWorldApp,1.3.2 创建第一个小应用程序,Step1:创建源代码文件;Step2:配套的HTML文件;Step3:将源代码文件编译为字节码文件;Step4:运行程序。,1.3.2.1 创建源代码文件,启动“记事本”,输入如下代码,并保存为HelloWorld.javaimport java.applet.Applet;import java.awt.Graphics;public class HelloWorld extends Applet public void paint(Graphics g) g.drawString("Hello world!", 50, 25); ,1.3.2.2 创建相应的HTML文件,在“记事本”,输入如下代码,并保存为Hello.html A Simple Program Here is the output of my program:,1.3.2.3 编译源代码文件,进入DOS或Command提示符状态;转到Java源程序所在目录,如C:java输入如下命令,并回车: javac HelloWorld.java注意:编译成功后将生成字节码文件 HelloWorld.class,1.3.2.4 运行程序,输入如下命令,并回车:appletviewer Hello.html,1.4 程序HelloWorld的分析,既然我们已经编译并运行了第一个Java程序,我们自然想知道它的工作原理。本节我们首先分析HelloWorldApp应用程序,然后再分析HelloWorld小应用程序。,1.4.1 对应用程序的分析, 注释: /* 文本 */ /* 文本 */,1.4.1 对应用程序的分析(续), 定义类: 类是面向对象语言的基本构件。类是一个“蓝图”,描述此的实例(instance)相关联的状态和行为。当你实例化(instantiate)一个类时,就是创建一个对象,它的状态和行为与此类的其它实例相同。状态由成员变量表示;行为则由方法表示。,1.4.1 对应用程序的分析(续), main方法: 每个Java应用程序的入口点都是它的main方法。当运行Java应用程序时,指定要运行的类的名称,Java解释器调用该类中定义的main方法,由main方法控制程序的流程、分配所需资源并运行为此应用程序提供功能的其它方法。,1.4.1 对应用程序的分析(续),每个Java应用程序必须声明一个mian方法:public static void main(String args)修饰符:public:允许任何类调用main方法;static:表示main方法与HelloWorldApp类相关联, 而不是在这个类的一个实例上进行操作。void: 表示main方法不返回任何值。String:命令行参数。,1.4.1 对应用程序的分析(续), 使用类和对象 该程序使用了System类。 System类提供的功能之一是标准输出流。System.out是System类中的out变量的完整名称。应用程序没有实例化System类,而是通过System类直接访问out,这是因为out是类变量,与类相关联,而不与对象相关联。类变量out引用PrintStream类的一个实例。当System类被载入时,它实例化PrintStream类,并为类变量out分配一个新的PrintStream对象,再调用其实例方法:System.out.println(“Hello World!”),1.4.2 对小应用程序的分析, 导入类和包 两条import语句分别导入Applet和Graphics类,从而可以引用其它包中的类。如果删除这两行,则须修改程序如下:public class HelloWorld extends java.applet.Applet public void paint(java.awt.Graphics g) g.drawString("Hello world!", 50, 25); ,1.4.2 对小应用程序的分析, 定义Applet子类public class HelloWorld extends Applet 关键字extends表示HelloWorld类是Applet类的一个子类。每个小应用程序applet都必须是Applet类的一个子类,从而继承Applet类的功能,从与浏览器通信到GUI。,1.4.2 对小应用程序的分析, 实现applet的方法HelloWorld applet只实现了一个方法paint。与应用程序不同,applet不需要main方法。Applet应包含在HTML页面中。,1.4.2 对小应用程序的分析, 运行applet的方法当支持Java的浏览器遇到标记时,为applet保留屏幕显示空间,将Applet子类装载进它所在的计算机,然后创建Applet子类的一个实例。,1.5 常见错误,编译时错误路径设置错、文字输入错运行时错误源文件名与public类名不一致类的数量源文件格式,第二章 基本概念,2.1 注释与程序段 注释 / /* */ 分号 ; 程序段 空白,第二章 基本概念(续),2.2 标识符 字母、下划线或$开头的字母、数字、下划线和$构成的字符串。2.3 Java语言的关键字 保留字,2.4 Java基本数据类型,分四大类:逻辑、字符、整数和浮点 共9种基本数据类型逻辑类型:boolean字符类型:char和string整数类型:byte,short,int和long浮点类型:float和double,2.6 Java 编程习惯,程序可读性 类、接口:通常使用名词,且每个单词的 首字母要大写 方法:可以是动词,首字母小写,其后用大写 字母分隔每个单词 常量:全部大写,单词之间用下划线分隔 变量:同方法,应该避免使用$符号,第二章 基本概念,2.1 注释与程序段 注释 / /* */ 分号 ; 程序段 空白,第二章 基本概念(续),2.2 标识符 字母、下划线或$开头的字母、数字、下划线和$构成的字符串。2.3 Java语言的关键字 保留字,2.4 Java基本数据类型,分四大类:逻辑、字符、整数和浮点 共9种基本数据类型逻辑类型:boolean字符类型:char和string整数类型:byte,short,int和long浮点类型:float和double,2.6 Java 编程习惯,程序可读性 类、接口:通常使用名词,且每个单词的 首字母要大写 方法:可以是动词,首字母小写,其后用大写 字母分隔每个单词 常量:全部大写,单词之间用下划线分隔 变量:同方法,应该避免使用$符号,2.6 Java 编程习惯(续),程序可读性 控制结构:if-then-else和for语句等中的 语句或语句组要用 间隔:每行一条语句,并且采缩进格式 注释:尽量多注释,2.7 对象概念 用一个下午学习,用一生去掌握,复合数据类型:多个不同类型变量的组合,如structure,record类:在OOP中将复合数据类型称为类(class)对象:某个类的实例成员:构成对象的基本元素引用:其值为地址者,2.8 变量概述,Java“类”定义对象,对象就是数据和处理,或表示这些数据的操作。变量是类中数据的“容器”,也被称为“域”(field)。变量声明:在使用变量之前,类必须定义变量的类型和名字,即先定义,后使用。 例如: String myOutPut;,2.8 变量概述(续),变量赋值: = ;变量作用域:变量起来作用的范围,即在那里存在和在那里不存在。作用域判断:变量只在声明它的代码块中以及该块内所包含的任何块中。在此区域之外该变量既不存也不能被引用。,2.8 变量概述-Eample,import java.applet.Applet;public class scopeTest extends AppletString myString = "Hello"public void init()doPrintSomething();doPrintSomethingElse();public void doPrintSomething()String notPrinted;notPrinted = "Hi!",String localString = "World!"System.out.println(myString + " " + localString);public void doPrintSomethingElse()String localString = "Everybody!"System.out.println(myString + " " + localString);,2.9 方法概要,方法(method):定义类能够执行的动作和如何执行这些动作。方法分为三类:转换器:接受修改内部变量值的方 法; 访问器:获取内部变量值的方法;效果器:执行某个动作的方法。,2.9 方法概要(续),public void doPrintSomething(String something)System.err.println(foo);调节器返回类型名称参数列表,2.9 方法命名参考,方法名体现其所完成的任务方法名以小写字母开头,将划分单词界线的字母大写对转化器,加前缀“set”;对访问器,加前缀“get”;对效果器,加前缀“do”。,第三章 数据类型 你和我不是同一种人 委婉的拒绝,物以类聚,人以群分计算机的世界,即数据的世界,用数据表达信息,不同种类的信息以类型表征。,第三章 数据类型 你和我不是同一种人 委婉的拒绝,物以类聚,人以群分计算机的世界,即数据的世界,用数据表达信息,不同种类的信息以类型表征。,3.1 原始数据类型,类型 含义 Byte 8位整数 Short 16位整数 Int 32位整数 long 64位整数 float 单精度浮点数 double 双精度浮点数 char 16为Unicode字符 boolean 布尔型,数据类型int,举例:int x;x = 5;System.out.println(x);,数据类型int(续),举例:int x = 5;System.out.println(x);-x=5+20;System.out.println(x);x= x+1;System.out.println(x);,数据类型float、double,举例:float price = (float) 7.25*5;System.out.println(x);double val1 = 7.0/9.0;double val2 = 2.0/9.0;double val3 = val1+val2;System.out.println(val1);System.out.println(val2);System.out.println(val3);,数学运算符,+ 加- 减* 乘/ 除% 取模(余),3.2 String类,类:对象的描述,正如设计图是住宅的描述一样,你可以按照设计图建造许多住宅,设计图是“类”的定义,而住宅则是设计图的实例化,即按照定义建造出的对象。,String构造,String firstName = “George”;String lastName = new String(“Washington”);System.out.println(firstName);System.out.println(lastName);构造器Class variableName = new Class();Class variableName = new Class(parameters);,String构造,String firstName = “George”;String lastName = new String(“Washington”);System.out.println(firstName);System.out.println(lastName);构造器Class variableName = new Class();Class variableName = new Class(parameters);,String合并,String firstName = “George”;String lastName = new String(“Washington”);String fullName = firstName + lastName;System.out.println(fullName);String fullName = firstName + “ ” + lastName;System.out.println(fullName);,String方法-Length(),String title = “Java 2 Programming”;int len = title.Length();System.out.println(len);注意:字符串长度为其中所含字符的个数,包括 空格。,String方法-IndexOf(),String title = “Java 2 Programming”;int index= title. indexOf(“2”);System.out.println(index);5注意:字符串索引自左到右,从0开始编号。,String方法-Substring(),String title = “Java 2 Programming”;int firstHalf= title. substring(0,7);int lastHalf= title. substring(7);System.out.println(firstHalf);System.out.println(lastHalf);,String方法小结,public int length()public int indexOf(String findme)public String substring(int startIndex)public String substring(int srartIndex, int srartIndex+subLength),3.3 数 组,数组:相似元素的有序集合 同一数组中的元素必须类型相同,如int数组、double数组、String数组和char数组等。,数组定义,举例int firstArray;int secondArray = new int10;int thirdArray = 10,12,-10,100; firstArray为整型空(null)数组,secondArray为10个元素整型数组,thirdArray有4个int值(分别为10,12,-10,100)的数组,数组访问,数组访问方法:index数组元素索引:从0开始递增例如:System.out.println(thirdArray0);System.out.println(thirdArray1);thirdArray2=168; /数组元素赋值System.out.println(thirdArray2);,数组长度 length域,数组中的元素个数称为数组长度,所有数组均有一个length域记录数组长度。举例Char letters = a,b,c;System.out.println(letters.length);3System.out.println(letters);/作为字符串输出,数组使用举例,String names=“John”, “Mary”, “Robert”;String people;people = names;System.out.println(names0);System.out.println(people2);System.out.println(names);/无效,3.4 向量,向量:对象的集合。 其中,各元素可以不必同类型,元素可以增加和删除,不能直接加入原始数据类型,向量使用,首先必须在程序开始处加入:import java.util.Vector;=Vector v = new Vector();String s = new String(“Hello”);,向量使用(续),v.add(s);v.add(“Goodbye”);System.out.println(v);System.out.println(v.size();Hello, Goodbye2,向量使用(续2),boolean success = v.remove(s);/v.remove(“Hello”)System.out.println(v);System.out.println(success);System.out.println(v.size();GoodbyeTrue1,Vector方法,public boolean add(object o)public boolean remove(object o)public int size()public Enumeration element(),在向量中使用封装器,由于Java不把原始数据类型当作对象来处理,向量中就不允许存储原始数据类型的数据,为此,Java又引入如下新的类以封装原始数据类型: IntegerFloatDoubleCharacterBoolean,在向量中使用封装器(续),举例Integer I = new Integer(211);Int i = I.intValue();System.out.println(i);,封装器类小结,Integernew Integer(int i) intValue()Float new Float(float f) floatValue()Double new Double(double d) doubleValue()Character new Character(char c) charValue()Boolean new Boolean(boolean b) booleanValue(),封装器使用举例,String name = new String(“John Smith”);Integer age = new Integer(30);Double salary = new Double(8675.88);Vector record = new Vector();record.add(name); record.add(age);record.add(salary);System.out.println(record);,枚举,Enumeration(枚举)类允许列举向量元素,通过elements()方法得到Enumeration对象。public boolean hasMoreElements()public Object nextElement(),枚举举例,import java.util.*;Vector dogs = new Vector();dogs.add(“Rambo”);dogs.add(“Feisy”);Enumeration names = dogs.elements();System.out.println(names.hasMoreElements();System.out.println(names. nextElement();System.out.println(names.hasMoreElements();System.out.println(names. nextElement();System.out.println(names.hasMoreElements();,枚举举例(续),显示结果trueRambotrueFeisyfalse,枚举举例(续2),public class ThreeStoogesExamplepublic static void main(String args)/ ThreeStoogesExampleVector stooges = new Vector();stooges.add("Larry"); stooges.add("Curly");stooges.add("Moe");,枚举举例(续3),stooges.remove("Curly");stooges.add("Shemp");System.out.println("The " + stooges.size()+ "Stooges"); Vector actors = new Vector();actors.add("Bob"); actors.add("Ted");actors.add("Alice"); actors.add(stooges);System.out.println(actors.size();System.out.println(actors);,枚举举例(续4),The 3Stooges4Bob, Ted, Alice, Larry, Moe, Shemp,nextElement()返回类型,nextElement()返回类型是Object类如需将该值赋给变量,必须强制类型转换 String name = (String) names.nextElement();,补充实例1,public class IsLowerCaseExample public static void main(String args) / IsLowerCaseExample char letter= 'f'boolean lowerCase = Character.isLowerCase(letter); System.out.println("Is letter lower case? " + lowerCase); letter = ' F'boolean upperCase = Character.isUpperCase(letter); System.out.println("Is letter upper case? " + upperCase); ,补充实例2,public class UseSubStringpublic static void main(String args)/ UseSubStringString source= "abcdefghijklmnop"String s;int len;s=source.substring(4,7); len=s.length();System.out.println(s); System.out.println(len);,补充实例3,public class UseTheForceExamplepublic static void main(String args)/ UseTheForceExampleString force = "Use the force, Luke!"String findString = "Luke"int findStringLength = findString.length();int startIndex = force.indexOf(findString);int endIndex = startIndex + findStringLength;String subStr = force.substring(startIndex, endIndex);System.out.println(startIndex); System.out.println(endIndex);System.out.println(findStringLength);System.out.println("Substring is " + subStr);,第四章 流程控制,生活中充满着选择、充满着决定, 流程控制就是Java语言用于选择和决定的机制。,4.1 布尔检验,目的:如何比较两个对象相等比较格式:A = B说明:如A等于B,表达式A=B的值为true;否则为false。,4.1 布尔检验(续),举例System.out.println(“The expression 2=4 is ”);System.out.println(2=4);显示结果:The expression 2=4 isfalse,4.1 布尔检验(续2),Equals()方法 对于String、Integer和Float的对象类型,用Equals()方法判断是否相等。Integer I1=new Integer(2);Integer I2=new Integer(2);System.out.println(“Does I1 equals I2?”);System.out.println(I1.Equals(I2);,4.1 布尔检验(续3),注意:比较两个对象时用Equals()方法,比较原始数据类型时用=运算符。大于/小于A>BA=BA<=BA!=B,4.2 IF-THEN-ELSE,If-Then语句: if () ;说明:如果为真,就执行;否则,不执行。,4.2 IF-THEN-ELSE(续),举例int temperature = 38;if (temperature>35)System.out.println(“Its too hot!”);System.out.println(“Have a nice day.”);,