




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1章 Java语言概述 26 八月 20222 学习目的:了解程序设计语言的发展历史了解Java语言的特色和应用背景了解Java虚拟机、Java的运行环境和Java编程语言开 发环境初步掌握简单Java程序的创建、编译和运行学习重点面向对象的程序设计语言 Java虚拟机Java的运行环境Java程序的创建、编译和运行26 八月 20223第1章 Java语言概述 本章提要: 1. 程序设计语言概述 2. Java语言简介 3. Java语言概述 4. 简单Java程序的创建、编译及运行步骤 26 八月 202241.1 程序设计语言概述 1.1.1 计算机程序设计方法和语言 随着计算机硬件与
2、通讯技术的发展,计算机应用领域越来越广泛,应用规模也越来越大,程序设计不再是一、两个程序员可完成的任务,在这种情况下编写程序不再片面追求高效率,而是综合考虑程序的可靠性、可扩展性、可重用性和可理解性等因素。 程序设计方法是独立于具体程序设计语言的一门技术。由于程序设计通常离不开程序设计语言作为工具,所以容易混淆程序设计方法与程序设计语言的概念。程序设计语言的设计目的主要是为了支持某种程序设计方法 。26 八月 20225早期的程序设计 早期的高级程序设计语言有FORTROM、COBOL、BASIC等。这一时期由于追求程序的高效率,程序员过份依赖技巧与天份,不太注重程序的结构,。一个典型问题是程
3、序中的控制随意跳转,即不加限制地使用goto语句,这样的程序对阅读者来说是难以理解的,程序员也难以修改程序。结构化的程序设计 随着程序规模与复杂性的不断增长 ,20世纪60年代诞生了结构化程序设计方法。结构化程序设计方法的主要技术是自顶向下、逐步求精,采用单入口/单输出的控制结构。这一程序设计方法的代表语言是Pascal、C、Ado等。26 八月 20226 自顶向下是一种分解问题的技术,与控制结构有关。逐步求精指对结构化程序进行分解,最终使其成为三种基本控制结构的组合。结构化程序设计的结果是一个程序最终由若干过程组成,每一个过程完成一个明确的功能。面向对象程序设计 虽然结构化程序设计提高了软
4、件生产率和软件质量,但随着程序规模与复杂性的增长,程序中的数据结构变得与这些数据上的操作同样重要。在大型结构化程序中,一个数据结构可能由许多个过程来处理,修改数据结构将影响到所有相关的过程。在由几百个过程组成的成千上万行的结构化程序中,这种情况变得相当麻烦并且容易产生错误。 26 八月 20227 20世纪80年代兴起的面向对象程序设计方法在结构化程序设计的基础上提出了一种新的设计思路,最重要的改变是程序围绕被操作的数据来设计,而不是围绕操作本身。面向对象程序设计以类作为构造程序的基本单位,具有封装、数据抽象、继承、多态化等特点。较有影响的面向对象程序设计语言有Simula、C+、Java等。
5、 Java语言是在C+语言基础上发展起来的一种适合分布式计算的新型面向对象程序设计语言,也是目前推广最快的程序设计语言。Java语言将面向对象、平台无关性、稳定性与安全性、多线程等特征集于一身,为用户提供了一个良好的程序设计环境,特别适合因特网的应用开发。与当前迅速发展的因特网应用紧密结合是Java语言成功的关键所在。 26 八月 202281.1.2 计算机程序设计方法和语言面向对象与面向过程的区别 早期的编程语言如Fortran语言和C语言基本上都是面向过程的语言,主要是采用数学语言方式编程的语言,其编程的主要思路专注于算法的实现。 传统的面向过程的编程在描述问题时,由两部分组成:数据:描
6、述实体状态的数据结构;过程:操作这些状态数据的程序和步骤。 面向过程编程的一个显著特点是数据与程序的分开。数据是静止的东西,不会自行变化,必须通过过程操作来改变数据,因此,函数调用在面向过程编程中被大量使用。26 八月 20229 针对程序结构不清晰而无法维护改进的局面。面向对象编程提出了一种全新的思路,让计算机语言结构像人类思维方式一样简单和清晰。 面向对象的软件开发中将世界上的事物均看成对象,任一对象有两个特征:行为与状态。每个对象可以通过自身的行为来改变自己的状态。在面向对象的世界中,通过对象间的协作与交互来运作。由于将对象的操作封闭在对象内,外部要与对象进行交互只能通过给对象发送“消息
7、”,这个消息实际上就是调用对象的某个行为方法,消息中还包括方法的参数。26 八月 202210面向对象程序设计的特性封装性 面向对象的第一个原则是把数据和该数据的操作都封装在一个类中,比如说笔记本电脑就是一个类。笔记本电脑这个类有许多属性,有些是静态的(数据),比如:显示屏的亮度,本身的重量;有些是动态的(对数据的操作),比如:可以按下组合键“ctrl+F4”或“ctrl+F5”来调整显示器的亮度,可以卸掉它的外挂光驱来减轻它的重量。 对象是类的一个实例化结果,对象具有类所描述的所有的属性以及方法。比如不同品牌、不同样式的笔记本电脑之间的共同属性就是它们所属的类笔记本电脑类的属性。只不过类是抽
8、象的东西,而对象是具体的,对象具有它隶属类的所有属性,包括静态的和动态的。26 八月 202211 每个对象都有自己的存储空间,可容纳其他对象,或者说通过封装现有的对象,可以产生新型对象。因此,尽管对象的概念非常简单,但是经过封装以后却可以在程序中达到任意高的复杂程度。 每个对象都属于某个类。根据语法,每个对象都是某个“类”的实例。一个类的最重要的特征就是“能将什么消息发给它?”,也就是类本身有哪些操作。面向对象程序设计就是设计好相关的类,类中有静态的域,和动态的方法。继承性 继承是在类、子类、以及对象之间自动地共享属性和方法的机制。类的上层可以有父类、下层可以有子类,形成一种层次结构。一个类
9、将直接继承其父类的属性和行为26 八月 202212,而且继承还具有传递性,因此,它还将间接继承所有祖先类的属性和行为。 继承最主要的优点是重复使用性,通过继承可以无限繁衍出更多的类,这样的结果可让软件的开发加速,同时可达到程序共享的好处。通过继承可以直接继承系统提供的或他人写作的类,并加以改写,进而得到功能的不断扩充。 继承的另一个优点是在于接口的一致性。当超类繁衍出许多子类时,它的行为接口通过继承可以传给其所有子类。因此可以通过统一的行为接口去访问不同的子类对象的方法,但不同子类中行为的具体实现可能时不一样的。26 八月 202213多态性 多态是指在表示特定功能时,有多种不同的形态或实现
10、方法。常见的多态形式有两种:方法的重载:即在同一个类中某个方法有多种形态,其方法名相同,但参数不同,所以也称参数多态。方法的覆盖:在子类中重新定义一个与父类有相同形态的方法,这样,在子类中将覆盖从父类继承来的那个方法。 多态为描述客观事物提供了极大的能动性。参数多态提供了方法的多种使用形态,方便使用者的调用;而覆盖多态则使得用户可以用同样的方式对待不同的对象,不同的对象可以用它们自己的方式响应同一消息。用户可以通过父类去引用子类的对象,执行方法时则表现出每个子类对象各自的行为。 26 八月 202214抽象性 这里的抽象有两个层次的含义,一是体现在类的层次设计中,高层类是底层类的抽象表述。类层
11、次设计体现着不断抽象的过程。第二体现在类与对象之间的关系上,类是一个抽象的概念,而对象是具体的。面向对象编程的核心是设计类,但实际运行操作的是对象。类是对象的模板,对象的创建是以类为基础。同一类创建的对象具有共同的属性,但属性值不同。26 八月 2022151.2 程序设计语言概述Java语言有下面一些特点:简单性 Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,只需理解一些基本的概念,就可以用它编写出适合于各种情况的应用程序。Java略去了运算符重载、多重继承等模糊的概念 ,并且通过实现自动垃圾收集大大简化了程序设计者的内存管理工作。另外,Java也适合于在小型机上
12、运行。 1.2.1 Java语言的特色26 八月 202216面向对象 Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口型。对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐藏;而类则提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。分布性 Java是面向网络的语言。通过它提供的类库可以处理 TCP/IP协议,用户可以通过 URL地址在网络上很方便地访问其它对象。 26 八月 202217鲁棒性 Java在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。它提供自动垃圾收集来进行内存管理,防止程序员在管理内
13、存时容易产生的错误。通过集成的面向对象的例外处理机制,在编译时,Java提示出可能出现但未被处理的例外,帮助程序员正确地进行选择以防止系统的崩溃。另外,Java在编译时还可捕获类型声明中的许多常见错误,防止动态运行时不匹配问题的出现。26 八月 202218安全性 用于网络、分布环境下的Java必须要防止病毒的入侵。Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用“特洛伊”木马等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。体系结构中立 Java解释器生成与体系结构无关的字节码指令,只要安装了Java运行时系统,Java程序就可在任意
14、的处理器上运行。这些字节码指令对应于Java虚拟机中的表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台运行。 26 八月 202219可移植性 与平台无关的特性使 Java程序可以方便地被移植到网络上的不同机器。同时,Java的类库中也实现了与不同平台的接口,使这些类库可以移植。另外,Java编译器是由Java语言实现的,Java运行时系统由标准C实现,这使得Java系统本身也具有可移植性。解释执行 Java解释器直接对Java字节码进行解释执行。字节码本身携带了许多编译时信息,使得连接过程更加简单。高性能 和其它解释执行的语言如BASIC、TCL不同,Java字节码的设计
15、使之能很容易地直接转换成对应于特定CPU的机器码,从而得到较高的性能。26 八月 202220多线程 多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作。通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。动态性 Java的设计使它适合于一个不断发展的环境。在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。并且Java通过接口来支持多重继承,使之比严格的类继承具有更灵活的方式和扩展性。26 八月 2022211.2.2 Java的应用背景Java语言对软件开发技术的影响 Ja
16、va语言将对未来软件的开发产生影响 ,可从如下几个方面考虑 : 软件的需求分析:可将用户的需求进行动态的、可视化描述,以提供设计者更加直观的要求。而用户的需求是各色各样的,不受地区、行业、部门、爱好的影响,都可以用 Java语言描述清楚。 软件的开发方法:由于 Java语言的面向目标的特性,所以完全可以用面向对象的技术与方法来开发,这是符合最新的软件开发规范要求的。 26 八月 202222Java语言的动画效果远比GUI技术更加逼真,尤其是利用Internet提供的巨大动画资源空间,可以共享全世界的动态画面的资源。 软件最终产品:用Java语言开发的软件可以具有可视化、可听化、可操作化的交互
17、、动画与动作,要它停就停,要它继续就继续,而这是在电影与电视播放过程中难以做到的。 其它:使用Java语言对开发效益、开发价值都有比较明显的影响。 26 八月 202223Java语言的应用前景 Java语言有着广泛的应用前景,大体上可以从以下几个方面来考虑其应用:所有面向对象的应用开发,包括面向对象的事件描述、处理、综合等。计算过程的可视化、可操作化的软件的开发。动态画面的设计,包括图形图像的调用。交互操作的设计(选择交互、定向交互、控制流程等)。Internet的系统管理功能模块的设计,包括 Web页面的动态设计、管理和交互操作设计等。Intranet(企业内部网)上的软件开发 (直接面向
18、企业内部用户的软件)。与各类数据库连接查询的SQL语句实现 。其它应用类型的程序。26 八月 2022241.3 程序设计语言简介 用Java可写两种类型的程序:小程序(又叫Java Applet)和应用程序(Java applicatian)。 小程序是嵌入在HTML文档种的Java程序;而Java应用程序是从命令行运行的程序。对Java而言,Java小程序的大小和复杂性都没有限制。 由于WWW使小程序的发布十分便利,因此小程序更适合作为Internet上的应用程序。 应用程序(Java Application)是可以独立运行的Java程序,有Java解释器控制执行。Applet则不能独立运
19、行,而是被嵌入到Web页中,有Java兼容浏览器控制执行。 26 八月 202225 Java程序在编译后生成的不是某种CPU的指令码,而是Java语言特有的字节代码。Java字节代码运行在Java虚拟机上。 每一个操作系统的Java解释器是不同的,但实现Java虚拟机时相同的,这就是Java语言与平台无关的关键所在。Java虚拟机由五部分组成:一组指令集、一组寄存器、一个堆栈、一个无用内存单元收集器、一个方法区域,这五个部分是Java虚拟机的逻辑抽象成分,不倚赖于任何实现技术或组织,但是它们的功能必须在真实机器上以某种来实现。Java虚拟机内存区域不倚赖实现内存的位置,也不要求连续,但要求逻
20、辑的长度固定。 1.3.1 Java的虚拟机26 八月 202226 Java虚拟机支持240多个字节代码,每个字节代码执行一种基本的CPU运算。Java语言指令集相当于Java语言程序的“汇编语言”,Java语言指令集的一条指令有一个操作码、领个或多个操作数。操作数指定实施的操作,操作数是操作码所需要的参数。Java语言的操作码均为一个字节长,操作数没有限制。 Java虚拟机的寄存器用于保存机器的运行状态。Java虚拟机寄存器有四种:Java语言程序计数器;指向操作数栈顶端的指针;指向当前执行方法的执行环境的指针;指向当前执行方法局部变量的区第一个变量的指针。Java虚拟机是用堆栈来处理数据
21、传递的,它不定义或使用寄存器来传递或接受参数。目的是为了保证指令集的简洁性和实现时的高效性。26 八月 202227 Java虚拟机的堆栈有三个区域:局部变量区、执行环境区和操作数区。 Java虚拟机的堆栈是运行时刻动态分配的对象存储区域。Java语言可以进行自动的无须内存单元的收集,程序无须显示释放占有的内存空间,无须内存单元自动回收的算法倚赖于虚拟机最终实现的硬件环境。 Java虚拟机的方法区是编译后的代码区域,包含方法代码、符号表等。 26 八月 2022281.3.2 Java的运行环境的配置 Java不仅提供了一个丰富的语言和运行环境,而且还提供了一个免费的Java开发工具集(Jav
22、a Developers Kits,简称JDK,也称SDK)。编程人员和最终用户可以利用这些工具来开发Java程序或调用Java内容。 SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的Java开发工具集(SDK)。开发人员和最终用户可以利用这个工具来开发Java程序。 SDK简单易学,可以通过任何文本编辑器编写Java源文件,然后在DOS状况下利通过javac命令将Java源程序编译成字节码,通过Java命令来执行编译后的Java文件。 26 八月 202229 SDK的另一个显著特点是随着Java (J2EE、J2SE以及J2ME)版本的升级而升级。但它的缺点也是非常明
23、显的就是从事大规模企业级Java应用开发非常困难,不能进行复杂的Java软件开发,也不利于团体协同开发。建立Java开发环境JDK开发环境中常用工具介绍在Java环境中的Java工具主要有: *appletviewer 小应用程序浏览器*java 解释器*javac 编译器*javah 头文件生成器*javadocAPI 文档生成器*javap 类文件反汇编器*sdb Java语言调试器26 八月 2022301.3.1 Java的虚拟机 目前可供开发人员选择得Java语言开发工具有很多,例如:Sun公司的SDK(命令行方式的)Java语言编辑器,用Java语言开发的图形化界面的Java Wo
24、rkShop,Symmatec公司的Visual Caf,微软公司的Visual J,Borland公司的JBuilder等等。 开发人员选择开发工具可以根据以下原则:开发界面是否友好,编译效率是否高,是否有可视化的调试器,能否在浏览器中调试Java语言小程序,能否为使用者完成一些重复的劳动等。26 八月 2022311.4简单Java程序的创建、编译及运行步骤 Java是解释型的高级编程语言,所以Java程序的开发通常需要编写源程序、编译生成字节码和运行几个过程。编写源程序 编写源程序是程序开发的第一步,我们只需要简单的文字编辑器,如Edit或记事本或集成开发环境中的编辑窗口,利用这些文字编
25、辑器将源程序录入到计算机中,形成一个文件保存起来。注意必须要保证Java程序是无格式的纯文本文件。 26 八月 202232编译和运行HelloWorld应用程序 我们利用Java的编译器系统软件,一般采用Sun公司提供的javac.exe。 如果编译成功,则生成以类命名、以class为后缀的字节码文件;否则报告错误。 要运行一个编译好的Java字节码程序,还需要调用Java的解释器软件java.exe。 26 八月 2022331.5 本章小结 本章介绍了Java语言的产生和特点。给出了两种Java程序,Java应用程序和Java Applet程序的调试步骤。Java Application
26、在命令方式下进行调试,而Java Applet在浏览器的环境下运行。Java语言是一门纯面向对象的编程语言。 面向对象编程的思路认为程序都是对象的组合,因此要克服面向过程编程的思路,直接按照对象和类的思想去组织程序,面向对象所具有的封装性、继承性、多态性等特点使其具有强大的生命力。 26 八月 202234 Sun公司为全世界Java开发人员提供了一套免费的软件开发包Java2 SDK,也称为JDK,它不仅是Java的开发平台,还是Java的运行平台。Java源程序存放在.java文件中,可以通过任意一个文本编辑器编辑产生,源程序经过“javac”命令编译过后,就生成了相应的.class文件。
27、第2章 Java语言基础 26 八月 202236 学习目的: 了解Java程序的构成 了解Java的基本数据类型 了解Java的运算符与表达式 了解数组的创建、定义和使用 掌握Java流程控制语句 初步掌握java简单程序的编写 学习重点: Java的基本数据类型 、运算符与表达式 一维数组和多维数组的创建、定义和使用While、do-while和for语句的使用26 八月 202237第2章 Java语言基础 本章提要: 1. Java程序的构成 2. Java的基本数据类型 3. Java的运算符与表达式 4. 数组 5. Java流程控制语句 26 八月 2022382.1 Java程
28、序的构成 Java源程序是由类定义组成的,每个程序中可以定义若干个类,但是只有一个类是主类。在Java Application中,这个主类是指包含main方法的类;在Java Applet中,这个主类是一个系统类Applet的子类,是Java程序执行的入口点。在同一个Java源程序中定义的若干类之间没有严格的逻辑关系要求,但它们通常是在一起协同工作的,每一个类都可能需要使用其他类中定义的静态属性或方法 。 Java程序中定义类使用关键字class,每个类的定义有类头定义和类体定义两部分组成。类体部分用来定义静态属性和方法这两种类的成员,其中方法类似于其他高级语2.1.1一个Java源程序26
29、八月 202239言的函数,而静态属性则类似于变量。类头部分除了声明类名之外,还可以说明类的继承特性,当一个类被定义为是另一个已经存在的类(称为这个类的父类)的子类时,它就可以从其父类中继承一些以定义好的类成员而不必自己重复编码。 Java程序的每一条Java语句都由分号结束,其构成应该符合Java的语法规则。类和方法中的所有语句应该使用一对大括号括起。Java程序的每一个类中,除了静态属性声明语句之外,其他的执行具体操作的语句只能存在于类方法的大括号之中,而不能跳出方法孤立地直接书写在类中。 26 八月 202240 注解是指程序中用来说明程序的文字。它是为了方便程序员理解,维护该程序,并不
30、参与程序的编译执行。Java的注解有3种:单行注解符号“/”后面的单行内容不参与编译;多行注解用“/*/”包含起来的一段文本,中间可以换行;用“/*/”包含起来的,它可以用javadoc工具来生成HTML形式的开发文档。也可以在写程序的时候将某些代码注释掉以便调试程序。2.1.1 Java的程序注解26 八月 2022412.1.3 Java的的标识符与关键字 关键字是Java语言保留的字符串,表示特殊的指令,而不能用来做为程序中的标识符。标识符是用来代表程序中一个元素的名字,比如变量、函数、类等。在Java中标识符由字母、下划线、“$”和数字组成,只能以字母、“$”或者“_”开头,中间不能有
31、空格,并且不能使用关键字。但可以包含关键字作为它的名字的一部分。在Java中中文字符也是字符,所以也可以作标识符。Java的标识符区分大小写,而且没有长度的限制,可以为标识符取任意长度的名字。标识符的名字要有一定的意义,让人一看标识符就知道这个变量、函数的大概作用,即常说的编码规范。 26 八月 202242 在Java语言中,有三种基本类型,即简单类型(整型、浮点型、字符型、布尔型等)、数组类型(整型、浮点型、字符型、布尔型等)和复合类型(类、接口)。可以看出Java的数据类型与C语言相近,其不同之处在于:首先,Java的各种数据类型占用固定的内存长度,与具体的软硬件平台环境无关;其次,Ja
32、va的每种数据类型都对应一个缺省的数值,使得这种数据类型的变量的取值总是确定的。这两点分别体现了Java的跨平台特性和安全稳定性。 2.2基本数据类型26 八月 202243 在Java语言中有四种整数类型,每种类型可以使用关键字byte,short,int和long中的任意一个进行声明。所有Java编程语言中的整数类型都是带符号的数字,不存在无符号整数。整数类型的文字可使用十进制、八进制和十六进制表示。首位为“0”表示八进制的数值,首位为“0 x”表示十六进制的数值。整数类型默认为int类型,如在其后有一个字母“L”表示一个long值(也可以用小写“l”)。 2.2.1 整型 26 八月 2
33、02244 使用char类型可表示单个字符,字符是用单引号括起来的一个字符,如a,B等。Java中的字符型数据是16位无符号型数据,它表示Unicode集,而不仅仅是ASCII集。 与C语言类似,Java也提供转义字符,以反斜杠“”开头,将其后的字符转变为另外的含义 。 值得注意的一点是,用双引号引用的文字,就是我们平时所说的字符串类型不是原始类型,而是一个类string,它被用来表示字符序列。字符本身符合Unicode 标准且上述char类型的转义字符适用于string。2.2.2 字符型 26 八月 202245 2.2.3 浮点型 在Java语言中有两种浮点数类型;float和doubl
34、e。如果一个数包括小数点或指数部分,或者在数字后带有字母F或f(float)、D或d(double),则该数为浮点数。如果不明确指明浮点数的类型,浮点数默认为double。 在两种类型的浮点数中,float为32位(单精度),double为64位(双精度)。也就是说double类型的浮点数具有更高的精度。 2.2.4 逻辑型 逻辑类boolean的数据类型有两种文字值:true和false。在Java语言中boolean类型只允许使用boolean值,在整数类型和boolean类型之间无转换计算。26 八月 202246 2.2.5 变量与常量 在Java中,不同类型的数据既可以以常量的形式出
35、现,也可以以变量的形式出现。常量就是指在程序执行期间其值不能发生变化的数据,常量是固定的。 变量的值是可以变化的,它的定义包括变量名、变量类型和作用域几个部分。注意以下几点:(1)变量名必须是一个合法的标识符。变量名应具有一定的含义,以增加程序的可读性。(2)变量类型可以为前面所说的任意一种数据类型。(3)声明一个变量的同时也就指明了变量的作用域。变量的作用域指明可访问该变量的一段代码。 (4)变量的声明中多个变量间用逗号隔开。(5)在Java程序中声明变量后,需要给该变量赋值。可以用赋值语句来初始化变量任何变量都不能没有初始值,否则无法通过编译。26 八月 202247 Java语言是支持两
36、个不同数值类型之间的强制类型转换的,一个变量从一个类型强制转换到另一个类型,转化后的变量要受到新类型的制约。 类型转换语法格式: (type) variableName 类型 变量名 2.2.6数据类型的转换26 八月 202248自动类型转换 整型、浮点型、字符型数据可以混合运算。在运算中不同类型的数据先转化为同一种类型然后进行计算。自动类型转换原则是从在机器中占位(bit)少的类型向占位多的类型方向进行转换 。强制类型转换 在Java语言中强制类型转换是指从在机器中占位多的类型向占位少的类型方向进行转换,例如int类型转换成byte类型。强制类型转换需要使用类型转换语法格式,但是有些类型是
37、不允许转换成另一种类型的,例如boolean类型不能转换成int等类型。26 八月 202249 2.3运算符与表达式 Java语言的运算符(operator)指明对操作数所进行的运算,运算符按照操作数的数目来划分为单目运算符(例如、+)、双目运算符(例如+、)、三目运算符(例如?:)。基本运算符包括赋值运算符、算术运算符、关系运算符、逻辑运算符、位运算符、条件运算符等。 Java语言的表达式是由标识符、数据和运算符等的组合而构成的,它基本上和CC+语言的表达式一样。26 八月 202250 2.3.1 赋值 赋值运算符“=”把一个数据赋给另一个变量。Java语言支持简单算术运算符和赋值运算符
38、的作用在赋值运算符两侧的类型不一致的情况下,如果左侧变量的数据类型的级别高,则就把右侧的数据转换为与左侧相同的高级数据类型,然后赋值给左侧的变量。否则需要使用强制类型转换运算符。 在赋值符“=”前加上其他运算符,即构成扩展赋值运算符 。用扩展赋值运算符可表示为: var operator=expression26 八月 202251 2.3.2 算术运算 算术运算是针对数值类型操作数进行的运算。根据需要参与运算的操作数的数目要求,可将算术运算符分为双目运算符和单目运算符两种。双目算术运算符 双目运算符有:+、-、*、/、%五种。要注意“/”运算符对于与整数和浮点数的运算结果是不同的。取模运算符
39、“%”一般用于整数运算,它是用来得到余数部分。 单目算术运算符 变量的自增与自减和+与出现在该变量的前后位置无关。无论是+x还是x+均表示x要增1,且表达式的值与运算符的位置有关。26 八月 202252 2.3.3 关系运算 关系运算符也称为比较运算符,是用于比较两个数据之间的大小关系的运算符。关系运算结果是布尔值(true或false)。 2.3.4 逻辑运算 逻辑运算是针对布尔型数据进行的逻辑判断运算,运算的结果仍然是布尔型量。常用的逻辑运算符有:与(AND)、或(OR)、非(NOT)。 26 八月 202253 2.3.5 位运算 位运算是对操作数以二进制比特位为单位进行的操作运算,位
40、运算的操作数和结果都是整型量。移位运算符 移位运算符是将某一变量所包含的各比特位按指定方向移动指定的位数,移位运算符通过对第一个运算对象向左移位或向右移位来对数据执行位操作,移动的位数由右边的操作数决定,移位的方向取决于运算符本身。按位逻辑运算 位运算符&、|、分别提供了基于位的与、或、求反、异或操作。其中异或是指对应的两位数值不同时,结果为1,否则为0。 26 八月 202254 2.3.6 其他运算几点说明:条件运算符是唯一的一个三目运算符,其结构如下: 条件?表达式1:表达式2其含义是如果条件的计算结果为真,则结果为表达式1的计算结果,否则为表达式2的计算结果。instanceof 用来
41、决定第一个运算对象是否为第二个运算对象的一个实例。26 八月 202255 2.3.7 运算符的优先级 运算符的优先级决定了表达式中执行不同运算的先后顺序 ,在运算符优先级相同时,运算的进行次序取决于运算符的结合性 。 运算符的结合性分为左结合和右结合,左结合就是按照从左向右的次序计算表达式,而右结合就是按照从右到左的次序计算表达式。 26 八月 202256 2.4 数组 Java语言中,数组是一种最简单的复合数据类型。数组的主要特点如下:数组是相同数据类型的元素的集合;数组中的各元素是有先后顺序的,连续存放在内存之中;每个数组中的元素用整个数组的名字和它在数组中的位置(称为下标)表达。26
42、 八月 202257 2.4.1数组声明、创建、初始化声明数组 声明数组是定义一个数组的名称、维数和数组元素的类型。有两种定义格式 :格式1:数组元素类型 数组名 ;格式2:数组元素类型 数组名;其中数组元素的类型可以是基本类型,也可以是类或接口。创建数组 数组声明只是定义了数组名和类型,并未指定元素的个数。与变量一样,数组的每个元素需要占用存储空间,因此必须通过某种方式规定数组的大小,进而确定数组需要的空间。给已声明的数组分配空间可采用如下格式: 数组名= new 数组元素类型 数组元素个数 26 八月 202258也可以在声明数组的同时给数组规定空间 ,一旦数组创建以后,数组就有了固定长度
43、的结构,数组中各元素通过下标来区分,下标从0开始,下标最大值为数组元素的个数减1。当数组的元素类型为基本类型时,在创建存储空间时将按照默认规定给各元素赋初值。数组的初始化 给数组元素分配空间和赋初值可以采取以下方式:声明数组时给数组一个初值表,格式如下: 类型 数组名 = 初值表; 所有的数组都有一个属性length,它代表了数组元素的个数。使用数组时,要注意下标不要超出范围。如果下标超出范围,则运行时会产生“数组访问越界异常”。26 八月 202259 2.4.2 数组使用 在方法调用中,数组也可以作为方法参数来传递。但要注意数组是属于引用类型的参数传递,也就是在方法中对虚参数组的操作会影响
44、实参数组。 在Java语言应用程序的main方法中有一个字符串数组参数,该数组中存放所有的命令行参数,命令行参数是给Java语言应用程序提供数据的手段之一,它跟在命令行运行的主类名之后,各参数之间用空格分隔。使用命令行参数有利于提高应用程序的通用性。 如果命令行参数中有引号,则两个引号之间的字符系列为一个参数,空格作为参数的分隔符。如果引号不匹配,则从最后一个引号到行尾的所有字符将作为一个参数。26 八月 202260 2.4.2 多维数组 Java语言中,多维数组被看作数组的数组,多维数组的定义是通过对一维数组的嵌套来实现的。即用数组的数组来定义多维数组。多维数组中最常用的是二维数组,下面主
45、要以二维数组为例介绍多维数组的使用。声明数组 二维数组的声明与一维数组类似,如下所示:格式1:数组元素类型 数组名格式2:数组元素类型 数组名;26 八月 202261二维数组的创建和初始化 为二维数组创建存储空间有两种方式:直接为每个一维数组分配空间;从最高维开始,按照由高到低的顺序为每一维数据分配空间 Java语言中,由于把二维数组看作是数组的数组,不要求二维数组中每一维数组的大小相同。要获取数组的行数,可以通过如下方式获得:数组名.length要获取数组的列数则要先确定行,再通过如下方式获取列数: 数组名行标.length 在二维数组创建空间时,如果元素是基本类型,系统将按照默认规则赋初
46、值;如果元素类型为其他引用类型,则其所有元素为未赋初值状态(null)。但可以在数组定义时同时进行初始化。26 八月 202262 2.5 流程控制语句 流程控制语句是用来控制程序中各语句执行顺序的语句,使程序设计中非常关键和基本的部分。流程控制语句可以把单个的语句组合成有意义的、能完成一定功能的小模块。最主要的流程控制方式是结构化程序设计中规定的三种基本流程结构。 2.5.1结构化程序设计的三种基本流程 结构化程序设计原则是公认的面向过程编程应遵循的原则,它使得程序段的逻辑结构清晰、层次分明,有效地改善了局部程序段的可读性和可靠性,保证了程序质量,提高了程序开发的效率。26 八月 20226
47、3 结构化程序设计的最基本原则是:任何程序都是可以由三种基本流程结构构成,即顺序结构、分支结构和循环结构。26 八月 202264三种流程结构的主要特点是:均为单入单出结构,每种结构仅有一个入口点,结构执行完毕后,仅有一个出口点。顺序结构和选择结构为开放式结构,执行完后立即退出;而循环结构为封闭式结构,只要满足条件则反复执行结构内的语句。三种基本结构可以相互嵌套。26 八月 202265 2.5.2 顺序结构 顺序结构是三种结构中最简单的一种,即语句按照书写的顺序依次执行。从宏观上来看,整个程序就是一个顺序结构。 2.5.3 选择结构 Java中的分支结构可以由两种选择语句来实现,一个是实现双
48、选择的if语句,另一个是实现多分支的switch开关语句。26 八月 202266if语句if语句的一般形式是: if(条件表达式) 语句块; /if分支 else 语句块; /else分支块 其中条件表达式用来选择判断程序的流程走向。在程序的实际执行过程中,如果条件表达式的取值为真,则执行if分支的语句块,否则执行else分支的语句块。 在编写程序时,也可以不书写else分支,此时若条件表达式的取值为假,则绕过if分支直接执行if语句后的其他语句。有时也会用到if-else复合结构。但要注意else字句不能单独作为语句使用,它必须和if配对使用。 26 八月 202267switch语句sw
49、itch语句是多分支的开关语句,它的一般格式如下:switch(表达式) case 判断值1:语句块1;/分支1case 判断值2:语句块2;/分支2case 判断值n:语句块n;/分支ndefault:语句块n+1 /分支n+1 switch语句执行时,首先计算表达式的值,这个值必须是整型或字符型,同时应与各个case分支的判断值的类型相一致。计算出表达式的值之后,将它先与第一个case分支的判断值相比较。若相同,则程序转入第一个case分26 八月 202268支的语句块;否则,再将表达式的值与第二个分支相比较依此类推。如果表达式的值与任何一个case分支都不相同,则转而执行最后的defa
50、ult分支;在default分支不存在的情况下,则跳出整个switch语句。各个case和default出现的次序不影响执行的结果。 需要注意各个case后面的常量不能有相同的值。还有各个语句块可以有多条语句,不必使用大括号。switch语句也允许嵌套。还要注意的是,switch语句的每一个case判断,都只负责指明流程分支的入口点,而不负责指定分支的出口点,分支的出口点需要编程时用相应的跳转语句来标明。26 八月 202269 2.5.4 循环结构 循环结构是利用循环语句来实现的。循环语句是在一定条件下反复执行一段代码,被反复执行的程序段称为循环体。Java语言中提供的循环语句有三种:whi
51、le语句、do-while语句、for语句。 26 八月 202270while语句while语句的一般形式是: while (条件表达式) 循环体 while语句的执行时,首先检查表达式的值是否为真,若为真,则执行循环体,然后继续判断是否继续循环,直到表达式的值为假,直到表达式的值为假,执行后续语句。循环体通常是一个组合语句,也可以是单个语句。 while循环的特点是“先判断,后执行”。如果条件已开始就不满足,则循环执行为0次。另外,在循环体中通常通过执行某个操作来改变循环条件,如果循环条件不改变,则循环会陷入死循环中。在程序设计中要避免死循环。26 八月 202271do-while语句
52、如果需要在任何情况下都先执行一遍循环体,则可以采用do-while循环,它的格式如下: do 循环体while(条件表达式) do-while循环的特点是:“先执行,后判断”,在执行时,先执行循环体的语句,在检查表达式,若表达式的值为真,则继续执行循环体,否则,结束循环,执行后续语句。与while循环相比,循环体至少要执行一次。26 八月 202272for语句 for语句一般用于事先能够确定循环次数的场合,其格式为: for(控制变量设定初值;循环条件;迭代部分) 循环体 for语句执行时,首先执行初始化操作,然后判断终止条件是否满足,如果满足,则执行循环体中的语句,最后通过执行迭代部分给控
53、制变量增值。完成一次循环后,重新判断终止条件。 使用for循环要注意一下几点:初始化、终止条件以及迭代部分都可以为空(但分号不能少),三者均为空时,相当于一个无限循环。在初始化部分和迭代部分可以使用逗号表达式,来进行多个操作。26 八月 2022732.5.5 跳转语句循环嵌套 三种循环语句可以自身嵌套,也可以相互嵌套。嵌套将循环分为内外两层,外层循环每循环一次,内层循环要执行一圈。注意编写嵌套循环时,不能出现内外循环的结构交叉现象。break语句 在switch语句中,break语句已经得到应用。在各类循环语句中,break语句也提供了一种方便的跳出循环的方法。它有两种使用形式: 26 八月
54、 202274 break /不带标号,从break直接所在处的循环体中跳转出来 break 标号名 /带标号,跳出标号所指的代码块,执行块后的下一条语句给代码块加标号的格式如下: BlockLabel:codeBlockcontinue语句 continue语句用来结束本次循环,跳过循环体中下面尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。对于for语句,在进行终止条件的判断前,还要先执行迭代语句。它有两种形式:continue /不带标号,终止当前一轮的循环,继续下一轮循环continue 标号 /带标号,跳转到标号所指示的外层循环中26 八月 2022752.6 本章小结
55、本章是Java语言程序设计的基础,该章主要是对程序的组成元素和逻辑进行介绍。 Java语言中的数据类型有简单数据类型和复合数据类型两种,其中简单数据类型包括整数类型、浮点数类型、字符类型和布尔类型;复合数据类型包括类、接口和数组。 表达式是由运算符和操作数组成的符号序列,对一个表达式进行运算时,要按照运算符的优先顺序从高到低进行,同级的运算符则按照结合性决定运算次序。26 八月 202276 数组是具有相同类型元素的有序集合,数组的创建分为定义、分配内存以及初始化等阶段。通过下标变量访问数组中的元素。经常用循环语句来控制对数组元素的访问,但要注意访问不要越界 。 条件语句、循环语句和跳转语句是
56、Java语言中常用的控制语句。对这些语句的正确理解和运用非常重要。程序设计的关键是要将算法思路转化为可实现的语句。第三章类和对象 26 八月 202278 学习目的: 了解面向对象基本概念 掌握类的创建和使用 掌握对象的创建与使用了解参数的传递 了解匿名对象 学习重点:掌握类的创建和使用 掌握对象的创建与使用26 八月 202279第三章 类和对象 本章提要: 面向对象基本概念类的创建和使用对象的创建与使用参数的传递匿名对象 26 八月 2022803.1 面向对象的程序设计方法概述 3.1.1 抽象 抽象是人们解决问题的主要手段,也是面向对象程序设计解决实际问题法宝之一。所谓抽象就是指从众多
57、的事物面向对象程序设计标志着程序设计思想发展到一个新的高度,它用一种更符合人们认识客观世界的思维方式进行程序设计:相对于面向过程的程序设计以研究问题的解决过程为主体,面向对象编程是以对象为主体,使编程富于创造性,提高了程序的可重用性,简化了编程过程,同时也使程序更易于维护。26 八月 202281中舍弃个别的、非本质的属性,抽出共同的、本质的属性的过程。是面向对象程序设计的核心概念。用面向对象编程解决现实世界的问题时,首先是利用抽象技术将现实世界中的各种实体,归纳总结出共性的东西形成一类实体的基本特征。这些特征包括属性和行为,这些本质属性和方法的有机组合,就是面向对象方法中的类。3.1.2 封
58、装 封装性是面向对象编程的基本特性之一,它通过封装隐蔽了对象的内部实现细节。对象的封装有两个方面:26 八月 202282一方面表示对象的属性和方法是不可分割的整体。对象的属性和方法封装为一体具有重要的意义,因为它反映了对象同时具有了客观事物的静态特征和动态行为相统一的客观规律,使软件对客观事物的描述更接近人类表述;而过去的面向过程的编程语言都是将功能和数据相分离,使软件对客观事物的描述存在偏差,很难自然地用语言表达客观事物的对应关系。另一方面,封装还表示对象内部细节的隐蔽性。对内部细节的隐蔽性反映了事物客观的相对独立性,这样既可以防止外界的干扰,又可以降低复杂性。在java语言中,对象、类和
59、包逐层封装,为管理大量的对象和类提供了方便,也增强了语言的安全性。隐藏了内部细节也使得java的使用者和设计者分离,使用者只需用接口去满足软件重用的策略,可以降低软件开发成本,缩短开发周期,是软件的开发和维护得到根本性的改善。26 八月 202283访问对象,而不必知道对象的内部细节。从软件工程的角度讲,封装也符合模块化设计原则,满足软件重用的策略,可以降低软件开发成本,缩短开发周期,是软件的开发和维护得到根本性的改善。 3.1.3 继承面向对象程序设计的另一重要特点是类的继承性。继承是让一个类成为另一个类的子类,子类继承父类的所有特性,并可以扩充自己的特性。这种关系为共享数据和操作提供了一种
60、良好的机制。继承提高了软件的重用性、可用性和界面的一致性。根据继承的特性,可以将继承分为如下两种主要形式:26 八月 202284(1)直接继承和间接继承。如果类c的定义直接继承于类b,则称c直接继承于b,且b是c的直接父类;如果又有b类又直接继承于a类,则可称c类间接继承于a类。间接继承体现了继承关系的可传递性。(2)单继承和多继承。如果一个类只有一个直接父类,则称该关系为单继承;如果一个类有多于一个以上的父类,则称该继承关系为多继承。Java语言只支持单继承,而不支持多继承。 3.1.4 多态多态性也是面向对象编程的一个特性,它反映了现实世界中谋类事物中的每个实体,都具有一些不同于其它实体
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 投资理财服务合同范文
- 常年法律顾问合同细则
- 购房合同定金简易协议
- 江西丰城劳动合同范本
- 智能通风电器具产业发展挑战与对策考核试卷
- 机织服装生产中的生产流程标准化考核试卷
- 塑料加工中的耐冲击与抗跌落技术考核试卷
- 期货市场投资者行为分析服务考核试卷
- 抽纱刺绣工艺的数字化营销策略考核试卷
- 基于云计算的智能制造服务考核试卷
- 市政工程标准施工组织设计方案
- 马尔文粒度仪MS2000原理及应用
- 护理不良事件管理、上报制度及流程
- GB 9706.224-2021医用电气设备第2-24部分:输液泵和输液控制器的基本安全和基本性能专用要求
- 钢栈桥施工与方案
- 《艺术学概论》课件-第一章
- 子宫内膜异位症诊疗指南完整课件
- 动物寄生虫病学课件
- 人教版小学三年级下册数学应用题专项练习题40614
- 短视频抖音运营培训课程
- 生产安全事故应急预案管理办法知识点课件
评论
0/150
提交评论