《JAVA语言编程教案》doc版.doc_第1页
《JAVA语言编程教案》doc版.doc_第2页
《JAVA语言编程教案》doc版.doc_第3页
《JAVA语言编程教案》doc版.doc_第4页
《JAVA语言编程教案》doc版.doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JAVA语言编程教案(第0-3章)前 言一、课程概述本课程主要包括以下内容:- Java编程语言句法- 应用于Java编程语言的面向对象的概念- 图形用户界面(GUI)编程- 创建Applet- 了解ServletJSP- JavaBean本课程首先讨论了Java运行环境和Java编程语言句法,然后阐述了应用于Java编程语言的面向对象的概念;随着课程的进展还将讨论有关Java平台的更先进的特性。本课程授课对象应具备运用Java 编程语言或其它语言进行基本语言设计的能力,它是“非程序员Java编程”(“Java Programming for NonProgrammers”,SL-110)课程的延续。二、课程目标完成本课程的学习后,你应该能够:- 描述语言的主要特性- 编译并运行Java应用程序- 理解和使用在线超文本Java技术文件- 描述语言句法元素和构造- 理解面向对象的例子并使用该语言的面向对象特性- 理解并使用异常- 开发简单的图形用户界面- 理解事件处理- 了解Swing的主要特性- 开发Java applets - 读写文件和其它数据源 三、如何做好准备?如何做好准备?在学习本课程前,你应该已经完成了下列内容的学习:- 用C或C+创建编译程序- 用文本编辑器创建并编辑文本文件(例如 EditPlus)- 使用World Wide Web(WWW)浏览器,如MicroSoft IE第0章 Java起步1.1 编译和执行实例程序1、 下载和安装Java软件开发工具包(Java Software Development Kit,SDK)2、 按照下述规则,认真编写和编译Java程序: Java类或模块的名字必须匹配它所在文件的名字。(例如System与system是不同的) 首先应避免使用开发环境,因为这意味着除了学习Java之外,还要学习其他额外的内容。3、 一个基本的Java应用程序象其它编程语言一样,Java编程语言也被用来创建应用程序。一个共同的小应用程序范例是在屏幕上显示字串“Hello World!”。下列代码给出了这个Java应用程序。 源文件HelloWorldApp 1. / 2. / Sample HelloWorld application 3. / 4. public class HelloWorldApp 5. public static void main (String args) 6. System.out.println (Hello World!); 7. 8. 以上程序行是在你的屏幕上打印“Hello World!”所需的最少组件。 描述HelloWorldApp第1-3行程序中的1-3行是注释行1 /2 / Sample HelloWorld application3 / 第4行第4行声明类名为HelloWorldApp。类名(Classname)是在源文件中指明的,它可在与源代码相同的目录上创建一个classnameclass文件。在本例题中,编译器创建了一个称为HelloWorldApp.class的文件, 它包含了公共类HelloWorldApp的编译代码。4 public class HelloWorldApp第5行第5行是程序执行的起始点。Java技术解释器必须发现这一严格定义的点,否则将拒绝运行程序。其它程序语言(特别是C和C+)也采用main ()声明作为程序执行的起始点。此声明的不同部分将在本课程的后几部分介绍。如果在程序的命令行中给出了任何自变量,它们将被传递给main()方法中被称作args的String数组。在本例题中,未使用自变量。5 public static void main (String args) - public方法main()可被任何程序访问,包括Java技术解释器。- static 是一个告知编译器main()是用于类HelloWorldApp中的函数的关键字。为使main()在程序做其它事之前就开始运行,这一关键字是必要的。- void 表明main()不返回任何信息。这一点是重要的,因为Java编程语言要进行谨慎的类型检查,包括检查调用的方法确实返回了这些方法所声明的类型。- String args 是一个String数组的声明,它将包含位于类名之后的命令行中的自变量。 java HelloWorldApp args0args1第6行第6行声明如何使用类名、对象名和方法调用。它使用由System类的out成员引用的PrintStreamout对象的println()方法,将字串“Hello World!”打印到标准输出上。6 System.out.println (“Hello World!”);在这个例子中,println()方法被输入了一个字串自变量并将其写在了标准输出流上。第7-8行本程序的7-8行分别是方法main()和类HelloWorldApp的下括号。7 8 编译并运行HelloWorldApp 编译并运行HelloWorldApp- 编译HelloWorldApp.java javac HelloworldApp.java- 运行应用程序 java HelloWorldApp- 判定编译和运行的共同错误编译当你创建了HelloWorldApp.java源文件后,用下列程序行进行编译: c:studentjavac HelloWorldApp.java如果编译器未返回任何提示信息,新文件HelloWorldApp.class则被存储在与源文件相同的目录中,除非另有指定。运行为运行你的HelloWorldApp应用程序,需使用Java解释器和位于bin目录下的java: c:student java HelloWorldApp Hello World!注意必须设置PATH环境变量以发现java和javac,确认它包括c:jdk1.2bin1.2 Java的最大优点Java程序只需在任何一个系统上编译一次,然后就可以在任何计算机上运行。1、 关于软件的可移植性2、 J2EE、J2ME和J2SE J2EE企业版(大型平台) J2ME微型版(小型平台) J2SE标准版(中型平台)1.3 Java虚拟机Java源代码编译后生成的目标代码是字节码(bytecode),他不是任何现有系统上的二进制指令代码,而是一种中立结构的机器代码,可以快速的解释并运行在任何特定的计算机上。Java程序的执行是通过一个称为JVM(Java Virtual Machine,Java虚拟机)的程序实现的。垃圾收集- 不再需要的分配存储器应取消分配- 在其它语言中,取消分配是程序员的责任- Java编程语言提供了一种系统级线程以跟踪存储区分配- 垃圾收集- 可检查和释放不再需要的存储器- 可自动完成上述工作- 可在JVM实现周期中,产生意想不到的变化许多编程语言都允许在程序运行时动态分配存储器,分配存储器的过程由于语言句法不同而有所变化,但总是要将指针返回到存储区的起始位置 当分配存储器不再需要时(存储器指针已溢出范围),程序或运行环境应取消分配存储器。在C,C+ 或其它语言中,程序员负责取消分配存储器。有时,这是一件很困难的事情。因为你并不总是事先知道存储器应在何时被释放。当在系统中没有能够被分配的存储器时,可导致程序瘫痪,这种程序被称作具有存储器漏洞。Java编程语言解除了程序员取消分配存储器的责任,它可提供一种系统级线程以跟踪每一存储器的分配情况。在Java虚拟机的空闲周期,垃圾收集线程检查并释放那些可被释放的存储器。 垃圾收集在Java技术程序的生命周期中自动进行,它解除了取消分配存储器的要求,并避免了存储器漏洞。然而,垃圾收集可在JVM实现的周期中,产生意想不到的变化。Java的安全性Java源程序文件通过“编译”,在你的感觉中,就好象是将它们从程序员编写的文本文件格式转换成了一组字节码。字节码被存储在 .class文件中。构成Java软件程序的字节码在运行时被加载、校验并在解释器中运行。当运行applets时,字节码可被下载,然后由建于浏览器中的JVM进行解释。解释器具备两种功能,一是执行字节码,二是对底层硬件做适当调用。在一些使用Java技术的运行环境中,部分校验过的字节码被编译成原始机器码并直接运行于硬件平台。这就使Java软件代码能够以C或C+接近的速度运行,只是在加载时, 因为要编译成原始机器码而略有延迟。1.4 Java平台的组成1、 Java编程语言2、 Java虚拟机3、 伴随系统的软件库4、 运行时环境1.5 Java语言Java语言是一种面向对象的编程语言。Java语言的特征:1、 线程2、 异常处理3、 无用单元收集Java是:- 一种编程语言- 一种开发环境- 一种应用环境- 一种部署环境 Java编程语言的句法与C+的句法相似,语义则与Small Talk TM的语义相似。Java编程语言可被用来创建任何常规编程语言所能创建的应用程序。在World Wide Web(WWW)和能够运行称为applets程序的浏览器的有关介绍中,人们经常提及Java编程语言。Applets是一种贮存于WWW服务器的用Java编程语言编写的程序,它通常由浏览器下载到客户系统中,并通过浏览器运行。Applets通常较小,以减少下载时间,它由超文本标识语言(HTML)的Web页来调用。 Java applications是一种独立的程序,它不需要任何Web浏览器来执行。它们是一种典型的通用程序;可运行于任何具备Java运行环境的设备中。Java编程语言的主要目标提供一种解释环境为- 提高开发速度- 代码可移植性- 使用户能运行不止一个活动线程- 当程序运行时,能动态支持程序改变- 提供更好的安全性 设计Java编程语言的主要目标是 提供一种易于编程的语言,从而 消除其它语言在诸如指针运算和存储器管理方面影响健壮性的缺陷。 利用面向对象的概念使程序真正地成为可视化程序 为使代码尽可能清晰合理、简明流畅提供了一种方法1.6 Java库1、 API:应用编程接口2、 Java库可以分为两大类: 捆绑到JDK的核心库 可选的JDK附加标准库表1核心API及其功能Java运行时Java基础类安全Java IDLJava BeanJava RMI表2某些可选的API及其功能Java CommunicationInfobusJavaHelpJavaMailJava MediaJNDI类和包介绍1. 什么是类和包?2. Java类库中的几个重要包 java.lang java.awt java.applet java.io java.util类是描述提供某种功能的模块的一般术语。Java开发集(JDK)给出了一套标准的类(称作类库),这些类可执行大部分所需的基本行为 不仅为编程任务(例如,类可提供基本的数学函数、数组和字符串),而且为图形和网络。类库被组织成许多包,每个包都包含几个类。如下所列为一些重要的包:java.lang包含一些形成语言核心的类,如String、Math、Integer和Thread。java.awt包含了构成抽象窗口工具包(AWT)的类,这个包被用来构建和管理应用程序的图形用户界面。java.applet包含了可执行applet特殊行为的类。 包含执行与网络相关的操作的类和处理接口及统一资源定位器(URLs)的类。 java.io包含处理I/O文件的类。java.util包含为任务设置的实用程序类,如随机数发生、定义系统特性和使用与日期日历相关的函数。1.7 Java程序的三种执行环境1、 单独的程序2、 在浏览器中运行的程序3、 在WEB服务器中运行的程序1.8 一个图形界面的Java程序把下面的程序输入到一个称为myframe.java的文件中import java.awt.*; class myframe extends Frame static int x=0,y=120; / x,y position to display message static int i=0; static int horizScroll=1; / 1-we are moving msg L-to-R Font fb = new Font(TimesRoman, Font.BOLD, 36); String msg=Java, Portable, Secure, Easy; Color color=Color.blue, Color.yellow, Color.green, Color.red;public void paint(Graphics g) / gets called by runtime library g.setFont( fb ); g.setColor( colori ); g.drawString(msgi,x,y); static public void main(String s) throws Exception myframe mf = new myframe(); mf.setSize(200,200); mf.setVisible(true); int pixelsPerLine=200, totalLines=4; for (int j=0;jpixelsPerLine*totalLines; j+) Thread.sleep(25); mf.repaint(); if (horizScroll=1) / increase x to scroll horizontally if ( (x+=3) 200) continue; i = +i % 4; / move index to next msg/color x=50; y=0; horizScroll=0; / scroll vertically next time else / increase y to scroll vertically if ( (y+=3) 1 ); System.out.print( ch ); System.out.print( -1 ); 结果为:把程序改为:public class Base public static void main(String argv) char ch = n; System.out.print( -1 ); /System.out.print( ch ); System.out.print( -1 ); 结果为:大家把书翻到第33页,看例程VarInit54、 布尔型(boolean): true false举例:public class Demo public static void main(String argv) boolean b1 = true; boolean b2 = false; System.out.println( b1= + b1 ); System.out.println( b2= + b2 ); 5、 常量:final float PI = 3.14ffinal int A = 3final char CH = cfinal boolean B = true注意:常量定义的时侯必须确定它的值,而且再不能改变它的值。如 final int I = 9; I = 1; /出错public class Test final float PI = 3.1415f;int x = 0;float y = 0f;boolean z = true;char c = u;void fun() System.out.println( x= + x );System.out.println( y= + y );System.out.println( z= + z );System.out.println( c= + c );System.out.println( PI= + PI );public static void main(String args) Test s = new Test();s.fun(); 结果为:2.5 运算符,表达式和返回值运算符和变量组合起来就形成了表达式如:算术表达式:a + b / 3 5 返回数值关系表达式:a b 返回布尔值逻辑表达式:!x & y 返回布尔值混合表达式:(a+b) 13 返回布尔值举例:public class Demo public static void main(String args) int a = 2; int b = 0;boolean x = true;boolean y = true;System.out.println( a+b/3-5 = + (a+b/3-5) );System.out.println( a b = + (a b) );System.out.println( x & y= + (x & y) );System.out.println( (a+b) 13 = + (a+b) 13) ); 结果为:2.6 数学计算 数学运算符包括:1、 取负运算:int x = 5;int y = -x; 举例:public class XYZ public static void main(String args)int x = 1;int y = -(x + 1);System.out.print( x= + x + y= + y ); 结果为:x=1 y=-22、 加减乘除运算: (参见教材P36代码片段)3、 求余运算: (参见教材P36代码片段)4、 数学运算的若干规则 整数运算语法规则int x = 2;long y = 1;x = y; /error会有什么发生?byte b1 = 1;byte b2 = 2;byte b3 = b1 + b2; /errorbyte b4 = 3 + 2;byte b5 = 1 + b1; / error 浮点数运算语法规则2.0f + 4.0的结果为double型int result = 5 / 2的结果只保留整数部分5、 浮点数运算时,结果可能不够准确例如1.2+2.4的结果也许不是3.66、 除零问题:不允许整数除零,允许浮点数除零结果为:2.7 赋值运算1、 赋值运算符是等号,其右边是一个表达式,左边是变量,他把右部的值赋给左部的变量。x = 2 + 5;y = 4 + x 2、赋值运算也是表达式y = 4 + ( x = 2 + 5 ) 3、x = x + 5 :把x加5,然后再赋值给x 结果为:7、 测试赋值语句返回值的程序public class LValue public static void main(String args) int x,y;y = ( x = 2 + 5 );System.out.println();System.out.println( x = + x + , y = + y ); 结果为:x=7 y=72.8 类型转换1、表达式结果的类型和表达式在最大的数据类型一致,如:10078.6f,其结果为float类型2、 赋值语句的左值和右值的类型要兼容 左右类型一致:int x = 100 7; 右部的类型取值范围小于左部:float r = 100 7 3、 类型强制转换当右部的类型取值范围大于左部时,在表达式的前面加上类型名。float r = 100 7 8.6f 对。int r = 100 7 8.6f 错。改为int r = ( int )( 100 7 8.6f )4、 byte r = (byte)(20*20);r的值为多少?结果为:2.9 自增和自减运算1、 I:先用I值,然后对I自增12、 I:先对I自增1,然后在用I值注意: int result = 1; result+; 等价于 int result = 1; result = result + 1; 参见P42下的程序片段参见一个P43程序2.10 比较运算(关系运算)1、比较运算符(关系运算符): , = , = = , !=2、比较运算表达式的结果:true , false结果为:2.11 逻辑运算1、逻辑运算符:! |2、逻辑运算表达式的结果:true , false与(&)或(|)异或()00000010111001111110 若exp为false,表达式!exp的值为true 若exp1和exp2都为true,表达式exp1& exp2的值为true 若exp1和exp2中有一个为true,表达式exp1| exp2的值为true结果为:注意:若有3个&连接的表达式,当计算第一个给false时,那么逻辑表达式的值为false,其余的两个表达式不再计算;若有3个|连接的表达式,当计算第一个给true时,那么逻辑表达式的值为true,其余的两个表达式不再计算。public class ShortCiruitpublic static void main(String args) int n = 3;int m = 4;System.out.println();System.out.println( ( ( n m ) & ( +n ) m ) ); System.out.println( n= + n );System.out.println( - );System.out.println( ( ( n m ) ); System.out.println( n= + n );结果为:falsen=3-falsen=42.12 位运算和移位运算1、 位运算符: 3 & 5的结果为1,因为3的二进制值为0011,5的二进制值为0101,因此按位与的结果为0001public class CompareNumber public static void main(String args) int n = 3;int m = 5;System.out.println( 3 & 5 = + (n&m) ); System.out.println( 3 | 5 = + (n|m) );System.out.println( 3 5 = + (nm) ); 结果为:3 & 5 = 1; 3 | 5 = 7;3 5 = 6;2、移位运算符: :执行算术或带符号的右移 :执行算术或带符号的左移 :执行无符号的右移 1 的结果为 64 128的二进制值为10000000,则右移一位为01000000,即为64第三章 程序流程设计和控制3.1 算法、伪代码和流程图1、算法:解决问题的步骤或者过程 包括:1)需要采取的各个行动 2)这些行动的顺序2、伪代码:并非真正的Java语句,而是类似Java语句,用来描述问题的求解过程 “洗澡算法”可以用伪代码来描述:1)烧水2)宽衣3)如浴4)关水3、流程图:用图解的方式描述解决某个问题所需要的步骤和顺序计算16的流程图3.2 If语句 1)if ( 条件 )语句块;意义:如果条件成立,那么就执行语句块否则不执行。举例:int choice = 1;int num = 0;if ( choice = 1 ) num = 1;System.out.print( num );结果:num = 1下面给出一个完整的程序:运行结果为:choice= 1 num= 1if 的语法格式还可以是:if ( 条件 )语句块;参见教材P54 例程If2.java 2)if ( 条件 )语句块1;else 语句块2;意义:如果条件成立,那么就执行语句块1否则执行语句块2。举例:int choice = 0/1/2; /分析当choice的值分别为0、1、2,程序的结果是什么?int num = 0;if ( choice = 1 ) num = 1;else num = 2;System.out.print( num );一个完整的Java程序:运行结果:choice= 1 num= 1if 的语法格式还可以是:if ( 条件 ) 语句块1; else 语句块2;举例:int num = 0;if ( choice = 1 ) num = 1; choice = 0;else num = 2; choice = 3;注意:当choice = 1时,if ( choice = 1 ) num = 1;num = 2;System.out.print( num );与if ( choice = 1 ) num = 1;elsenum = 2; System.out.print( num );区别。3)if的嵌套格式 if ( 条件1 ) 语句块1; else if ( 条件2 ) 语句块2; else if ( 条件3 ) 语句块3; .一个完整的Java程序: 从中我们可以看出: if ( 条件1 ) 语句块1; else if ( 条件2 ) 语句块2;等价于 if ( 条件1 ) 语句块1; else if ( 条件2 ) 语句块2;除了在else部分嵌套一个if语句外,我们也可以在if 部分嵌套一个if语句,如:3.3 switch语句语法格式:switch ( 表达式 ) case 值1: 语句块1; case 值2: 语句块2; . case 值n: 语句块n; default: 语句块n+1;举例:int num = 0;switch ( choice ) case 1: num = 1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论