关于我们
![]() ![]() |
Java程序设计
本书主要介绍了Java开发环境和开发工具、Java语法基础、程序流程控制、数组与字符串、类与对象、类的继承与多态、抽象类与接口、异常处理、Java SE API常用类、泛型与集合、图形用户界面GUI、JDBC数据库编程、多线程和网络编程。
本书以Java SE7.0为基础,注重可读性和实用性,全面系统地介绍Java SE的核心技术,通过条理清晰的知识归纳和通俗易懂的实例讲解,可以使学习者快速掌握Java SE的核心技术,从而使用Java解决一般问题。本书配套丰富,培训、教学、自学均可。
前言
Java是一种完全面向对象的程序设计语言,具有卓越的通用性、高效性、平台移植性和安全性,得到广泛的应用。在全球云计算和移动互联网产业高速发展的环境下,Java具备显著的优势和广阔前景。本书以Java SE 7.0为基础,注重可读性和实用性,全面、系统地介绍Java SE的核心技术。通过条理清晰的知识归纳和通俗易懂的实例讲解,帮助学生快速掌握Java SE的核心技术,并能够使用Java解决一般问题。
全书共分15章。第1章主要介绍Java语言的特点、运行机制和应用领域,以及Java开发环境与开发工具。第2~4章介绍Java基本语法: 标识符与关键字,变量,运算符与表达式,顺序、选择、循环三种流程控制,Java方法,数组与字符串。第5章主要介绍类和对象的关系、类的定义、构造方法、成员变量和局部变量、对象的创建等知识点。第6章主要介绍类的继承与多态。第7章主要介绍抽象类与接口的概念,以及包的使用。第8章探讨如何解决Java的异常处理问题。第9章主要介绍Java标准程序库中各种处理I/O操作的类的用途及使用方法。第10章介绍Java SE API文档中一些常用类和接口的用法。第11章介绍泛型,讲解常见的集合框架用法。第12章主要讲述Java的图形界面技术,包括窗口、组件和菜单设计、布局管理器等。第13章介绍Access数据库、JDBC的概念、Java中数据库的常用连接方式、数据库访问,以及数据库的查询、添加、更新和删除操作。通过简单的数据库操作实例,介绍Java中使用JDBC访问数据库的编程基础。第14章主要介绍线程的概念、创建、常用方法及同步等知识。第15章介绍网络编程中的URL类、InetAddress类、TCP程序设计、UDP程序设计,并通过案例Echo程序加强对上述知识的应用。
本书的例题全部在JDK 1.7环境下编译通过。
本书由广东理工学院多年从事计算机教学的一线教师编写,由广东理工学院李代平教授主审了教材的内容。其中,第1章和第5~7章由赖小平编写;第2~4章由梁玉英编写;第8章和第9章由向志华编写;第10章和第11章由郭锐编写;第12章和第13章由陈雪娟编写;第14章和第15章由彭雄新编写。
由于编者水平有限,书中难免有不足之处,恳请广大师生、读者批评、指正。
编者
2016年11月
作者:赖小平、梁玉英、向志华、陈雪娟、郭锐、彭
目录
第1章Java语言概述001
1.1认识Java001
1.1.1什么是Java001
1.1.2Java语言的特点002
1.1.3Java程序的运行机制004
1.1.4Java语言的应用领域005
1.2Java开发环境与开发工具006
1.2.1Java开发环境006
1.2.2Java开发工具010
1.2.3Java程序开发过程013
1.3Java程序举例015
案例1简单控制台应用程序015
案例2简单GUI应用程序017
案例3Java Applet小应用程序017
本章小结019
习题019
第2章Java语法基础020
2.1标识符与关键字020
2.1.1标识符020
2.1.2关键字020
2.1.3Java命名规范022
2.2变量024
2.2.1变量的概念024
2.2.2变量的声明与初始化024
2.2.3变量的作用域026
2.2.4变量的分类028
2.3数据类型028
2.3.1数据类型的分类029
2.3.2基本数据类型029
2.3.3基本数据类型的转换030Java程序设计
2.4运算符与表达式031
2.4.1表达式的概念031
2.4.2运算符的分类031
2.4.3运算符的优先级与结合性038
2.5Java程序举例039
案例简易计算器039
本章小结039
习题040
第3章Java程序流程控制042
3.1程序基本控制结构042
3.2选择结构042
3.2.1if选择结构042
3.2.2ifelse选择结构043
3.2.3多重if选择结构044
3.2.4嵌套if选择结构045
3.2.5switch选择结构046
3.3循环结构047
3.3.1while语句048
3.3.2dowhile语句049
3.3.3for语句050
3.3.4break语句和continue语句052
3.3.5多重循环054
3.4Java方法055
3.4.1方法的定义055
3.4.2方法的重载058
3.4.3方法的参数059
3.5应用实例060
案例猜数游戏060
本章小结061
习题062
第4章数组与字符串066
4.1数组的概念066
4.2一维数组067
4.2.1一维数组的声明067
4.2.2一维数组的初始化068
4.2.3一维数组的引用069
4.3二维数组070
4.3.1二维数组的声明070
4.3.2二维数组的初始化071
4.3.3二维数组的引用072
4.4数组操作常用方法073
4.4.1数组遍历073
4.4.2数组复制074
4.4.3数组排序076
4.5字符串077
4.5.1String类077
4.5.2StringBuffer类082
4.5.3StringBuilder类085
4.5.4String类、StringBuffer类和StringBuilder类的使用和区别085
4.6正则表达式087
4.7应用实例091
案例超级大乐透彩票开奖091
本章小结093
习题093
第5章类与对象097
5.1面向对象程序设计概述097
5.1.1面向过程与面向对象097
5.1.2面向对象程序设计的特征098
5.2类的定义与对象的创建100
5.2.1类与对象的关系100
5.2.2类的定义101
5.2.3构造方法104
5.2.4成员变量与局部变量105
5.2.5对象的创建106
5.2.6访问控制修饰符109
5.2.7关键字this110
5.2.8关键字static112
5.3应用实例113
案例1人类的定义与使用113
案例2饮料自动售货机116
本章小结120
习题120
第6章类的继承与多态124
6.1类的继承124
6.1.1继承与派生124
6.1.2继承的说明126
6.1.3super关键字128
6.1.4final关键字130
6.2多态性131
6.2.1多态性的概念131
6.2.2对象变量多态性132
6.2.3方法多态性135
6.3应用实例136
案例1图形类的派生136
案例2动物多态性140
本章小结143
习题143
第7章抽象类与接口145
7.1抽象类145
7.1.1抽象类与抽象方法145
7.1.2抽象类与*终类147
7.2接口148
7.2.1接口的概念148
7.2.2接口的定义与实现149
7.2.3接口的多态153
7.2.4接口的继承154
7.3包155
7.3.1Java系统API包155
7.3.2包的定义156
7.3.3编译与执行带包的类157
7.3.4引入包159
7.4应用实例161
案例手机接口的定义与实现161
本章小结163
习题164
第章 1 Java语言概述 Java是一门面向对象的程序设计语言。本章首先介绍Java的发展历程,让读者对Java有基本的认识,了解Java的特点和运行机制;然后详细讲解Java开发环境的搭建和开发流程,包括一些基本的注意事项。 通过本章的学习,达到以下目标。 认识Java,并了解其发展历程。 熟悉Java语言的特点及应用领域。 掌握安装并配置Java开发环境的方法。 掌握Java中Path及classpath属性的作用。 能够编写并运行一个简单的Java程序。 掌握Java的开发流程。 了解常用的Java开发工具。 1.1认识Java〖*2〗1.1.1什么是Java在认识Java之前,先了解几个基本概念。 1. 软件开发 软件开发是根据用户要求建造软件系统或者系统中的软件部分的过程。软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。软件是一系列按照特定顺序组织的计算机数据和指令的集合,分为系统软件和应用软件。软件一般使用某种程序设计语言来实现,通常采用相应的开发工具进行开发。 开发出来的软件系统可以帮助人们解决和处理各种问题,必然产生人机交互。人机交互方式有两种: 图形化界面(Graphical User Interface,GUI)和命令行方式(Command Line Interface,CLI)。*种方式简单直观,用户易于接受,容易上手操作,如Windows操作系统;第二种方式需要一个控制台,用户输入特定的指令,让计算机完成操作,较为麻烦,需要用户记住一些命令,如DOS操作系统。 2. 计算机语言 语言是人与人之间用于沟通的一种方式。例如,中国人与中国人用普通话沟通;中国人要和英国人交流,需要学习英语。计算机语言是人与计算机交流的方式。如果人要与计算机交流,需要学习计算机语言。计算机语言有很多种,如C、C++、Java、PHP等。Java程序设计 00第1章 Java语言概述 00Java是Sun公司(全称Stanford University Network,1982年成立。2009年4月20日,被甲骨文公司以约74亿美元收购)开发的一套编程语言,主设计者是James Gosling(见图11),*早来源于一个叫Green的项目。这个项目*初的目的是为家用电子消费产品开发一个小巧、易用、安全稳定、与平台无关的分布式代码系统,以便通过网络对家用电器进行控制。一开始,Sun公司的工程师们准备采用C++语言来开发,但由于C++过于复杂,安全性差,于是他们决定基于C++开发一种符合自己要求的新语言。1991年4月,历时18个月,新语言的*个版本诞生了。命名时, James Gosling看到窗口的橡树(见图12),遂为其取名为Oak,希望它能够有橡树一般坚强的生命力。后来,他发现“Oak”是Sun公司另外一种语言的注册商标,于是1995年将这种新语言更名为“Java”,即太平洋上一个盛产咖啡的岛屿的名字。Java是一种用于网络的,精巧而安全的语言,使得程序能够*大限度地利用网络资源。 图11James Gosling 图12印度橡树 Java语言发展到今天,有过多个版本。1995年5月23日,Sun公司推出Java JDK 1.0版,标志着Java正式进军Internet。1998年,Sun公司对JDK 1.0升级,并推出JDK 1.2的开发包,加入大量的轻量级组件包。从此,Java正式命名为Java 2。 Java语言经历了以下3个发展方向。 (1) J2SE(Java 2 Platform Standard Edition): 包含构成Java语言核心的类,如数据库连接、接口定义、输入/输出和网络编程,主要用于开发一般个人电脑上的应用软件。 (2) J2ME(Java 2 Platform Micro Edition): 包含J2SE中的一部分类,用于消费类电子产品的软件开发,如呼机、智能卡、手机、PDA和机顶盒。 (3) J2EE(Java 2 Platform Enterprise Edition): 即Java企业版,包含J2SE中的所有类,还包含用于开发企业级应用的类,如EJB、Servlet、JSP、XML和事务控制,也是现在Java应用的主要方向,用于开发企业级应用软件。 上述3项中的核心部分是J2SE,J2ME和J2EE是在J2SE基础上发展起来的。 【注】 在2005年“Java十周年大会”之后,上述3门技术被重新命名。 (1) J2SE更名为Java SE。 (2) J2ME更名为Java ME。 (3) J2EE更名为Java EE。 1.1.2Java语言的特点 Java总是和C++联系在一起,而C++是从C语言派生而来的,所以Java语言继承了这两种语言的大部分特性。Java的语法从C语言继承而来,Java许多面向对象的特性都受到C++的影响。事实上,Java中的几个自定义特性都来自于或可以追溯到它的这些前驱语言。略有不同的是,Java语言完全面向对象,摒弃了C和C++的不足。Java语言的诞生与过去近30年中计算机语言的不断改进和发展密切相关。 Sun公司在《Java白皮书》中对Java的定义是: “Java: A simple, objectoriented, distributed,interpreted,robust,architectureneutral,secure,portable,highperformance,multithreaded,and dynamic language.”即Java是一种具有简单、面向对象、分布式、解释型、健壮、安全、与体系结构无关、可移植、高性能、多线程和动态执行等特性的语言。下面简述Java的主要特性。 1. 简单易用 Java语言是一种相当简洁的面向对象程序设计语言,它省略了C++语言中所有难以理解、容易混淆的特性,如头文件、指针、结构、单元、运算符重载和虚拟基础类等,更加严谨、简洁。 Java源代码的书写不拘泥于特定的环境,可以使用记事本、文本编辑器等;将源文件编译后,可直接运行;再通过调试,得到预期的结果。 此外,Java可以自动完成垃圾收集工作,回收不再使用的内存,使用户无须担心内存管理之类的事情。 2. 面向对象 面向对象是指以对象为基本粒度,其下包含属性和方法。对象的说明用属性表达,通过使用方法来操作这个对象。可以这么说,面向对象是软件工程学的一次革命,大大提升了人类的软件开发能力,是一个伟大的进步,是软件发展重大的里程碑。作为一种现代编程语言,是不能偏离面向对象这一方向的,Java语言也不例外。 Java是一种面向对象的语言,具有面向对象的诸多优点,如代码扩展、代码复用等。 3. 分布式 Java语言具有强大的、易于使用的联网能力,非常适合开发分布式计算的程序。Java应用程序可以像访问本地文件系统那样通过URL访问远程对象。 使用Java语言编写Socket通信程序比使用其他任何语言都简单。它适用于公共网关接口(CGI)脚本的开发,还可以利用Java小应用程序(Applet)、Java服务器页面(Java Server Page,JSP)、Servlet等手段构建更丰富的网页。 4. 解释型 Java是一种解释型语言,相对于C/C++,用Java语言写出来的程序效率低,执行速度慢。但它可以通过在不同平台上运行Java解释器,解释Java代码,实现“一次编写,到处运行”的目标。为此,牺牲效率是值得的。而且,现在的计算机技术日新月异,运算速度越来越快,用户不会感到太慢。 5. 健壮 Java语言在伪编译时做了许多早期潜在问题的检查,在运行时又做了一些相应的检查,可以说是一种*严格的编译器。它的这种“防患于未然”的手段将许多程序中的错误扼杀在“摇篮”之中,使得许多在其他语言中必须通过运行才会暴露出来的错误,在编译阶段就被发现了。 另外,Java语言具备保证程序稳定、健壮的特性,有效地减少了错误,使Java应用程序更加健壮。 6. 具有较高的安全性 人们设计Java语言时,在安全性方面考虑得很仔细,做了许多探究,使其成为目前*安全的一种程序设计语言。 对Java来说,安全性分为4个层面,即语言级安全性、编译时安全性、运行时安全性和可执行代码安全性。语言级安全性指Java的数据结构是完整的对象,这些封装过的数据类型具有安全性。编译时,要进行Java语言和语义的检查,保证每个变量对应一个值,编译后生成Java类。运行时,Java类需要使用类加载器载入,由字节码校验器校验之后才可以运行。Java类在网络上使用时,对其权限进行了设置,以保证被访问用户的安全性。 7. 可移植性 对于程序员而言,写出来的程序如果不需要修改就能够同时在Windows、Mac OS、UNIX等平台上运行,简直就是美梦成真,Java语言让这个原本遥不可及的事越来越近。使用Java语言编写的程序,只需较少的修改,甚至有时根本不需修改,即可在不同平台上运行。 8. 拥有较高的性能 由于Java是一种解释型语言,其执行效率就会低一些,但采取下述两种措施,可使其拥有较高的性能。 (1) Java语言源程序编写完成后,先使用Java伪编译器进行伪编译,将其转换为中间码(也称为字节码)再解释。 (2) 提供了一种准实时(JustInTime,JIT)编译器。当需要更快的速度时,使用JIT编译器将字节码转换成机器码,将其缓冲下来,速度就会更快。 9. 具有多线程处理能力 线程是一种轻量级进程,是现代程序设计中必不可少的一种特性。多线程是指允许一个应用程序同时存在两个或以上的线程,用于支持事务并发和多任务处理。多线程处理能力使程序具有更好的交互性和实时性。 Java在多线程处理方面性能超群,除了内置的多线程技术之外,还定义了一些类、方法等来建立和管理用户定义的多线程,具有让用户惊喜的强大功能,而且在Java语言中进行多线程处理也很简单。 10. 是一种动态语言 Java是一种动态的语言,表现在以下两个方面。 (1) 在Java语言中,可以简单、直观地查询运行时的信息。 (2) 可以将新代码加入到正在运行的程序中。 1.1.3Java程序的运行机制 在Java中处理代码的过程如图13所示。 图13Java程序的运行机制 从图13中可以看出,Java源文件名的后缀为.java,通过编译,生成.class文件,在计算机上执行。此时执行.class的计算机并不是物理上可见的,而是Java自己设计的一台计算机——Java虚拟机(Java Virtual Machine,JVM)。Java通过JVM进行可移植性操作。 在Java中,所有的程序都在JVM上运行。JVM是在一台计算机上由软件或硬件模拟的计算机,它读取并处理编译过的、与平台无关的字节码*.class文件。Java解释器负责将Java虚拟机的代码在特定的平台上运行。JVM的基本原理如图14所示。 图14JVM的基本原理 从图14中可以发现,所有的.class文件都在JVM上运行,即.class文件只需要认识JVM,由JVM去适应各个操作系统。如果不同的操作系统安装了符合其类型的JVM,那么程序无论在哪个操作系统上都可以正确执行。 有些读者可能很难理解以上的解释。其实这个过程类似于下述情景: 有一位中国富商,同时要和美国、韩国、俄罗斯、日本、法国、德国等几个国家的客户洽谈生意,可是他不懂这些国家的语言,所以他针对每个国家请了一位翻译。他只对翻译说话,不同的翻译会将他说的话译给相应的客户。这样,富商只需要对各位翻译说话,就可以同几个国家的客户沟通。 【注】 Java的两种核心机制如下所述。 (1) Java虚拟机(Java Virtal Machine),是一台利用软件方法实现的虚拟的计算机,具有指令集,并使用不同的存储区域,负责执行指令,管理数据、内存、寄存器。对于不同的平台,有不同的虚拟机。Java虚拟机屏蔽了底层运行平台的差别,实现了“一次编译,到处运行”。 (2) 垃圾收集机制(Garbage Collection),即回收不再使用的内存空间。在C/C++等语言中,由程序员负责回收无用内存。Java 语言撤销了程序员回收无用内存空间的责任,它提供一种系统级线程来跟踪存储空间的分配情况,并在JVM空闲时,检查并释放那些可被释放的存储空间。垃圾回收在Java程序运行过程中自动执行,程序员无法精确控制和干预。 1.1.4Java语言的应用领域 Java技术自1995年问世以来,在我国的应用和开发迅速普及。总体来看,主要集中于企业应用开发。根据有关单位调查显示,从开发领域的分布来看,Web开发占了一半以上,为57.9%;Java ME移动或嵌入式应用占15%;C/S应用占11.7%;系统编程占15.4%。近30%的开发者用Java从事C/S应用或系统级应用的开发。 Java语言主要应用在下述几个领域。 1. 行业和企业信息化 由于Sun、IBM、Oracle、BEA等国际厂商相继推出基于Java技术的应用服务器以及各种应用软件,带动了Java在金融、电信、制造等领域日益广泛的应用。例如,清华大学计算机系利用Java、XML和Web技术研制开发了多个软件平台,东方科技的Tong Web、金蝶的Apusic、中创的Inforweb 等J2EE应用服务器,以及和佳ERP和宝信ERP等ERP产品,在许多企业得到应用。 2. 电子政务及办公自动化 东方科技、金蝶、中创等公司开发的J2EE应用服务器在电子政务及办公自动化中广泛应用。例如,金蝶的Apusic在民政部、广东省市工商局应用;东软电子政务架构EAP平台在社会保险、公检法、税务系统应用;中创的Inforweb等Infor系列中间件产品在国家海事局、山东省政府及中国建设银行、民生银行等金融系统应用;无锡永中科技基于Java平台开发的国产化集成办公软件永中Office在一些省、市政府部门应用。 3. 嵌入式设备及消费类电子产品 无线手持设备、通信终端、医疗设备、信息家电(如数字电视、机顶盒、电冰箱)、汽车电子设备等是近年来比较热门的Java应用领域。在这方面的应用有中国联通CDMA 1X网络中基于Java技术的无线数据增值服务——UniJa。 4. 辅助教学 在辅助教学方面,东南大学与中兴通讯公司利用Java语言联合开发了远程教学系统,用于本地网上教学、课后学习和异地远程教育;清华大学利用Java语言进行了计算机软件基础课教学改革,分析、研究Java教学软件BlueJ的汉化方案;电子科技大学应用Java RMI技术进行远程教育;西安电力高等专科学校采用Java技术开发了交互式电站仿真系统,实现电站锅炉仿真、锅炉膛火焰仿真,为实现网上仿真进行了有益的探索。 1.2Java开发环境与开发工具〖*2〗1.2.1Java开发环境一台计算机上安装了JVM,即可运行Java程序。但是要开发Java程序,还需建立Java开发环境。不同领域的Java开发应用所需的版本不同,本书使用Java SE开发环境。 1. Java SE的组成 Java SE是一个包含Java开发环境和运行环境的套件,由以下3项组成。 (1) Java Development Kit(JDK): Java应用程序开发环境。 Java不仅提供了丰富的语言和运行环境,还提供了一个免费的Java开发工具集(Java Development Kit,JDK),以便程序员开发Java 开发工具包。Java 2 SDK开发工具集如表11所示。表11Java 2 SDK开发工具集 工具名称说明JavacJava编译器,用于将Java源程序编译成字节码JavaJava解释器,用于解释、执行Java字节码Appletviewer小应用程序查看器,用于测试和运行Java Applet程序JavadocJava文档生成器JdbJava调试器JavapJava类文件反汇编器JavahC文件生成器,实现在Java类中调用C++代码JDK中除了包括Java开发工具以外,还包括JRE,所以安装了JDK,就不用单独安装JRE了。 (2) Java Runtime Environment(JRE): Java应用程序运行环境,包括Java虚拟机和Java程序所需要的核心类库等。如果仅需运行开发好的Java程序,计算机只需要安装JRE。 (3) Java Plugin: Java插件。 JVM、JRE与JDK的关系如图15所示。 图15JVM、JRE与JDK的关系 2. 建立Java SE开发环境 步骤1: 安装JDK(本书使用JDK 1.6版本)。 (1) 准备好JDK的安装文件jdk6u18windowsi586se版.exe。从Oracle公司的网站(http://www.oracle.com/technetwork/java/javase/downloads/indexjsp138363.html)下载JDK工具包。 (2) 运行.exe文件,安装JDK。默认安装在C:\\Program Files\\Java目录下,本书更改安装在D:\\Java目录下。 (3) 按照安装向导的提示,完成安装,即可看到如图16所示文件夹。 图16安装JDK后的文件夹 ① bin: 一些执行文件,包括Java的编译器、解释器和工具。 ② demo: 各种演示的实例。 ③ lib: 保存的库文件。 ④ include: Win32子目录,都是本地文件。 ⑤ jre: Java程序运行环境的根目录。 其中,bin文件夹包含将来要使用的各种Java命令,但是这些命令本身并不在Windows环境之中。要想使用这些命令,必须先在Windows中注册。 步骤2: 设置环境变量。 在JDK安装完毕后,需设置path和classpath这两个环境变量。这是程序编译和运行的重要保证。 path指示Java命令的路径,如javac、java、javaw等。这样,在控制台下面编译、执行程序时就不需要再输入路径了。 由于JDK的安装路径多次使用,在此先新建环境变量JAVA_HOME,操作步骤如下。 (1) 选择“我的电脑”→“属性”命令,在打开的窗口中选择“高级系统设置”命令,打开“系统属性”对话框,如图17所示。 (2) 选择“高级”选项卡,然后单击“环境变量”按钮,打开“环境变量”对话框,如图18所示。 (3) 单击“系统变量”栏中的“新建”按钮,弹出“编辑系统变量”对话框。在“变量名”文本框中输入JAVA_HOME,在“变量值”文本框中输入C:\\Java\\jdk1.7.0_03,如图19所示。 path环境变量包含在Windows系统里,修改一下,使其指向JDK的bin目录,即在“环境变量”对话框中单击“系统变量”栏中的“编辑”按钮,弹出“编辑系统变量”对话框,然后在“变量值”文本框的*前面加上路径,再用“;”将后面的路径分隔开,如“%JAVA_HOME%\\bin;”,如图110所示。 注意: 环境变量的各变量值之间需用分号分隔。 图17“系统属性”对话框 图18“环境变量”对话框
你还可能感兴趣
我要评论
|