Java-新手学习课件_第1页
Java-新手学习课件_第2页
Java-新手学习课件_第3页
Java-新手学习课件_第4页
Java-新手学习课件_第5页
已阅读5页,还剩349页未读 继续免费阅读

下载本文档

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

文档简介

Java程序设计

第一讲Java概述(上〕计算机信息与工程学院学习建议多思考,结合面向对象的实例多动手,写程序很重要,从根本的开始,上课时带练习本多上机,上机调试程序是对所编程序的验证,根据出错信息找到缺乏一步一步学习,跟上课程进度信心和兴趣很重要掌握编程思想是严谨的学习态度的训练之一为以后的继续学习或者从事计算机方面的工作打下根底课程目标通过本课程学习,掌握Java语言的根底知识,理解和掌握面向对象程序设计的根本思想,熟练地使用Java语言进行简单程序的编写、编译以及调试工作,为以后能够独立进行程序开发打下良好的根底,为本专业以后的开展创造条件,并通过安徽省计算机水平考试二级Java。课程目标〔续〕知识方面:了解Java语言程序设计根底知识、产生背景及其主要特点理解Java面向对象编程的根本思想及其特征掌握Java语言的数据类型、常量、变量、数组、表达式,Java语言的程序控制结构以及编程的根本方法掌握异常处理、Java输入输出流和多线程编程知识了解网络编程和数据库开发知识技能方面:独立编写简单的Java应用程序独立编写简单的Java小应用程序〔JavaApplet〕应用AWT和Swing常用组件设计图形化用户界面Java异常处理机制的简单应用编写简单的多线程程序使用Java输入输出流,实现对文件的处理理论教学大纲与内容Java根底知识。Java语言的历史与现状、Java语言的特点;Java程序的根本结构;Java开发环境;标识符、常量和变量;Java根本数据类型、运算符和表达式;赋值语句。Java流程控制及递归。分支结构、循环结构;break语句、continue语句、return语句;递归。面向对象程序设计。面向对象编程的根本概念和特性;类的根本组成和使用;对象和方法的生成和使用;构造方法;成员变量;继承、封装、多态的根本概念和应用。常用类、包、接口的使用。包的创立与引用;接口的定义、实现和继承;Collection类和抽象类;String类、StringBuffer类、System类、Math类、Random类、Vector类。异常处理。异常的类型;声明异常、抛出异常、捕获异常;try和catch语句;finally语句;自定义异常。理论教学大纲与内容〔续〕Java图形用户界面设计。GUI概念;字体与颜色的操作;AWT常用组件应用;Swing常用组件应用;窗口与面板容器;布局管理器;事件处理。Applet小程序设计。Applet概念;Applet的程序框架;Applet与HTML;向Applet传递参数;Java在多媒体中的应用;Applet与Application区别。Java输入输出流。流和根本输入输出流的概念;File类;FileInputStream和FileOutputStream类;ByteArrayInputStream和ByteArrayOutputStream类;FileReader和FileWriter类;BufferedReader和BufferedWriter类、RandomAccessFile类。多线程。多线程的概念;线程的创立;线程的生命周期;线程的同步和控制。网络编程和数据库编程根底实验教学实验作用与目的上机操作是本课程必不可少的实践环节。主要目的是锻炼和培养实际操作技能和解决实际问题的能力。要求掌握Java语言程序设计、调试、运行方法,理解面向对象程序设计的根本思想,能够编写Applet程序并理解其在网页中的应用,熟练构建GUI图形用户界面;理解Java语言中异常的根本处理方法,能够进行多线程编程,能够简单运用Java语言进行文件处理;能够应用Java编写一个小型的应用系统。实验要求根据完成课内各项实验任务,认真填写实验报告,记录实验的运行过程和结果。实验前要认真复习上课讲述的内容,预习实验教程,按照实验要求准备程序。实验时,认真调试程序,思考程序运行结果。课后应完成每个实验的思考与练习题,进一步提高应用和实践能力。上机时不准做与课程无关的事情参考文献与资料:///:///,SunMicrosystems:///,sun中国技术社区:///J2SE的帮助文档吕凤翥,马皓编著,Java语言程序设计,清华大学出版社,2006年BruceEckel著,陈昊鹏饶假设楠等译,Java编程思想(第3版),机械工业出版社,2005年引例介绍两个引例调色板,YinLi1加载图片,YinLi2〔机器要安装JDK和JCreator后,才能运行)回忆数制,二进制,十进制,八进制,十六进制高级语言分类,机器语言,汇编语言,高级语言语言翻译程序,解释和编译程序Excel中函数的应用本讲课程教学目标了解Java的历史了解Java特点理解Java平台无关性的含义掌握Javaapplication的结构掌握Javaapplication编辑、编译与运行的方法学会写Javaapplication的结构学会()的用法主要内容Java的开展Java的特点Java运行环境Java应用程序举例小结作业和实验Java的开展〔一〕Java是由SunMicrosystems的JamesGosling所领导的开发小组设计的。最初的版本是1991年的橡树〔Oak〕,其目标是设计独立于平台且能够嵌入到不同的消费类电子产品的程序。随着Internet及WWW的开展,Web也需要在不同的环境不同的平台上进行程序的移植,这个变化导致了Oak的转型及Java的诞生。1995年,Sun公司对Oak进行了修改,用于开发Internet应用程序,并将其命名为Java。Java的开展〔二〕Java的主要版本:Java2被分成J2SE、J2EE和J2ME三种平台。J2SE,即Java2PlatformStandardEdition—Java2标准版,是一种开发和部署平台,提供了编写桌面应用程序所有必需的功能。J2EE,即Java2PlatformEnterpriseEdition—Java2企业版。J2EE是针对Internet环境下企业级应用推出的一种全新概念的模型,适合于开发效劳器端应用程序或者大型ERP系统等。J2ME,即Java2PlatformMicroEdition—Java2微型版。应用于各种各样的消费电子产品上,例如智能卡、、PDA、电视机顶盒等方面。Java的特点Java是简单的容易学习和使用Java是面向对象的面向对象程序设计的核心是类和对象,类是Java的根底Java是结构中立的平台无关性Java是平安的由于其多层的平安机制,系统得到了保护Java是可移植的一次开发可以在不同平台上使用Java中一个对象的组成三角形边长1边长2边长3方法1:周长方法2:面积

Java的平台无关性即是结构独立的Java源文件经过编译之后生成字节码文件.class,然后JVM解释执行该字节码文件,而不是直接生成.exe可执行文件,所以java是平台无关的。

Java应用程序举例public

class

Simple

{

public

static

void

main(String[]

args)//输出一个字符串{System.out.println("Thisisasimpleprogram!");}}注释输出结果类名或文件名Java应用程序结构(一)类,如Simple为类名。Java程序由一个或多个类组成。文件扩展名是.Java。Java程序是大小写敏感的。方法与main()方法,如System.println()是用于输出字符串的方法。注意:每个Java应用程序必须有一个main()方法作为入口。标识符与关键字,如class、public、args等。如类的命名关键字是已系统定义好的,不能用于定义其他标识符。语句,如println("Thisisasimpleprogram!")一条语句表示一个操作,语句后用”;”号结束。注释,有三种//、/**/、/***/。在程序中适当添加注释,增加程序的可读性,有助于理解程序。Java应用程序结构(二)块,使用”{”和”}”表示其开始和结束。块可以嵌套。Java应用程序开发过程一个Java程序的开发过程通常包括创立、编译、运行等几个阶段。文本编辑器编辑程序,并命名为Simple.java。命令javacSimple.javajavac.exe编译Simple.java文件,产生字节码文件Simple.class。命令javaSimplejava.exe运行字节码文件,产生结果在JCreator集成环境中编辑、编译和运行,不需要键入命令。但需要将其环境参数设置好。

Java和JCreator运行环境Java程序开发环境一般要提供编辑、编译与运行工具。Java程序的编辑可以使用任何一个编辑器,编译与运行那么通过Sun公司提供的Java开发工具箱JDK〔JavaDevelopmentToolkit〕进行。JDK是一个简单的命令行工具集,包括软件库、编译Java源程序的编译器、执行字节码的解释器以及其他的一些实用工具。JCreator是一个集编辑、编译和运行的集成环境,参考书后附录1下载地址,://JDK和JCreator安装演示,注意环境变量的设置。JCreator中演示程序Javaapplet的开发过程创立并编译applet创立调用applet的HTML文件,如右图。浏览applet在DOS命令行使用命令appletviewersimpleapplet.html用WWW浏览器在JCreator中运行,不需要键入这些命令<html><head><title>TheexampleofJavaapplet</title></head><body><appletcode=”SimpleApplet.class”width=200height=50></applet></body></html>applet程序组成import语句导入语句,此处导入系统标准类类类继承和关键字extends关键字extends表示程序中定义的类是紧随其后的类〔已经存在的类〕的扩展。类SimpleApplet是Java中类Applet的扩展,那么扩展类SimpleApplet继承了Applet类的所有功能与属性。方法paint()和类Graphicspaint〔在有的语句中称为函数〕方法是自定义的方法Javaapplet不是一个独立的程序,需要在图形方式下运行。

编写代码时的几点注意大小写的区别标点符号用半角养成良好的编程习惯用注释语句采用缩进格式小结课程相关内容Java的起源与开展Java的根本特点Java环境Javaapplication的结构和运行第2讲Java概述〔下〕及根本数据类型本讲教学目标和内容掌握Javaapplet的编辑、编译、运行方法理解Javaapplication与Javaapplet的联系与区别初步了解类和对象的概念了解面向对象程序设计的方法理解关键字和标识符掌握Java编程的根本元素:根本数据类型理解常量、变量及其应用上讲内容回忆Java特点面向对象的三个特征Java运行环境Javaapplication结构和运行过程Javaapplet结构Javaapplet程序举例

//文件名SimpleApplet.javaimport;publicclassSimpleApplet{publicvoidpaint(Graphicsg){g.drawString(“Thisisasimpleapplet!”,15,15);}}程序编译产生SimpleApplet.classpaint()和drawString()两个方法Javaapplet的开发过程创立并编译applet创立调用applet的HTML文件,如右图。浏览applet在DOS命令行使用命令appletviewersimpleapplet.html用WWW浏览器在JCreator中运行,不需要键入这些命令<html><head><title>TheexampleofJavaapplet</title></head><body><appletcode=”SimpleApplet.class”width=200height=50></applet></body></html>JCreator下运行AppletJavaApplication与AppletJavaapplication特点Javaapplication程序是独立完整的程序在命令行调用独立的解释器软件即可运行Javaapplication程序Javaapplication程序的主类必须有一个定义格式如下,publicstaticvoidmain〔Stringarsg[]〕的main()方法,这是Javaapplication程序执行的入口点。Javaapplet特点:Javaapplet程序是在WWW浏览器环境下运行,即不是完整的独立运行程序。运行Javaapplet程序的解释器不是独立的软件,而是嵌在WWW浏览器中作为浏览器软件的一局部。Javaapplet程序中不需要有main()方法,但是Javaapplet程序的主类必须是类库中已定义好的类Applet或JApplet的子类。Javaapplet程序可以直接利用浏览器或者appletviewer运行图形用户界面,而Javaapplication程序必须另外书写专门代码来创立自己的图形界面。applet程序组成import语句导入语句,此处导入系统标准类类类继承和关键字extends关键字extends表示程序中定义的类是紧随其后的类〔已经存在的类〕的扩展。类SimpleApplet是Java中类Applet的扩展,那么扩展类SimpleApplet继承了Applet类的所有功能与属性。两个方法paint()和类Graphicspaint〔在有的语句中称为函数〕方法drawString()Javaapplet不是一个独立的程序,需要在图形方式下运行。JCreator下运行Applet编写代码时的几点注意大小写的区别标点符号用半角养成良好的编程习惯用注释语句采用缩进格式面向对象程序设计(一)对象对象的属性决定了对象是什么,行为决定了对象能够做什么。在具体的程序设计中,对象的属性是一些数据域的集合,行为那么是方法的集合。也就是说,对象是数据及其处理方法的一个封装。面向对象程序设计(二)类是一个模板,对象是模板的一个产品。类决定了对象的结构,对象是类的一个具体实例,一个类可以有许多不同的对象,这些对象具有共同的属性。先定义类,再有对象面向对象的三个特性继承、封装和多态面向对象程序设计过程第一章小结介绍了Java的起源与开展,讨论了Java的根本特点,通过具体的例子分析了Javaapplication及Javaapplet的组成,并讨论了它们的关系。初步介绍了面向对象程序设计的根本方法,简单地说明了类及对象等概念。Java由于其开放源码策略及其平台无关性的特点已使其成为目前主流的开发工具。所谓的平台无关性是指编写一次程序就可以在任何平台上运行。Java是一种面向对象的程序设计语言,内置了图形程序设计、输入输出功能,支持网络和多线程编程。每一个Java程序都是一个类的定义,每一个application必须有一个main()方法,是application运行的入口。Javaapplet在Web浏览器中运行,其根本结构与application相同。为了运行applet,必须创立一个调用applet的HTML文件,该文件通过<applet>标记,指定applet字节码文件等属性。为了保证Web的平安性,需要在applet中增加适当的平安控制。面向对象程序设计语言主要使用类、对象和方法设计程序,它具有三个根本特性:封装、继承和多态。程序设计的根本过程通常由分析、设计、编码、测试与运行等5个步骤组成,比较而言,编码是最简单的工作。在学习面向对象程序设计时,分析工作相对要简单一些,重点是设计类与对象。本章是一个概括性的介绍,相关内容在本书的后续章节中详细地说明。第二章教学目标在程序中定义适宜的标识符理解3种根本数据类型并能正确地使用根据需要定义变量正确地构造表达式第二章引例三角形的三条边,计算它的周长与面积。分析:可以借鉴逐步求精的方法将一个大的问题分解为假设干个小问题,逐步逼近问题的解决方案。根据第1章讨论的知识,我们知道Java程序是由类组成的。因此可以将问题转化为“设计一个计算三角形周长与面积的类”。由于暂时还没有学习类与对象的概念,我们先假设类已经定义好了,直接考虑如何根据需要处理数据。引例〔续〕//文件名Ex2_1.javaimportjava.io.*;publicclassEx2_1{publicstaticvoidmain(String[]args){inta,b,c,p,s;floatarea;a=8;b=5;c=10;p=a+b+c;s=p/2area=(float)Math.sqrt((s-a)*(s-b)*(s-c)*s);System.out.println("Thelengthofthreesideis“+a+","+b+","+c);System.out.println("Thesidesoftriangleis:"+p);System.out.println("Theareaoftriangleis:"+area);}}引入类定义主类定义main()方法声明变量给变量a、b、c赋值计算周长和面积问题的设计思考1.第1步求精输入三角形三条边的边长;计算周长和面积;输出结果。2.第2步求精确定输入三角形三条边的边长a、b和c的方法;根据公式p=a+b+c计算周长p,令s=p/2;根据海伦公式area=((s-a)(s-b)(s-c)s)1/2,计算面积area;输出结果。标识符标识符可以由字母、数字、下划线〔_〕及美元符号〔$〕按一定的顺序组合而成,但不能以数字开头。例如,average、table12及$price等均为有效的标识符,而5_step那么为非法标识符。Java语言对标识符还有如下规定标识符的长度不限,但不宜过长。一般遵循“见名知义”原那么,即为标识符取一个能代表其意义的名称。标识符区分字母的大小写。如Student和student是两个不同的标识符。标识符不能是关键字。引例中的标识符关键字关键字是指被系统所保存使用并赋予特定意义的一些标识符,这些关键字不能被编程人员用作标识符。它们只能按照预先定义好的方式使用,不能作为其他用途。引例中的关键字。Java根本数据类型Java中的数据类型分为根本数据类型和复杂数据类型两类。根本数据类型包括数值型、字符型及布尔型。复杂数据类型包括类、接口和数组等,也称为引用类型,即通过对象的创立,获得引用类型的值。引例中相关数据类型数值型(一)Java的数值型数据又分为整数和浮点数两种类型,整数不带小数点,浮点数含有小数点。整数有byte(字节型)、short(短整型)、int(整型)及long(长整型)等4种。浮点型数据有float(单精度浮点型)和double(双精度浮点型)两种。在数值后加l或L表示该数值是long类型,Java默认所有的浮点值属于double类型的数据。如果需要处理float类型的数据必须在数值后面加一个F或者f,例如:inti=3;intj=8;floatk=5.0f;longm=26l;数值型(二)存储数据要占用一定的存储空间,不同类型的数据所占用的存储空间不同。所有数值类型依据其占用的内存空间大小进行区分。在设计程序的过程中,程序员需要选择大小适宜的变量类型,否那么有可能造成内存空间的浪费。字符型Java中的字符型数据用char表示,它的值用16个bit来存储,取值范围是0~65536。它表示的是Unicode码表所定义的国际化字符集中所收集的所有字符。Java中的字符可以比较大小,类似于ASCII码的大小比较。例如,chargrade1='A',grade2='B';Java用单引号来表示字符型数据。如'A'、'c'、'#'、'&'与'9'等等。布尔型布尔型〔boolean〕是一种表示逻辑值的简单数据类型。它的取值只能是常量true或false这两个值中的一个,在存储器中占8个bit。通常用于程序中的一些逻辑判断从而对程序的运行进行控制。例如,根据成绩的及格线60分,判断考试是否通过。intgrade;booleanpassing;if(grade>=60)passing=true;elsepassing=false;本讲小结继续第一章内容,JavaApplet由引例开始说明第二章内容标识符关键字数值型、字符型、布尔型赋值语句第3讲Java数据类型和表达式(上)上机存在的问题步骤不清楚,文件位置较乱,文件名与类名不一致,大小写常写错,注释符删除不全(绿字为注释),给出如下具体步骤:在最后一个盘符建立文件夹Java翻开JCreator建立application方法File-New-File-”FileType”-JavaClasses”-”JavaClass”-Name(文件名就是类名,不用扩展名),在Location位置选择刚刚建立的文件夹Java,存放自己的文件单击Finish后,在编辑区输入程序。上机存在的问题(续)建立applet方法创立applet类,File-New-File-”FileType”-JavaClasses”-”AppletClass”-Name在Location位置选择刚刚建立的文件夹Java,存放自己的applet文件单击Finish后,在编辑区输入程序,按F5编译运行创立HTML文件,File-New-File-”FileType”-”other”-HTMLApplet”在Location位置选择刚刚建立的文件夹Java,存放自己的HTML文件单击Finish后,在编辑区输入程序,填入applet类文件,按F5编译运行DOS提示符下运行Java方法用编辑工具,如记事本编写MyFirstJava.java;DOS提示符下键入:javacMyFirstJava.java编译源程序;在DOS提示符下键入:javaMyFirstJava运行源程序。课堂练习编写Java程序,在屏幕上显示“Howareyou?”和“I’mfine.Thankyou!”。编写Java小程序,参考上述Javaapplet例程,在屏幕中央输出两行语句“Hello,China!”和“Hello,Asia!”上节课程回忆第一章简单回忆常量、变量和赋值语句本讲主要内容和教学目标理解常量、变量的应用理解类型转换,会运用自动转换运算符和表达式概念算术运算符和算术表达式关系运算符和关系表达式逻辑运算符和逻辑表达式综合举例常量(一)常量〔constant〕,顾名思义就是在程序运行过程中其值不会被改变的量,常量也叫常数,也被称为“字面量”。在Java语言中,常量按其数据类型可分为整型常量、浮点型常量、字符型常量、字符串常量与布尔型常量等5种类型。整型常量和浮点型常量都属于数值型。字符型常量是指Unicode字符集中的所有单个字符,包括可以打印的字符和不可打印的控制字符。常量(二)字符型常量的表示形式有四种:(1)以单引号括起来的单个字符,如‘a”。(2)以单引号括起来的“\”加三位八进制数,形为'\ddd',其中d可以是0~7中的任一个数,如'\141'表示字符'a'。其中ddd的取值范围只能在八进制数的000~777之间,因而它不能表示出Unicode字符集中的全部字符。(3)以单引号括起来的"\u"加四位十六进制数,可以表示出Unicode字符集中的所有字符。(4)对于那些不能被直接包括的字符以及一些控制字符。Java中的转义字符转义序列含义转义序列含义\'单引号\f换页\"双引号\n换行\\反斜杠\r回车键\b退格\t水平制表符importjava.io.*;publicclassExer1_2{publicstaticvoidmain(Stringargs[]){chari='';System.out.println("Inputaintergerorcharacter:");try{i=(();}catch(IOExceptione){ }System.out.println("Theinputis\'"+i+"\'");}}常量(三)字符串常量就是用双引号括起来的由零到多个字符组成的字符序列。如“HelloWorld!”,“Iamaprogrammer.\n”等。字符常量的八进制、十六进制表示法和转义序列在字符串中同样可用。布尔型常量只有两个值,true和false。

常量定义格式:

final

数据类型常量名称=常量值;常量举例publicclassEx2_2{publicstaticvoidmain(Stringargs[]){finalintDay=30;finaldoublePay=45.6;finalStringStr="Itisbegin!";doubletotal;total=Day*Pay;System.out.println(Str);("*_________________________*");System.out.println("Day="+Day+"\tPay="+Pay);System.out.println("total="+total);}}定义了三个常量变量变量〔variables〕是Java程序中的一个根本存储单元,是在程序运行过程中其值可以改变的量。一个变量蕴含有三个含义:变量的名称。变量的名称简称变量名,变量名是用户自己定义的标识符,它说明了变量的存在性和唯一性;变量的属性。即变量的数据类型;变量的初值。变量的值是指存放在变量名所标记的存储单元中的数据。例如,intmath=78,english=80;赋值语句赋值语句的一般形式为:floatvalue,price;value=0.0f;//value初值为0price=0.5f;value=12*price;变量名=表达式;赋值语句执行的过程中,先计算出表达式的值,然后把该值存储到赋值运算符〔=〕左边的变量所代表的存储单元,并覆盖其原有的值。publicclassEx2_3{publicstaticvoidmain(Stringargs[]){bytea=10;shortb=020;intc=0x30;bytee=129;floatff=1.234f;doubledd=34.56d;("字节型变量的值:a="+a);("短整型变量的值:b="+b);("整型变量的值:c="+c);("长整型变量的值:d="+d);("单精度度浮点型的值:ff="+ff);("双精度浮点型的值:dd="+dd);}}

程序中定义了数值型的四种变量和浮点型的两种变量,注意这六种类型变量定义的关键字,分别是它们的数据类型。程序中定义了的变量b和c分别以八进制和十六进制表示,输出结果以十进制数表示,因此结果为b=16和c=48。

变量举例

publicclassEx2_4{publicstaticvoidmain(Stringargs[]){charc1='a';charc2='\141';charc3='\u0061';charc4='\\';booleanf1=true,f2;f2=4<3;("字符型变量的值:c1="+c1+""c2="+c2+"c3="+c3);("字符型变量的值:c4="+c4);("布尔型变量的值:f1="+f1+"f2="+f2);}}程序中定义了四个字符型变量,用关键字char定义字符型变量,其中c1、c2、c3的定义分别使用字符型的三种表示方法,c1以单引号括起来,c2以八进制表示,c3以Unicode编码表示,运行结果均是字符'a'。c4用转义字符输出'\'。布尔型变量f1定义时赋值为true,f2赋值为4<3,这是一个比较表达式,结果为false。变量举例(续〕类型转换(之一自动转换)

自动转换是在程序运行过程中不需人为干预而自动进行的从一种数据类型到另一种数据类型的转换。有两种类型:赋值转换两种数据类型必须是兼容的,并且目标数据类型的取值范围比源数据类型的取值范围大。如,byte类型可以转换为short、int、long、float、double。

表达式中的自动转换1.Java在分析表达式时会自动把表达式中的byte和short型数据转换成int类型数据。如上图所示,编译会出错。2.当表达式中有两个数据类型不同的数据进行运算时,总是先把取值范围小的数据转换成取值范围大的数据的类型然后再进行运算。如右图所示结果为double型shorta,b;a=50;b=a/2;inta;floatb;doublec;c=a+b+c;类型转换(之二强制类型转换)对于不能自动进行的类型转换,这时我们就要强制类型转换。强制类型转换的一般格式为:其中,目标数据类型是指要将被转换数据转换成的数据类型;被转换数据可以是变量、表达式等。如要把double型变量money的值转换成int型,形式为:〔int〕money。〔目标数据类型〕被转换数据//从键盘读入一个字符,并输出这个字符。importjava.io.*;publicclassEx2_6{publicstaticvoidmain(Stringargs[]){charch=‘’;System.out.println("Inputaintergerorcharacter:");try{ ch=(char)System.in.read();//从键盘中读入一个字符 }catch(IOExceptione) { }System.out.println("Theinputis\’"+ch+"\’");}}

程序定义了一个字符型变量ch,接收输入的字符。System.in.read()表示从键盘输入流中读入一个字节并返回它的值,返回值是0到255的int值,需要进行异常处理。由于返回值为int型,因此要输出这个字符,须强制转换为char型。程序中用了try-catch语句进行异常处理。

运算符与表达式一个常量或一个变量是最简单的表达式。一般的表达式是指由数据和运算符连接在一起的符合Java语法规那么的式子。如a=1、a+b-c*d、a<b等。这里的数据是常量或变量,表达式中数据的连接符+、-、*、=及<就是运算符。Java的运算符主要包括算术运算符、关系运算符、逻辑运算符等,Java表达式主要有算术表达式、关系表达式、逻辑表达式、赋值表达式等。算术运算符和算术表达式单目运算符是指只对一个操作数运算的运算符。Java中的单目运算符有++〔自增〕、--〔自减〕和-〔取反〕等3种类型。单目运算符++与--可以位于操作数的左边或右边,但在使用时是有差异的。如:a++、a--:表示先使用a,再使a增〔减〕1;++a、--a:表示先使a增〔减〕1,再使用a。双目运算符是指算术运算符的左、右两边均要有操作数。Java中的双目算术运算符有+(和运算)、-(差运算)、*(积运算)、/(除运算)及%(求余运算)。算术运算符连接的操作数为数值型。由算术运算符连接的式子称为算术表达式。publicclassEx2_7{publicstaticvoidmain(Stringargs[]){chara=97;intb,c=14,f=3;floatd=0.6f,e,g;a++;//自加运算b=c/f; c=c%f;d++; e=f*d;g=e%f;System.out.println("a="+a);System.out.println("b="+b);System.out.println("c="+c);System.out.println("d="+d);System.out.println("e="+e);System.out.println("g="+g);}}算术运算例如课堂练习设inta=3,intb1,b2,b3;doubled=1.0,e1,e2;b1=45+43%5*(23*3%2);b2=45+45*50%(--a);e1=1.5*3+(++d);e2=1.5*3+d++;b3%=3/a+3;计算相关变量值。关系运算符和关系表达式关系运算符是用来比较两个值之间的大小关系的。关系运算的结果是布尔〔boolean〕型,结果为真〔true〕或假〔false〕。Java中关系运算符有6种:==、!=、>、<、>=、<=例如,inta=5,b=8;booleanc=a>b;那么结果c=false。逻辑运算符和逻辑表达式Java中共有6个逻辑运算符。如果它们的操作数是布尔类型的数据,其结果也是布尔类型。Java逻辑运算符:!、&、^、|、&&、||。&&和||也被称为“短路逻辑运算符”,在运算过程中会产生“短路效应”,如a&&b,当a为false时不再判断b,直接判定a&&b的值为false;假设是a||b,当a为true时不再判断b,直接判定a||b的值为true。而对于&和|那么不会出现这种情况,它们是先计算出两边操作数的值,然后再进行逻辑判断。另外,当&、^和|的操作数为布尔类型时它们是逻辑运算符,进行逻辑运算,但假设操作数为整数及字符时,它们会作为位运算符进行位运算。逻辑运算符运算

运算符名称例子功能!逻辑非!aa为真时值为假,反之亦反&逻辑与a&ba、b均为真时值为真,否则为假^逻辑异或a^ba、b同值时值为假,异值时为真|逻辑或a|ba、b均为假时值为假,否则为真&&逻辑与a&&ba、b均为真时值为真,否则为假||逻辑或a||ba、b均为假时值为假,否则为真publicclassEx2_8{publicstaticvoidmain(Stringargs[]){inta=3,b=8;booleanc,d,e=false,f1,f2,g=true;c=a>b;d=c&&(e=a<b);//c为false,e值未被改变f1=g||(e=a<b);//g为true,e值未被改变f2=f1|(g=a>b);//g值被改变System.out.println("a="+a);System.out.println("b="+b);System.out.println("a>b="+c);System.out.println("c&&(e=a<b)="+d);System.out.println("e="+e);System.out.println("f2="+f2);System.out.println("g="+g);}}关系表达式和逻辑表达式举例本讲小结Java常量、变量的概念Java根本数据类型的定义和简单应用Java的赋值和类型转换Java运算符Java表达式第4讲Java运算符和表达式〔下〕及使用类和对象编程〔上〕本讲教学目标和教学内容了解其他运算符理解类和对象的根底知识掌握类和对象的创立与应用理解成员变量的定义和初始化掌握方法的创立和调用形式掌握对象的创立和引用理解垃圾回收机制上讲内容回忆变量的定义和使用运算符和表达式例2.1的回忆三元运算符

Java中,有一种特别的三元运算符构成的条件表达式。使用格式如下:其中的?和:称为三元运算符,它们必须一同出现,此运算符需要三个操作数。其中语句1和语句2可以是复合语句。意思是,当条件表达式值为true时,执行语句1,否那么执行语句2。例如,〔a>b〕?a:(c>d)?c:d其中a=5,b=8,c=1,d=9。根据右结合性,应先计算(c>d)?c:d。因为1>9为false,故取d=9为该表达式的结果。再计算〔a>b〕?a:d,结果为9。条件表达式?语句1:语句2位运算符Java中,可以使用位运算直接对整数类型和字符类型的数据的位进行操作。Java中位运算符有:~、<<、>>、>>>、&、^、|。Java中的数是以补码表示的。正数的补码就是其原码,负数的补码是其对应的正数按位取反〔1变为0,0变为1〕后再加1。例:bytea=7,b=-7,c=15,d=42,那么a:00000111b:11111001c:00001111d:00101010~c=-16:11110000a<<2=28:00011100b>>2=-2:11111110b>>>2=62:00111110c&d=10:00001111c^d=37:00001111c|d=47:00001111&00101010^00101010|00101010

000010100010010100101111赋值运算符和赋值表达式赋值运算符:=。例如,a=b就是把变量b的值赋给变量a,那么b与a的值相同,a原来的值丢弃。赋值运算符除了上面的“=”之外还有一些扩展的赋值运算符。这些扩展赋值运算符的使用不仅可以使程序表达简练,而且可以提高程序的编译速度。扩展赋值运算符就是把赋值运算符与算术运算符、逻辑运算符或位运算符中的双目运算符结合起来而形成的赋值运算符。扩展赋值运算符:+=-=*=/=%=&=^=|=<<=>>=>>>=在JCeator中设置从命令行输入参数的方法在JCreator中设置方法如下:

单击菜单:configure\options

在弹出窗口选:JDK

Tools

在select

tool框选择:run

application

再选择defalut

按edit按钮

单击parameters页面,在prompt

for

main

function

argu复选项打勾,单击ok

运行时那么弹出一个要求你输入参数的对话框!运算符优先级

在一个表达式中可能有多个数据与运算符,那么,计算这个表达式时应该先计算哪些后计算哪些呢?这就要为运算符规定它们的优先级。Java运算符的运算级别共分为15级,其中1级优先级最高,15级最低。例如,计算下面的表达式的值。3*18+4/2显然上面表达式的运算结果为56,如果我们将此改成下面的表达式:3*〔18+4〕/2那么其运算结果为33。因为括号级别最高,先计算括号里的数据,再按照算术运算的规那么,相同级别的先左后右,先乘以3再除以2。//判断2006年是否闰年。publicclassEx2_9{publicstaticvoidmain(Stringargs[]){

intyear=2006;booleant;t=year%400==0||year%4==0&&year%100!=0;System.out.println(year+"isintercalaryyear="+t);}}语句t=year%400==0||year%4==0&&year%100!=0;整体是赋值运算,右边局部是逻辑表达式,其中包含算术运算、关系运算和逻辑运算。如果采用从命令行接收数据的方法,将大大改善程序。将语句:intyear=2006;修改为下面两条语句即可。intyear;year=Integer.parseInt(args[0]);课堂练习设intx=5,y=4,z=8;booleant1,t2,t3,t4,t5;t1=〔true〕&&(x>y);t2=(x+y>z||true)&&(x<y);t3=x<z&&4>8||false;t4=x+y-z>0&&x*y<z||y>x;t5=t1&&t2||(t3&&t4)计算相关变量的值。实例1请将一个四位正整数的个、十、百、千位4个数的和求出,并分别输出这四个数及它们的和。分析:采用自顶向下、逐步求精的方法,先给出总的框架,再分析问题,然后逐步细化。1.总体步骤(1)输入一个四位数:3587;(2)分别求出个、十、百、千四个数,并将这四个数相加;(3)输出四个数的和。2.逐步细化及分析(1)定义一个正整数,保存在一个整型变量s中;(2)这一步是数据处理过程,要求完成的任务较多。根据数学运算方便,从高位开始,先分别求出四个位上的数,再进行相加。千位=s/1000,百位=(s-千位*1000)/100,十位=(s%100)/10,个位=s%10,和=千位+百位+十位+个位(3)分别输出这五个数。

实例1〔续〕//文件名Ex2_10.javaclassEx2_10{publicstaticvoidmain(String[]args){ inta,b,c,d,add; ints=3587; a=s/1000; b=(s-a*1000)/100; c=(s%100)/10; d=s%10;add=a+b+c+d; ("千位数是"+a+"\t百位数是"+b);("十位数是是"+c+"\t个位数是"+d); ("这个四位数"+s+"的各位数字的和是:"+add); }}实例2

从键盘输入一个整数,进行除法运算。分析:从键盘输入一个整数,应用命令行参数的方法可以获得。然而进行除法运算时,由于除数可能为零,会产生运行错误。需采用异常处理的方法解决。i=Integer.parseInt(args[0]);意思是将从命令行接收的第一个参数(存放在数组元素args[0]中),转换成整数送给变量i。实例2〔续〕importjava.io.*;publicclassEx2_11{publicstaticvoidmain(Stringargs[]){inti;System.out.println("Inputaintegerorcharacter:");i=Integer.parseInt(args[0]);

//从命令行接收一个数try{ intj=10/i; System.out.println("Theinputis\’"+i+"\'"+"j="+j);} catch(ArithmeticExceptione){System.out.println("theexceptionis:"+e);}}}

实例3(一)年利率、贷款年数和贷款金额,计算月归还金额和总归还金额,并将它们显示。分析:1.给出月归还金额和总归还金额的公式月归还金额=(贷款金额*月利率)/(1-1/(1+月利率)贷款年数*12)总归还金额=月归还金额*年数*122.由第1步看到,只要知道月利率即可求出结果。而年利率,因此,月利率=年利率/12。3.输入其他参数,代入第1步公式,计算出结果,最后输出结果。publicclassEx2_12{publicstaticvoidmain(Stringargs[]){ doublenln; intyears; doubledj; System.out.println("Enteryearlyrate,forexample2.25:"); nln=DefInput.readDouble(); doubleyln=nln/1200; System.out.println("Enternumberofyears,forexample8:"); years=DefInput.readInt(); System.out.println("Enterloadammount,forexample30000:"); dj=DefInput.readDouble(); doublemonthlyPay=dj*yln/(1-1/(Math.pow(1+yln,years*12))); doubletotalPay=monthlyPay*years*12; System.out.println("Themonthlypayis:"+monthlyPay); System.out.println("Thetotalpayis:"+totalPay);}}程序中的定义的变量都必须进行说明,并根据存储的数据定义了适宜的类型。例如,年份为整型,金额定义为双精度型。从键盘上读入数据用DefInput类的方法readInt()和readDouble()。但要保证DefInput类与Ex2_12.class类在一个目录下,才能这样用上面两个方法。第二章小结Java虽然是面向对象程序设计,它的核心是对象,但它也是一种程序设计语言。作为一门语言,我们必须掌握它的根本语法结构,应用根本语法规那么完成一项功能。Java语言的每条语句就是一个表达式。单个的常量、变量是特殊的表达式,一般意义上的表达式由运算符将常量、变量连接起来。任何常量、变量均有数据类型,Java中的数据类型包括简单数据类型和复杂数据类型。简单数据类型分为三类,数值型〔包括整型、浮点型float、双精度型double〕字符型char及布尔型boolean,整数类型又分为byte、short、int及long四种。每种根本数据类型的内存大小和默认值均不同。程序设计要进行各种运算,如算术运算、关系运算、逻辑运算等,Java提供了这些运算的运算符,用运算符将相关数据连接起来,完成一个任务。有时需要连接不同数据类型,那么要进行类型转换。创立类(引例)例3.1现在我们再来看第2章例题2.1,在其逐步求精的过程中,并没有很好的表达面向对象的特点,现将其作如下的修改。分析:可以用逐步求精的方法逐步逼近问题的解决方案,Java程序是由类组成的,可以将问题转化为“设计一个计算三角形周长与面积的类”。引例求精分析(1)定义一个计算三角形周长与面积的类Triangle引入标准类声明类确定三角形属性〔定义三条边〕计算周长〔定义方法side〕计算面积〔定义方法area〕(2)定义主类引用标准类声明主类及main方法定义三条边的具体值调用计算周长方法调用计算面积方法输出结果引例代码importjava.io.*;classTriangle{privateintd1,d2,d3;publicvoidsetSide(intx,inty,intz){d1=x;d2=y;d3=z;}publicintgirth(){returnd1+d2+d3;}floatarea(){intp;floats;p=(d1+d2+d3)/2;s=(float)Math.sqrt(p*(p-d1)*(p-d2)*(p-d3));returns;}}publicclassEx3_1{publicstaticvoidmain(Stringargs[]){inta,b,c,zhouch,mianji;a=8;b=6;c=10;Triangletri=newTriangle();tri.setSide(a,b,c);zhouch=tri.girth();floatmianji=tri.area();("三角形周长="+zhouch);("三角形面积="+area);}}定义类triangle的属性创立方法创立方法girth()求周长及area()求面积声明和创立类triangle对象调用上述三个方法程序分析:上述程序中,定义了名称为Triangle的类。类体中,数据d1、d2和d3是类的属性,用来定义三角形的三边,方法setSide()设置三角形的三边,方法girth()求三角形的周长,方法area()是计算三角形面积。主方法中,创立了Triangle的对象并存储到对象变量tri中,tri是Triangle类的实例化。根据tri.setSide()中获得的三角形的边长,tri.girth()调用类Triangle中的firth()方法计算周长,结果送给变量zhouch;tri.area()调用类Triangle中的area()方法计算面积,结果返回到变量area中。类的定义类是一种复杂数据类型,定义对象的结构。将属性和方法封装在一个类中,在Java类中,属性以数据来描述,方法用来实现对象的行为。类的根本格式如下:数据值表示存储在每个对象里的结果,而方法那么表示对象可以提供的功能。数据和方法统称为类的成员,数据成员也称为实例变量。class类名//类说明{//花括号中为类体局部<类的数据><类的方法>}类的定义举例class是关键字,用来定义类,类名指的是类的名称。类名的命名与标识符的命名一致。注意,类名的第一个字母通常要大写,且如果是多个单词连接而成,每个单词首字母都大写,类名最好能表达类的功能或作用。例如,定义类PeopleclassPeople{intage;Stringname;intaged(){……}}类的定义举例(续〕类People中数据域是age和name,aged()是方法。例如,定义类DeskclassDesk{intlength,width,height;floatprice;floatcubage(){……}}Desk类的属性是length、width、height以及price,方法cubage()应用变量length、width、height的数值计算体积。类声明的完整格式

public:说明该类为公共类,它可以被本类和其他任何类及成员方法所使用。Java程序中至多有一个类是public类。default:如果类名前不用修饰符,指的就是默认访问情形,只能被本类和同一个包中的其他类、接口及成员方法引用。abstract:用该修饰符修饰的类称为抽象类。它是一种没有具体对象的概念类,是它所有公共子类的公共属性集合。final:用该修饰符修饰的类不能有子类,称为最终类。[修饰符]class<类名>[extends<父类名>][implements<接口名>]成员变量的定义成员变量位于类体中,在方法定义之外所定义的变量,方法内定义的变量称为方法变量或局部变量。成员变量和方法变量可以是简单类型,也可以是数组或类等引用类型。成员变量定义的格式为:

例如,类ExampleClass中定义了成员变量d,i和j,在类体的方法method〔〕中定义的变量f,g是方法变量。classExampleClass{publicdoubled;//成员变量d,i,jprivateinti,j;method(){floatf,g;//方法变量f,g}[访问权限符][static][final]类型变量名1[,变量名2,…]成员变量访问权限符public(公共的)、protected〔受保护的〕、private〔私有的〕和default(缺省的)。解释如下:public:用该public修饰的成员变量称为公共变量,可以被程序中任何类访问。protected:用protected修饰的成员变量可以被本类、同一包中该类的子类及其他包中的该类的子类访问。private:用private修饰的成员变量只能被本类访问。用private修饰成员变量可以实现数据隐藏机制default:如果定义成员变量时,没有修饰符,它的访问属性就是默认的,表示它可以被本类及同一包中的其他类访问。成员变量访问权限符〔续〕除访问权限符外,成员变量还可以被static及final修饰。static和final是非访问修饰符。被static修饰的成员变量称为静态变量。被final修饰的叫最终变量,最终变量的值在程序的整个执行过程中是不会改变的,即Java语言中的符号常量。最终变量通常被说明为static的。变量名的命名必须符合Java标识符的定义。成员变量的初始化成员变量定义后,如果没有赋值,那么其初值是它的默认值。例如,byte、short、int和long类型的默认值为0,float的默认值为0.0f,double类型为的默认值为0.0,boolean类型的默认值为false,char类型默认值为’\u0000’,引用类型默认值为null。如果需要变量具有其他初值,那么可以在定义的同时给变量赋值。publicclassCircle{floatradius=10.0f;floatgetRadius(){returnradius;}}publicclassEx3_2{publicstaticvoidmain(String[]args){Circleci=newCircle(); //ci.radius=9.0f;System.out.println(ci.getRadius());}}

在Circle类中,定义成员变量radius的同时赋值为10.0f,即变量的初始化。如果主方法中调用了成员方法getRadius(),又没有对radius重新赋值,那么运行结果为10.0f。但是,如果将程序中的注释行释放,那么运行结果为9.0f。方法的创立方法操作类所定义的数据,以及提供对数据的访问的代码。创立方法的格式为:第一行为方法头,大括号中的是方法体。方法体可以包含一个或多个语句,每个方法执行一项任务。每个方法只有一个名称,通过使用这个名称,方法才能被调用。修饰符是可选的,与成员变量的修饰符相同,功能类似。abstract、static和final分别指所修饰的方法为抽象方法、静态方法和最终方法。[修饰符][abstract][static][final]返回值类型方法名〔[参数列表]){方法体}方法的创立〔续〕返回值类型是方法返回值的数据类型。假设方法不返回任何值,那么返回值类型为关键字void。方法的参数列表是可选的,如果没有,说明没有直接调用的参数。参数列表也称为形式参数,简称形参。如果希望方法有返回值,那么在方法的最后一条语句使用return,终止方法并返回该方法的调用者。在返回值为void的方法中,如果有return语句,那么执行到这条语句前方法会终止。例3.1中的floatarea();publicintgirth();方法的调用创立的方法指明了方法的作用,通过调用方法,方法才能发挥它的作用。调用方法的途径有两种:如果方法有返回值,对方法的调用通常就当作处理一个值,通过点.运算符实现。调用格式为:例如,类Triangle的方法setSide(),设置三角形的三边,结果为给变量d1、d2和d3赋值,语句,tri.setSide(a,b,c);意思是对象tri调用方法setSide()。直接使用方法的值,不再返回给另一个变量。程序中输出面积,方法调用可以使用下面语句:System.out.println(tri.area());对象名.方法名成员变量和方法的两种形式

类体中定义的成员变量和方法均有两种形式:用static修饰的称为类变量和类方法,也常称之为静态变量和静态方法;未用static修饰的变量和方法称为实例变量和实例方法。类的每一个对象都拥有自己的实例变量,每个对象的变量拥有不同的内存空间,所以每个对象的实例变量也是不同的。成员变量和方法的两种形式(续)实例变量和实例方法是指每个变量和方法唯一的与一个对象相关联,即在创立某个对象时,同时为这个对象创立所有实例变量的副本,关联所有的实例方法。不同的对象对应不同的实例变量副本,即不同的内存空间。静态变量不再重新分配内存,所有的对象共享静态变量,即所有对象的静态变量使用相同的内存空间。当类体被装入内存时,静态方法就被分配了内存单元,同时分配了相应的入口地址,从而静态方法可以被类创立的任何对象调用执行,也可以在未创立对象时直接通过类名调用。例题PublicclassFoo{intI;StaticStrings;Voidimethod(){}Staticvoidsmethod(){}}System.out.println(f.i);

System.out.println(f.s);

f.imethod();

f.smethod();

System.out.println(Foo.i);

System.out.println(Foo.s);

Foo.imethod();

Foo.smethod();作业问题类和对象的关系类名和文件名不一致HTML的嵌入类文件可以加.class也可以不加。类名不一致。抄袭现象严重。本讲小结三元运算符、位运算符类是Java的精华,它是整个Java语言的根底,因为类定义了对象的本质。类的定义,类包含属性和方法成员变量和成员方法成员变量访问权限符方法的创立和调用第4讲Java运算符和表达式〔下〕及使用类和对象编程〔上〕本讲教学目标和教学内容了解其他运算符理解类和对象的根底知识掌握类和对象的创立与应用理解成员变量的定义和初始化掌握方法的创立和调用形式掌握对象的创立和引用理解垃圾回收机制上讲内容回忆变量的定义和使用运算符和表达式例2.1的回忆三元运算符

Java中,有一种特别的三元运算符构成的条件表达式。使用格式如下:其中的?和:称为三元运算符,它们必须一同出现,此运算符需要三个操作数。其中语句1和语句2可以是复合语句。意思是,当条件表达式值为true时,执行语句1,否那么执行语句2。例如,〔a>b〕?a:(c>d)?c:d其中a=5,b=8,c=1,d=9。根据右结合性,应先计算(c>d)?c:d。因为1>9为false,故取d=9为该表达式的结果。再计算〔a>b〕?a:d,结果为9。条件表达式?语句1:语句2位运算符Java中,可以使用位运算直接对整数类型和字符类型的数据的位进行操作。Java中位运算符有:~、<<、>>、>>>、&、^、|。Java中的数是以补码表示的。正数的补码就是其原码,负数的补码是其对应的正数按位取反〔1变为0,0变为1〕后再加1。例:bytea=7,b=-7,c=15,d=42,那么a:00000111b:11111001

温馨提示

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

评论

0/150

提交评论