




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java语言基础教程,第一章 概述第二章 Java语言语法基础第三章 对象与类第四章 继承和多态第五章 抽象类接口与内部类第六章 数组、字符串及容器第七章 异常处理第八章 JavaIO系统第九章 多线程第十章 图形用户界面,第1章 概述,面向对象程序设计,从计算机诞生到现在,程序设计语言从最初的机器语言、汇编语言到后来面向过程的结构化高级语言,最后发展到面向对象的程序设计语言。在这个过程中,程序员逐步摆脱了机器的层面,可以在更抽象的层面上表达程序设计意图。 面向过程程序设计的中心思想是用计算机能够理解的逻辑来描述和表达待解决的问题及其具体的解决过程。数据结构、算法是面向过程问题求解的核心。面向
2、过程程序设计可以精确、完备地描述具体的求解过程,但却不足以把一个包含了多个相互关联过程的复杂系统表述清楚,而面向对象程序设计则可以胜任这项工作。,什么是面向对象程序设计,面向对象程序设计(ObjectOriented Programming,OOP)代表了一种全新的程序设计思路和观察、处理问题的方法。面向对象就是将世界看作是由一系列彼此关联、相互之间能够通信的对象所组成的,它将现实世界中实体反映到程序中,这样就可以用编程语言来表达这个世界了。 所谓对象是一种看问题的观点,是对现实世界中各种实体的一种抽象,它是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。对象具有自己的状态和行为,通过
3、对消息的反映来实现一定的功能。,OOP的基本特征,1.封装 封装就是指利用抽象数据类型将数据及对数据的操作封装在一起。在OOP中,抽象数据类型是用类(class)这种结构来代表的,类是基本的封装单元。 2.继承 继承是OOP中最突出的特征之一,它是一种基于已有类创建新类的机制。通过继承机制,一个新类可以通过对已有类进行修改和扩充来实现,新类拥有已有类的所有成员变量和成员方法,而且还可以修改现有的成员和添加新的成员。 3.多态 多态也称作动态绑定、后期绑定或运行时绑定。继承允许将对象视为它自己本身的类型或其基类型来处理,因为它允许将多种类型(从同一基类导出的)视为同一类型。而多态则允许一种类型表
4、现出与其他相似类型之间的区别。,OOP的优势,1.简单性 由于软件对象可以对现实世界中的真实对象建模,所以减少了程序的复杂度,使得程序结构变得既清晰又简单。 2.模块性 每个对象可构成一个单独的模块,该模块的内部工作方式与系统的其他部分相分离。模块性是OOP具有可重用性和可扩展性的基础。 3.可重用 可重用性是指我们在一个项目中开发的模块,不仅能够在这个项目中使用,而且可以重复的在其他项目中使用。 4.可扩展 可扩展性是对现在应用软件提出的又一个重要要求,即要求应用软件能够很方便、容易地进行扩充和修改。,了解Java,Java是Sun公司推出的新一代面向对象的编程语言。自从1996年初Java
5、 1.0版的正式发表,就迅速引起了整个计算机界的高度关注。 由于Java提供了强大的图形、图像、音频、视频、多线程和网络交互能力,它已经成为当今推广最快的最为流行的网络编程语言。Java的出现引起了软件开发的重大变革,成为推动IT业蓬勃发展的最新动力。它的出现对整个计算机软件业的发展产生了重大而深远的影响。,Java的特点,简单 面向对象 平台无关性 动态 分布式 多线程 健壮性 垃圾回收机制,Java虚拟机,Java虚拟机(Java Virtual Machine,JVM)是用软件模拟实现的虚拟计算机。它定义了指令集、寄存器集、类文件结构栈、垃圾收集堆、内存区域等组件,提供了跨平台能力的基础
6、框架。在JVM上,有一个Java解释器用来解释Java编译器编译后的程序。程序员在编写完程序后,通过Java编译器将Java源程序编译为字节代码,字节代码是一种与平台无关的文件格式,它能够被Java解释器来执行。任何一台机器只要安装了Java解释器,就可以运行这个程序,而不管字节代码是在何种平台上生成的。,Java的核心技术,1.Java Servlet Servlet是服务器端的Java小程序,Servlet全部由Java编写并且生成Html文档,它扩展了Web服务器的功能。当客户端发送请求时,服务器端便开始执行Servlet程序。 2.JDBC JDBC(Java DataBase Con
7、nectivity)为访问不同的数据库提供了统一的途径。像ODBC一样,JDBC对开发者屏蔽了一些细节问题,使得JDBC对数据库的访问也具有平台无关性。 3.JavaBean和EJB JavaBean实际上是用Java写的控件,类似于微软的ActiveX。EJB是企业级的JavaBean。它们提供了一个框架来开发和实施分布式商务逻辑,从而显著地简化了具有可伸缩性和高度复杂性的企业级应用的开发。,4.JSP JSP(Java Server Pages)是Sun公司1999年推出的一种动态网页技术标准,是一种运行于Web服务器端的脚本语言。JSP和Microsoft的ASP(Active Serv
8、er Pages)技术相似,不同的是编程语言:ASP采用VBScript,JSP采用Java。 5.XML XML(eXtensible Markup Language)是一种可以定义标记的语言,主要用于在不同的商务过程中共享数据。虽然XML的发展和Java是相互独立的,但它们的共同目标都是平台无关性。将Java与XML组和可以得到一个完美的具有平台独立性的解决方案。,Java开发环境的搭建,Java开发的核心就是JDK。JDK的全称是Java开发工具包(Java Deveplepment Kit),它是由Java的开发工具、运行环境以及Java基础类库所组成的。JDK是Java开发所必不可少
9、的一个工具。我们可以在Sun公司的网站上下载JDK的安装程序。根据应用环境的不同,JDK可以分为三个不同的版本: J2SE:Java 2 Standard Edition,用于普通标准应用程序的开发; J2EE:Java 2 Enterprise Edition,用于企业级应用程序的开发; J2ME:Java 2 Micro Edition,用于移动设备、嵌入式设备上应用程序的开发。,JDK和帮助文档的安装,JDK的安装和其它应用程序的安装方式相同,这里不再赘述。我们还要在Sun公司网站上下载JDK帮助文档的压缩包,它是我们了解JDK的最直接最有效的途径。下载完成后可以将其解压缩到JDK安装目
10、录下的docs子目录中,然后打开其中的index.html链接,就可以浏览JDK帮助文档了。,查看和设置环境变量,1.查看环境变量 右键点击“我的电脑” “属性”“高级”“环境变量”“系统变量” 2.设置环境变量 path变量的作用指定我们执行的命令程序所在的目录。要将其设置为JDK安装目录下bin子目录所在的路径。 classpath变量的作用是指定Java虚拟机要执行的类所在的目录。要将其设置为用户定义的类所在目录的路径,它的值可以有多个。,Java集成开发环境,目前Java开发领域的各种集成开发环境(Integration Developer Environment,IDE)呈现出百花齐
11、放的局面,下面我们介绍三种常用的Java集成开发环境:JCreator,JBuilder和Eclipse。,JCreator简介,优点:小巧实用 缺点:在J2EE开发、EJB、Web Services等方面有明显的不足 JDK和帮助文档的设定:安装时设定和安装后设定 JCreator的工程(Project)和工作空间(Workspace) JCreator利用工程管理相应的源文件,一个工程由多个Java源文件和其他一些文件组成,Jcreator中工程文件的扩展名为.jcp。JCreator的工作空间用来管理工程,一个工作空间中可以包含多个工程,JCreator中工作空间文件的扩展名为.jcw。
12、,JCreator编辑界面的组成 文件视图、类视图和包视图、代码视图、输出视图以及编译按钮 利用JCreator进行开发的步骤,JBuilder简介,JBuilder是Borland公司开发的一套Java集成开发环境。利用JBuilder,可以方便的编写、调试、运行Java程序,特别是图形界面的程序。,JBuilder的特点,支持Swing、JSP、servlets、EJB、Web Service、XML等最新的Java技术; 集成了多种主流服务器,可以快速开发企业应用; 能用Servlets和JSP开发动态Web 应用; 开放式集成开发环境框架,可以将第三方工具良好地集成进自身环境之中,从而
13、展IDE功能; JBuilder是100%的Java开发工具,对Windows、Linux与Solaris平台上的开发提供跨平台支持; 提供了团队开发功能,集成了多种版本控制系统; 引入了快速生成项目的UML(Unified Modeling Language,即统一建模语言)模型。,JBuilder 2006 的新特性,JBuilder 2006是专为加速企业级Java应用而设计的。它基于Eclipse平台,因此具有极强的灵活性和可扩展性。JBuilder 2006自带JDK 1.5,它集成了几乎所有的Java技术,是全球领先的Java集成开发环境。对等协作功能是JBuilder 2006中
14、最大的新特性。对等协作功能可以实现对等伙伴之间的通信。此外,还包括共享调试、共享编辑、安全管理及远程访问等。这些功能大大降低了分布式团队的协作成本和难度,提高了软件的开发效率和开发质量。,JBuilder应用浏览器,启动JBuilder 2006集成开发环境,首先呈现的用户面前的开发界面称为JBuilder应用浏览器(AppBrowser),它有主菜单、工具栏、状态栏、工程视图、结构视图、代码视图、消息视图和调试器等几部分组成,我们可以在一个应用浏览器窗口中实现大部分的开发功能,包括代码编辑、可视化设计、编译、调试等操作。,Eclipse简介,在目前所有的IDE中,Eclipse可以说是最有发
15、展前途的产品之一。Eclipse是一个开放源代码的、与NetBeans和Borland Jbuilder类似的一种基于Java的可扩展的开发平台。 我们可以进入Eclipse的官方网站,点击Downloads,下载一个Eclipse的压缩包。目前最新的版本为3.2.2,但是3.2.2版本的多国语言包还没有出来,所以我们可以下载一个稍早一点的版本3.2.1,Eclipse的安装和运行,安装Eclipse的步骤非常简单,只需将下载的压缩包直接解压到你喜欢的路径即可。然后将多国语言包解压并将解压出来的plugins文件夹和features文件夹去覆盖ecli
16、pse文件夹下的同名文件夹即可。 在启动Eclipse之前,需要首先安装好JDK,并设置好path环境变量。安装并设置好JDK后,我们再次启动Eclipse,进入欢迎界面之前首先要选择工作空间。 Eclipse的缺省欢迎界面中有五个按钮,分别是“概述”、“新增内容”、“样本”、“教程”和“工作台”。我们可以点击位于界面右方的“工作台”按钮,进入工作台界面。 Eclipse 工作台窗口由多个窗格组成,窗格集合称为透视(perspective)。默认的透视图是Java透视图,此外还有CVS资源库研究透视图、Java类型层次结构透视图、Java浏览透视图和插件开发透视图等。我们还可以建立多个工作台窗
17、口,并且能够定制和复位透视图。Java透视图中还包括多个视图,默认的有包资源管理器、层次结构、大纲、问题、Javadoc和声明,此外还有Ant、导航器、进度和错误日志等多个视图。,Eclipse的插件体系结构,Eclipse最有魅力的地方就在于它的插件体系结构。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。在Eclipse中实现的绝大部分功能是由相应的插件完成的,它附带了一个标准的插件集。Eclipse的多国语言包其实就是一个插件,甚至用来开发Java程序的JDT(Java Development Tools ),也只不过是Eclipse系统中的一个普通插件而已。 虽然
18、大多数用户只是将Eclipse当作Java IDE来使用,但Eclipse的目标不仅限于此,通过开发插件,它能扩展到任何语言的开发,甚至能成为绘图的工具Eclipse已经开始提供C语言开发的功能插件,例如CDT(C Development Tools)。另外,Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,可以利用它开发自己的功能插件,同时也可以通过开发新的插件扩展现有插件的功能。,第2章 Java语言语法基础,Java是一种跨平台的面向对象语言,利用该语言可以生成独立于平台
19、的应用程序。Java语言具有众多优点,如面向对象、可移植、与硬件无关等。 我们将介绍Java语言最基本的内容,先从Java编程基础开始,介绍Java语言的基本语法然后,介绍几种常用算法的示例,强化对Java语言的认识。,2.1、Java标识符、关键字、注释与分隔符 2.2、Java的数据类型 2.3、Java运算符和表达式 2.4、Java控制结构 2.5、小结 2.6、习题,第2章主要内容,2.1.1标识符与关键字 2.1.2注释 2.1.3分隔符,2.1、Java标识符、关键字、注释与分隔符,程序员对程序中的各个元素加以命名时使用的命名记号称为标识符(identifier)包括:类名、变量
20、名、常量名、方法名、 Java语言中,标识符是以字母,下划线(_),美元符($)开始的一个字符序列,后面可以跟字母,下划线,美元符,数字。 合法的标识符 keywords javaName Java_Name sys_ value $java Java123 非法的标识符 2mailjava#class char int,2.1.1标识符与关键字,具有专门的意义和用途,不能当作一般的标识符使用,这些标识符称为关键字。 abstract break byte boolean catch case class char continue default double do else extends
21、 false final float for finallyif import implements int interface instanceof long length native new null package private protected public final return switch synchronized short static super try true this throw throws threadsafe transient void while,2.1.1标识符与关键字,在Java中,true、false和null都是小写的。区别于C+中大写的TR
22、UE、FALSE和NULL。 所有的数据类型所占用的字节数都是固定的,并且和实现无关的,因此在Java中没有sizeof操作符。 不必死记这些关键词,当理解每个关键词的含义后,自然就记住了所有的关键词。,2.1.1标识符与关键字,举例: / 单行注释,简单的解释语句含义. /* 多行注释,用来说明更多的内容,包括算法等. */ /* Java文档注释,可以通过javadoc生 * 成类和接口的HTML格式的帮助文档. * 这种注释有其特殊的格式(参见相关文档) */,2.1.2注释,2.1.3分隔符,Java中分隔符有空格、逗号、分号及行结束符,并且规定任意两个相邻标识符、数字、保留字或两个语
23、句之间必须至少有一个分隔符,以便编译程序能识别。,2.2、Java的数据类型,2.2.1 Java基本数据类型(Primary Data Types) 2.2.2常量(Constant)和变量(Variable) 常量(Constant) 变量(Variable) 2.2.3数据类型的转换,所有基本类型所占的位数都是确定的,并不因操作系统的不同而不同。 所有基本类型的关键词都是小写的。,数据类型所占位数数的范围 char 160 65535 byte 8-2727-1 short 16-215215-1 int 32-231231-1 long 64-263263-1 f loat 32 3.
24、4e038 3.4e038 double 64 1.7e308 1.7e308,2.2.1 Java基本数据类型,布尔型数据只有两个值true和false,且它们不对应于任何整数值 布尔型变量的定义如: boolean b = true; 布尔型数据只能参与逻辑关系运算: ,2.2.1 布尔类型(boolean),字符型数据代表16位的Unicode字符 字符常量是用单引号括起来的一个字符 a B n u0030 字符型数据的取值范围为 065535 或者说 u0000uFFFF u0000为缺省值 示例 char c1; 缺省值为0 char c2 = 0; 赋初值为字符0 char c3
25、= 32; 用整数赋初值为空格,2.2.1 字符类型(char),特殊字符的常量表示法: 反斜线(Backslash) 退格(Backspace)b 回车(Carriage return)r 进纸符(Form feed)f 制表符(Form feed)t 换行(New line)n 单引号(Single quote) 八进制数( 0377 )DDD Unicode字符uHHHH,2.2.1 字符类型(char),整型常量 1. 十进制整数 如123,456,0 2. 八进制整数 以0开头,如0123表示十进制数83,011表示十进制数9。 3. 十六进制整数 以0 x或0X开头,如0 x123
26、表示十进制数291,0X12表示十进制数18。 整型变量 类型为byte、short、int或long,byte在机器中占8位,short占16位,int占32位,long占64位。整型变量的定义如: int x=123; /指定变量x为int型,且赋初值为123 byte b = 8; short s = 10; long y = 123L; long z = 123l;,2.2.1 整数类型(byte, short, int, long),64位长整数以l或L结尾: 12l, -343L, 0 xfffffffffL 1L 32 等于 4294967296L 1 32 等于 0 没有以l或
27、L结尾的数字,根据其实际值所属范围,可以被用作byte,short,或int型整数 以l或L结尾的数字,无论其实际值所属范围怎样,都被用作long型整数,2.2.1 整数类型(byte, short, int, long),示例 byte b1; 缺省值为0 byte b2 = 127; 赋初值为127 short s1 = (short)(b1 + b2); 强制类型转换 short s2 = (short)(b1 + 123) 强制类型转换 int n = b1 + b2; 不需要强制类型转换 long l1 = 2343; 不需要强制类型转换 long l2 = 4294967296L;
28、 必须用L或l结尾 long l3 = 65536*63356; 乘法运算越界,l3为0 long l4 = 65536L*63356; l4为4294967296L,2.2.1 整数类型(byte, short, int, long),实型常量 1. 十进制数形式 由数字和小数点组成,且必须有小数点,如0.123, .123, 123.,123.0 2. 科学计数法形式 如:123e3或123E3,其中e或E之前必须有数字,且e或E后面的指数必须为整数。 32位浮点数形式: 0.23f, 1.23E-4f , . 18F,2.2.1 浮点数类型,实型(float, double),实型变量
29、类型为float或double,float在机器中占32位,double占64位。实型变量的定义如: double d1 = 127.0; 赋初值为127 double d2 = 127; 赋初值为127 float f1 = 127.0f; 必须在数字后加f或F float f2 = 4.0e38f; 错误!32位浮点数不能超过 3.4028234663852886e38 float f3 = (float)d1; 必须强制类型转换,2.2.1浮点数类型,实型(float, double),public class Assign public static void main (String
30、 args) int x , y ; byte b = 3; float z = 1.234f ; double w = 1.234 ; boolean flag = true ; char c ; c = a ; x = 120 ; y = 30; . ,2.2.1使用举例,Java中 的 常 量 值 是 用 文 字 串 表 示 的,它 区 分 为 不 同 的 类 型,如 整 型 常 量 123,实 型 常 量 1.23,字 符 常 量 a ,布 尔 常 量 true、false以 及 字 符 串 常 量 This is a language.。 与 C、 C+不 同,Java中 不 能 通
31、 过 #define命 令 把 一 个 标 识 符 定 义 为 常 量,而 是 用 关 键 字 final来 定义,定义常量的一般格式为: final 类型 常量标识符 = 常数值; final int MAX_NUM = 100; final double PI = 3.1415926;,2.2.2常量和变量,程序中的基本存储单元,其定义包括变量名、变量类型和作用域几个部分,定义格式为: 类型 变量名 = 值 ; int n1 = 3, n2 = 4; Java中变量的缺省初值都是确定的: 布尔变量的初值为:false 整数变量的初值为:0 浮点数变量的初值为:0.0 引用(复合)变量的初值
32、为:null 在方法实现中定义的变量必须显式的初始化。 变量的作用域 指可访问变量的一段代码,在程序中不同的地方声明的变量具有不同的作用域:局部变量、类变量、方法参数、例外处理参数。在一定的作用域内,变量名必须唯一。,2.2.2常量和变量,自动类型转换 整型、实型、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级: 低-高 byte,short,char int long float double,操作数1类型操作数2类型转换后的类型 byte、short、charintint byte、short、char、intlonglong byte、sh
33、ort、char、int、longfloatfloat byte、short、char、int、long、floatdoubledouble,2.2.3数据类型的转换,数据类型转换必须满足如下规则: 不能对boolean类型进行类型转换。 不能把对象类型转换成不相关类的对象。 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。 转换过程中可能导致溢出或损失精度 int i = 8; byte b=(byte)i; (byte)255 = -1(byte)0 x5634 = 0 x34 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入 (int)23.7 = 23(int)-45.8
34、9f = -45,2.2.3数据类型的转换,优先级、结合性以及单/双目运算 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 其他运算符,2.3Java运算符和表达式,优先级、结合性以及单/双目运算 1). , , () 9) else if(boolean-expression2) statements2; else statementsN; ,2.4.1 选择语句:if-else,布尔表达式boolean-expression是任意一个返回布尔数据类型的表达式,而且必须是(比C或C +要严格)。 与C或C+一样,每个单一语句后面都要有分号。为了增强程序的可读性,应将if
35、或else后的语句用括起来。 else子句是任选的,不能单独作为语句使用,它必须和if语句配对使用,并且总是与离它最近的if配对。,int i1 = 123; int i2 = 456; if( i1i2 ) System.out.println(“The bigger one is: ”+i1); else System.out.println(“The bigger one is: ”+i2); ,2.4.1 选择语句:if-else,switch (expression) case value1 : statements1; break; case valueN : statements
36、N; break; default : defaultStatements; ,2.4.1 选择语句:switch,表达式expression的返回值类型必须是这几种类型之一:int、byte、char、short。 case子句中的值valueI必须是常量,而且所有case子句中的值应是不同的。 default子句是任选的。 break语句用来在执行完一个case分支后,使程序跳出switch语句,即终止switch语句的执行。 (如果某个case分支后没有break语句,程序将不再做比较而执行下一个分支。) switch语句的功能可以用if-else语句来实现,但某些情况下,使用switc
37、h语句更简炼。,2.4.1 选择语句: switch,int a = 100; int b = 20; int c; char oper = +; switch(oper) case +: c = a b; break; case -: c = a - b; break; default : c = a * b; break; ,2.4.1 选择语句:switch,循环语句 while(当型循环) initialization /初始化条件 while (termination) /循环条件 body; /循环体 iteration; /迭代,变更循环条件 当表达式termination为tr
38、ue时,执行中的语句,否则终止循环。,2.4.2循环语句:while,循环语句 do-while(直到型循环) initialization /初始化条件 do body; /循环体 iteration; /迭代,变更循环条件 while (termination) ; /循环条件 首先执行一遍中的语句,当表达式termination为true时,继续执行中的语句,否则终止循环。,2.4.2循环语句:do-while,循环语句 for(另一种当型循环) for (initialization; termination; iteration) body; /循环体 initialization
39、/初始化条件 termination /循环条件 iteration /迭代,变更循环条件,2.4.2循环语句:for,for语句执行时,首先执行初始化操作,然后判断终止条件是否满足,如果满足,则执行循环体中的语句,最后执行迭代部分。完成一次循环后,重新判断终止条件。 初始化、终止以及迭代部分都可以为空语句(但分号不能省),三者均为空的时候,相当于一个无限循环。 在初始化部分和迭代部分可以使用逗号语句,来进行多个操作。逗号语句是用逗号分隔的语句序列。 for( int i=0, int j=10; ij; i+, j-) ,2.4.2循环语句:for,int n = 1, sum = 0; w
40、hile ( n=10 ) sum = sum + n; n+; ,int n = 10, sum = 0; do sum += n; n-; while( n0);,int sum =0; for( int i=1; i=10; i+ ) sum += i; ,while循环,do-while循环,for循环,2.4.2循环语句,continue语句用来结束本次循环,跳过循环体中下面尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。对于for语句,在进行终止条件的判断前,还要先执行迭代语句。它的格式为: continue; 也可以用continue跳转到括号指明的外层循环中,这时的
41、格式为 continue outerLable;,2.4.3 跳转语句: continue,outer: for( int i=0; i10; i+ ) /外层循环 inner: for( int j=0; j10; j+ ) /内层循环 if( ij ) continue outer; /内层循环结束 /外层循环结束,for( int i= 0; i 10; i+ ) if( i = 5 ) continue; ,2.4.3跳转语句: continue,在switch语中,break语句用来终止switch语句的执行,使程序从整个switch语句后的第一条语句开始执行。 在循环语句中,bre
42、ak用于终止并跳出循环,从紧跟着循环体代码段后的语句执行。 在Java中,可以为每个代码块加一个标号,一个代码块通常是用大括号括起来的一段代码。加标号的格式为: BlockLabel: codeBlock; break语句的第二种使用情况就是跳出它所指定的块,并从紧跟该块后的第一条语句处执行。 BlockLabel: codeBlock; break BlockLabel; codeBlock; ,2.4.3跳转语句: break,a: /标记代码块a b:/标记代码块b c: /标记代码块c break b; /这段语句将不执行 /代码块c结束 /这段语句也不执行 /代码块b结束 /从这段语
43、句开始执行 /代码块a结束,2.4.3跳转语句: break,return语句从当前方法中退出,返回到调用该方法的语句处,并从紧跟该语句的下一条语句继续程序的执行。返回语句有两种格式: return expression; /当方法需要返回某种类型数据时 return; /当方法的返回类型为void时 单独一条return语句放在方法中间时,会产生编译错误,因为其后的语句将不会执行到。若真需要退出方法,可以通过将return语句嵌入某些语句(如if-else)来使程序在未执行完方法中所有语句时退出。,2.4.3跳转语句: return,2.5小结,本章介绍Java的各种语法规则:各种数据类型(
44、包括简单数据类型和复杂数据类型),运算符(一元运算符,二元运算符,三元运算符以及特殊运算符)和表达式,流程控制(条件控制,循环控制,switch多分支控制,break语句,contiune语句等)。此外,针对具体的数据类型、运算符以及控制语句,我们都给出了相应的实例以供大家更进一步的学习相关内容。,练习(1),1.下列标识符中,哪些是合法的变量名,哪些是不合法的变量名? (1)char (2)2abc (3)$_isTrue (4)i+j (5)_istrue(6)变量6 (7)String (8)3.14159 2.判断下面的程序段是否正确,若有错误,错在哪里,应该如何改正,并且测试改正后的
45、输出果。 public static void main(String args) ch = a; char ch; System.out.println(“ch=”+ch); ,练习(1),1.下列标识符中,哪些是合法的变量名,哪些是不合法的变量名? (1)char (2)2abc (3)$_isTrue (4)i+j (5)_istrue(6)变量6 (7)String (8)3.14159 2.判断下面的程序段是否正确,若有错误,错在哪里,应该如何改正,并且测试改正后的输出果。 public static void main(String args) ch = a; char ch; S
46、ystem.out.println(“ch=”+ch); ,练习(2),3.写出下面程序的运行结果。 /第2章习题3,Examplex2_3.java public class Example2_3 public static void main(String args) int x = 1,a = 0,b = 0; switch(x) case 0: b+; case 1: a+; case 2: a+,b+; System.out.prinln(“a=”+a); System.out.prinln(“b=”+b); ,4.写出下面表达式的最后运算结果,并且令a = 1,b = 2,c =3
47、,d = false。 (1)a+=b-/+c; (2)d = !(a=-b/b+ca!=c; 5.编写Java程序,计算小于一个整数的全部素数并输出。 6.编写Java程序,计算sum = 1!+2!+10!。,练习(3),练习(4),7.编写Java程序,输出从公元1990年到2007年所有闰年的年号,每输出两个年号换一行。判断年号是否为闰年的条件是: (1)若年号能被4整除,而不能被100整除,则是闰年; (2)若年号能被400整除也是闰年。,练习(5),8.利用for循环编写一个程序,将如下图案分别打印输出。 * * * * * * *,练习(6),9.编写一个方法来计算正方形的面积和
48、周长。 10.编写程序找出所有的水仙花数;水仙花数是三位数,它的各位数字的立方和等于这个三位数本身。,下课!,第三章 对象与类,3.1 类与对象 3.2 定义类 3.3 成员变量的作用域 3.4 方法重载 3.5 创建对象 3.6 构造方法 3.7 this关键字 3.8 初始化问题 3.9 static 关键字 3.10 对象的清理 3.11 访问控制修饰符 3.12 具体隐藏实现 3.13 参数传递 3.14 总结,3.1 定义类,传统程序设计语言的不足 数据和对数据的操作相分离 面向对象设计的思想 什么是对象 一切都是对象 对象与类的关系 类是对象的模版,对象是类的实例,3.2 定义类,
49、类是组成程序的基本单元,定义了自己的类就是定义了要使用的对象的类型。,例:定义一个汽车类: class Car int color; int door; int speed; void start() void brake() 声明一个汽车类的引用变量: Car myCar;,声明类的语法: 修饰符 class 类名称 /成员变量 /方法 ,Java基本数据类型,Java数据类型包括基本数据类型和引用类型,包装器类型把基本数据类型数据“包装”成对象,从 int类型创建一个Integer对象:int myInt; Integer myInteger = new Integer(myInt); 从
50、包装对象中取出基本类型值: myInt = myIValue();,Java基本数据类型,第一个Java程序,程序3.1 Rectangle.java class Rectangle int a,b; int getArea() return a*b; void locate(int x,int y) System.out.println(The position s(+x+,+y+); public static void main(String args) Rectangle r1=new Rectangle(); r1.locate(3,4); r1.a=2; r1.
51、b=3; int area=r1.getArea(); System.out.println(Area of r1 is:+area); ,第一个Java程序,main方法是程序的入口 包含main方法的类是Java应用程序的主类 一个Java源文件可以包含多个类,但同一个Java源文件只有主类可以声明为public Java源文件的命名必须与主类同名,3.3成员变量的作用域,在Java中变量的作用域是由大括号组成的程序块决定 在不嵌套的程序块中可以多次声明相同变量 在嵌套的程序块中不允许重复声明同名的变量 声明在方法中的变量为局部变量,与实例变量重名的局部变量会覆盖实例变量,其作用域为整个方
52、法体。 见程序3.2 TestScoping.java,作用域举例, int x= 1; int y=2 /xy可用 / x可用y超出作用域 ,合法的声明: int x=1; int x=2; ,不合法的嵌套声明: int x=1; int x=2; ,3.4方法重载,方法重载(Overload)是指一个类中可以定义参数列表不同但名字相同的多个方法,调用时,会根据不同的参数列表来选择对应的方法 。,重载的方法名字必须相同 重载的方法参数必须不同 当一个重载方法被调用时,Java 用参数的类型和(或)数量来表明实际调用的重载方法的版本。每个重载方法的参数的类型和(或)数量必须是不同的。虽然每个重
53、载方法可以有不同的返回 类型,但返回类型并不足以区分所使用的是哪个方法。当Java 调用一个重载方法时,参数与调用参数匹配的方法被执行。 见程序3.3 TestOverload.java 程序3.4 TestOverload1.java,被重载的方法必须有不同的参数列表,前面例子区分重载方法的参数采用了或者数量不同,或者类型不同,参数顺序不同虽然也可以重载,但是容易产生歧义 。例:,程序3.5 TestOverload2.java public class TestOverload2 void print(int a,float b) System.out.println(Print int
54、a and float b: + a + + b); void print(float a,int b) System.out.println(Print float a and int b: + a + + b); public static void main(String args) TestOverload2 obj = new TestOverload2(); obj.print(1,2); ,3.5创建对象,先声名引用变量 Rectangle r1; 然后创建对象赋值给r1: r1= new rectangle(); 声明引用变量的同时产生一个对象赋给它: Rectangle r1
55、=new Rectangle(); 引用变量r1“代表”了一个矩形对象,我们就可以使用引用变量加句点形式访问对象的成员了,在Java中基本类型变量存储在栈的内存结构中 int x=10; boolean y=true;,引用型变量内储存着对象实例的地址 声明两个矩形类引用变量r1、r2 :Rectangle r1,r2; r1、r2没有指向任何对象实例,系统默认赋初值null,产生一个新对象实例并赋值给r1: r1= new rectangle(); r2=r1;,在java中字符串类型数据是按照对象来处理的 两种方式 显式和隐式创建 Java为了加快程序的执行速度,把隐式创建的字符串对象放在
56、栈中一个特殊区域字符串池(String Pool)中,相同内容的字符串对象只保留一份 。,String str1=new String(“Hello java!”); String str2=”Hello Java!”,程序3.6 TestString.java public class TestString public static void main(String args) String str1=new String(Hello Java!); String str2=str1; String str3=Hello Java!; String str4=Hello Java!; Sy
57、stem.out.println(str1= =str2); System.out.println(str1= =str3); System.out.println(str3= =str4); 输出结果: true false true,3.6构造方法,构造方法是创建对象时调用的特殊方法 方法名必须与要创建对象的类名相同 不允许声明返回类型,即使声明为void也是不正确的 如果类中并没有定义构造方法,Java会自动地给你添加一个无参的缺省构造方法 可以自定义重载的多个构造方法,在创建对象时使实例多样化。 例:程序3.7 Student.java,3.7 this关键字,public Stude
58、nt(int age ) System.out.println(Invoke constructor with age.); age=age; ,以上构造方法中出现age=age的奇怪语句,this关键字用来解决这个问题。 this引用指向的是其本身所在方法的当前对象。以上构造方法若采用this关键字则修改为: public Student(int age ) System.out.println(Invoke constructor with age.); this.age=age; this.age=age意指把参数age的值赋给类成员变量age。,3.8初始化问题,如果程序员使用了缺省的构造方法并且没有在类中初始化成员变量,创建对象时系统会对各种类型的成员变量按表3.3自动进行初始化赋予一个默认值。,用构造方法完成初始化,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程清包施工合同
- 委托招生合作协议合同
- 幕墙分包施工合同
- 鞋子订单合同
- 供货质量保证承诺合同协议书
- 吊车汽车租赁合同
- 广告牌钢结构安装工程合同
- 茶艺师中级练习试题及答案(一)
- 营销现场作业安全管理和反窃电技能竞赛参考复习试题附答案(一)
- 银行业发展趋势与前景分析
- 团员发展纪实簿
- 浙江省七彩阳光新高考研究联盟2023-2024学年高二下学期期中联考地理试题2
- 【《城市文化与城市可持续发展探究:以S市为例》10000字(论文)】
- 包工头和建筑工人雇佣协议
- 人教版五年级英语单词
- 2025年高中数学学业水平(合格考)知识点
- 大象版科学三年级下册全册练习题(含答案)
- 新《斜视弱视学》期末考试复习题库(含答案)
- 2015年919公务员联考《申论》政法干警河北卷及参考答案
- 建筑施工企业全面预算管理方案
- 部编版二年级下册语文课文必背内容(课文、古诗、日积月累)
评论
0/150
提交评论