java研习从学习入门到精通.doc
-_第第 1 章章 计算机基础计算机基础1.1 进制的概念进制的概念编程中常用的进制有二进制、八进制、十进制和十六进制,十进制为主。进制有两个最基本的概念:基数和运算规则。基数:指一种进制中组成的基本数字运算规则:就是进位或借位规则1.2 计算机内部的数据表达计算机内部的数据表达计算机内部数据以二进制的形式表达的。1.3.1 网络编程网络编程网络编程的本质: 两个设备间的数据交换。编程方式:基本都是基于请求/响应方式,即一个设备发送请求数据给另外一个,然后接收另一个设备的反馈。客户端(Client):第一次发送请求的程序。服务器(Server):客户端程序可在需要的时候启动,而服务器为了能够时刻相应连接需要一直启动。设备间连接一旦建立以后,就客户端和服务器端就可以进行数据传递,而且身份是等价。1.3.2 IP 地址和域名地址和域名如果把电脑必比作人,IP 地址相当于人的身份证号码。IP 地址是分配给网卡的,且网卡与 IP 地址是一对一的,而电脑与网卡为一对多的。在同一个网络内部 IP 地址唯一。域名(Domain Name)就是给 IP 取一个字符的名字(如 sina.com) 。如果把-_IP 地址类比成身份证号的话,那么域名就是你的姓名。网络中只能使用 IP 地址进行数据传输,所以在传输以前,需要把域名转换为IP,该转换由 DNS(Domain Name Server)服务器专门来完成。故可以使用 IP 或域名来标识网络上的一台设备。1.3.3 端口的概念端口的概念为了在一台设备上可以运行多个程序,人为的设计了端口(Port)的概念,类似公司内部的分机号码。规定一个设备有 65536 个端口,端口与程序是多对一的关系。在 0-1024 间的端口多被操作系统占用,故编程时一般采用 1024 以后的端口号。如果想和该台计算机上的某个程序交换数据的话,不仅需值 IP 或域名,还须知道该程序使用的端口号。1.3.4 数据传输方式数据传输方式知道了如何连接,下面就是如何传输了。网络上数据传输的方式有两种:TCP(Transfer Control Protocol)传输控制协议方式,该传输方式是一种稳定可靠的传送方式。该方式只需要建立一次连接,就可以多次传输数据。类似于打电话,如果你说的话不清楚,对方会要求你重复,保证传输的数据可靠。该方式的优点是稳定可靠,缺点是代价高、传输速度不快。UDP(User Datagram Protocol)用户数据报协议方式,该方式不建立稳定的连接,类似于发短信息,就需要多次输入对方的号码。该方式不可靠,数据有可能收不到。该方式优点是开销小、传输速度快,缺点是数据有可能会丢失。1.3.5 协议协议的概念的概念协议(Protocol)指传输数据的格式。 一般程序的协议分:客户端发送的数据格式;服务器端反馈的数据格式。客户端和服务器端都遵循该格式生成或处理数据,实现复杂数据交换。-_1.3.6 小结网络编程就是使用 IP 地址,或域名,和端口连接到另一台计算机上对应的程序,按照规定的协议(数据格式)来交换数据。实际编程中建立连接和发送、接收数据在语言级已经实现,更多的工作是设计协议,以及编写生成和解析数据的代码罢了,然后把数据转换成逻辑的结构显示或控制逻辑即可。1.4 java 语言简介语言简介1.4.1 Java 程序开发过程Java 语言采用先编译,再解释的执行方式。即先把 Java 语言的源代码编译成中间代码 class 文件,然后在运行时根据 class 文件的内容解释执行。 步骤如下:1,编写源代码,改错。2,编译生成 class 文件3,生成部署文件1.4.2 Java 虚拟机介绍虚拟机介绍Java 语言最特殊的一个特点就是平台无关性。平台(platform)指的是操作系统等。该特点是通过 Java 虚拟机(Java Virtual Machine)实现的。虚拟机将 Java 语言的执行文件 class 文件翻译成操作系统可以识别的指令格式,这样 Java 就可以在该操作系统上执行。1.4.3 其他其他JavaScript 和 Java 的关系JavaScript 是一种嵌入到网页中执行的脚本语言,该语言除了和 Java 语言的名字相似以后,没有任何的关系。第二章第二章 建立开发环境建立开发环境基础开发工具 JDK-_Java 语言的基本开发工具是 SUN 公司免费提供的 JDK,一般不直接使用。集成开发环境(IDE)集成开发环境是指将程序设计需要的很多功能(如代码编辑、调试、程序部署等)能都整合到一个程序内部以方便程序开发、提高开发效率的软件。常见的有 Eclipse、JBuilder、NetBeans 等等,必须熟练。集成开发环境的使用都很类似,只要熟练其中一种,其他的就简单了。我们以 Eclipse 为例来介绍基本使用。2.1 JDK 开发环境开发环境JDK(Java Developers Kit) ,也称 J2SDK(Java 2 Software Development Kit) ,是基础 Java 语言开发工具,软件包含编译工具、运行工具以及执行程序的环境(即 JRE) 。JDK 是其它 Java 开发工具的基础,在安装其它开发工具以前,必须首先安装 JDK.。 JDK 未提供 Java 源代码的编写环境,代码编写还需要在其它的文本编辑器中进行。其实大部分程序设计语言的源代码都是一个文本文件,只是存储成了不同的后缀名罢了。2.1.1 JDK 的获得的获得可以到 SUN 公司的官方网站下载,地址为:http:/java.sun.com/javase/downloads/index.jsp。下载最新版本的“JDK 6 Update25”,选择对应的操作系统,以及使用的语言即可。下载 Windows 版本有两个版本:1,Windows Online Installation 在线安装版本,每次安装时都从网络上下载安装程序,在下载完成以后,进行实际的安装。2,Windows Offline Installation 离线安装版本,每次安装时直接进行本地安装。一般下载离线安装版本。-_2.1.2 JDK 的安装的安装Windows 操作系统上的 JDK 安装程序是一个 exe 可执行程序,直接安装即可。2.1.3 JDK 的配置的配置由于 JDK 提供的编译和运行工具都是基于命令行的,所以需要进行一下 DOS下面的一个设定:把 JDK 安装目录下 bin 目录中的可执行文件都添加到 DOS的外部命令中,这样就可以在任意路径下直接使用 bin 目录下的 exe 程序了。配置的参数:操作系统中的 path 环境变量,用途是系统查找可执行程序所在的路径。配置步骤为:右键我的电脑.属性.高级系统设置.环境变量(win 7).系统变量。之后进行如下设置: )JAVA_HOME=C:Program FilesJavajdk1.6.0_10CLASSPATH= .;C:Program FilesJavajdk1.6.0_10libPATH= .;C:Program FilesJavajdk1.6.0_10bin (插入原有路径后边。)配置后,查看是否成功,若输出的内容是使用说明,则成功。1、 开始.输入 cmd.点击 enter 键。 2、 在“命令提示符”窗口中,输入 javac,按回车。不成功需要重新进行配置。2.1.4 第一个第一个 HelloWorld 程序程序步骤:编辑、保存、编译、运行。2.1.4.1 编辑代码编辑代码由于 JDK 没有提供代码编辑环境,所以使用 JDK 进行 Java 程序开发时,还需要一个编辑代码的软件。Java 源代码可以在任意文本编辑中进行,例如记事本等,下面介绍如何在记-_事本编辑代码。右键桌面,新建,文本文档,双击打开,写如下代码:public class HelloWorldpublic static void main(String args)System.out.println(“Hello world!“) ;字母区分大小写,标点符号均为半角。 2.1.4.2 保存代码保存代码源文件后缀名必须是 java,仅此处不分大小写, 对于文件名,如果源代码中声明时:使用 public: 如 public class HelloWorld源代码的名称必须和 class 后面的单词相同,也就是文件的全名必须为HelloWorld.java。未使用:名称没有要求,通常一个源代码只有一个声明,且声明作成 public 的。为了后续的说明方便,把该代码保存在 d:javachapter2 文件夹中,后续的说明和该路径保持一致。2.1.4.3 编译代码编译代码编译:是将 源代码 转换成 可执行文件。Java 可执行文件:的后缀名为 class,称作类文件或字节码文件。编译时使用 JDK 中 bin 目录下的 javac.exe 文件来实现。用法:Javac 选项:在命令提示符窗口中输入 javac,按回车查看。-_在命令行下编译程序的步骤如下:1,也可 开始.“cmd”.回车键 打开该窗口。2,命令行中输入 d:按回车,切换到 d 盘3,输入 cd javachapter2 切换到源代码的保存路径。4,输入: javac 源文件名.后缀(如:javac HelloWorld.java)按回车键后若无提示则成功,在源代码所在目录下生成 HelloWorld.class 文件。否则有语法错误,可仔细检查代码书写及文件名或者路径是否有错。TIP:可以通过如下方式设置命令提示符窗口的默认路径:“开始”>“程序”>“附件”>“命令提示符”>右键>属性”菜单。修改”快捷方式”属性页的“目标”的值为需要设置的路径。2.1.4.4 运行程序运行程序用 JDK 中 bin 下的 java.exe 运行生成的程序。执行的是 class 文件,用法:Java 文件名(无后缀 class)具体用法在命令提示符中输入 JAVA 点回车查看。步骤如下:1,切换到 class 文件所在的目录,方式同上。2,命令格式:java class 文件名(不带后缀名,如: java HelloWorld)按回车即可。结果: Hello world2.2 Eclipse 使用使用Eclipse 是主流开发工具之一,相当于士兵的并且,要熟练使用。2.2.1 Eclipse 获得获得地址为:http:/www.eclipse.org 在下载时选择“Eclipse Classic”下载。-_以下为 Windows 操作系统为例子来介绍 Eclipse 的安装。2.2.2 Eclipse 安装安装在安 Eclipse 前,一定要安 JDK,其中 Eclipse3.3.2 要求安装的 JDK 版本在1.5 及以上。Eclipse 的安装只需要解压安装文件即可,可据实际需要解压缩到任意路径下。2.2.3 Eclipse 基本使用基本使用安装后,选 Eclipse 安装目录下的 eclipse.exe 即可启动。2.2.3.1 工作空间设置工作空间设置第一次启动 Eclipse 时,会弹出标题为“Workspace Launcher”的窗口,该窗口的功能是设置 Eclipse 的 workspace(工作空间,即 Eclipse 新建的内容默认的保存路径,以及 Eclipse 相关的个性设置信息。 )设置完成以后,选择“OK”按钮。2.2.3.2 显示主界面显示主界面第一次启动会显示一个欢迎界面,选“X”关闭欢迎界面,就可以看到 Eclipse的主界面了。欢迎界面只显示一次,除非工作空间变化了。2.2.3.3 Eclipse 基本使用基本使用稍显繁琐,但非常实用的。首先建立 Project(项目) ,Project 是一个管理结构,管理项目内部源代码(任意多)和资源文件(任意多) ,并保存和项目相关的设置信息。基础步骤主要有如下:新建项目、新建源文件、编辑和保存源文件、和运行程序。2.2.3.3.1 新建项目新建项目1、 “File”>“New”>“Java Project”2、 在“New Java Project”窗口中,进行新建项目的设定:-_“Project Name”必须输入,代表项目名称,在硬盘上为文件夹的名称。“Content”设置项目的内容。“JRE”部分设置项目使用的 JDK 版本。“Project layout”部分设置项目文件内部的目录结构。3、 “Finish”按钮完成创建,可到磁盘对应路径下观察项目文件夹的结构。2.2.3.3.2 新建源文件新建源文件项目建立或者打开项目后,就可新建源文件了。一个项目中可以包含多个源文件,每个源文件都可以独立执行。步骤为:1、 “File”>“New”>“Class”2、 在“New Java Class”向导中,进行新建源文件的设定“Source folder”代表源代码目录,例如“test/src”。“Name”代表源文件的名称,例如输入 Hello.“public static void main(String args) ”生成的源代码中是否包含该代码。3、 “Finish”完成设置,则 Eclipse 将自动生成符合要求的源代码并在 Eclipse环境中打开。代码如下:publicclass Hello /* *paramargs */ public static void main(String args) / TODO Auto-generated method stub 2.2.3.3.3 编辑和保存源文件可把注释内容删除,并添加输出字符串的代码,则代表变为:Public class Hello -_Public static void main(String args) System.out.println(“Hello World!“) ;选保存按钮或按 Ctrl+S 组合键保存源文件,保存时 Eclipse 会自动编译该代码,如果有语法错误则以红色波浪线提示。2.2.3.3.4 运行程序运行程序方法:1,源代码空白处右键,选“Run as”>“1 Java Application”即可。2,选择 Eclipse 左侧你需要运行的文件名右键,也可找到该菜单进行运行。2.2.4 Eclipse 基础使用进阶基础使用进阶分类项目目录、打开项目、 添加 JDK、 添加源代码、快捷键速查2.2.4.1 分类项目目录分类项目目录默认的 Eclipse 项目目录下,源代码和 class 文件都存储在项目根目录下,这样项目目录显得比较凌乱,为此需以下设置:菜单“Window”>“Preferences”>“Java”>“Build Path”,选右侧的“Folders”选项,设置“Source folder name”源代码目录名称为 src, “Output folder name”输出目录名称为 classes,选择“OK”按钮完成设置。此后新建 eclipse 项目时,将在项目目录下自动新建 src 和 classes 这两个文件夹,并将新建的源代码文件默认存储在项目目录下的 src 目录中,而 class 文件默认存储在项目目录下的 classes 目录中。2.2.4.2 打开项目打开项目打开已有的 eclipse 项目步骤为:菜单“File”>“Import”>“General”>“Existing Projects into Workspace”,选择“Next”按钮打开导入窗口,选择“Select root directory”后面的“Browse”按钮选择项目的根目录,选择“Finish”按钮,即可完成打开项目的操作。-_2.2.4.3 添加添加 JDK默认的 Eclipse 中只集成一个 JDK,如需用不同版本的 JDK 则:首先在 Eclipse 中集成对应 JDK,然后在新建项目时进行选择。添加新的 JDK 步骤:菜单“Window”>“Preferences”>“Java”>“Installed JREs”,选择右侧的“Add”,然后选择“JRE home directory”后的“Browse”选需添加的 JDK 安装目录的根目录,例如 C:j2sdk1.4.2_11,选择“OK”完成添加即可。2.2.4.4 添加源代码添加源代码将已有的 java 源代码添加到已有的项目中的步骤为:1、复制该文件,而非该文件的内容。2、 选择 Eclipse 界面左侧的项目列表中,对应项目的源代码目录(例如Hello 项目下的 src 目录) 。3、ctrl+v 粘贴即可。2.2.4.5 快捷键速查快捷键速查为了方便对于 eclipse 的操作,Eclipse 提供了常见快捷键的功能和列表,可以选择菜单“Help”>“ Key Assist”查看。第三章第三章 Java 基础语法基础语法3.1 代码框架代码框架public class 文件名 public static void main(String args)你的代码 3.2 关键字关键字关键字(keyword):是指程序代码中规定用途的单词。 -_abstract(抽象的)continue(继续) for(当的时候) new(新建)switch(转换)assert(断言)default(默认) if(如果)package(打包) synchronized(同步)boolean(布尔) do(做) goto(跳转到) private(私有的) this(这个) break(中断)double(双精度) implements(实现) protected(受保护的)throw(抛出,动词)byte(字节)else(否则)import(引入)public(公共的 throws(抛出)case(情形)enum(枚举)(枚举) instanceof(是的实例)return(返回)transient(瞬时的)catch(捕获)extends(继承)int(整数)short(短整数)try(尝试)char(字符) final(最终的) interface(接口)static(静态的)void(空的)class(类)finally(最终地 long(长整数)strictfp(精确浮点) volatile(易变的)const(常量)float(单精度浮点)native(本地的)super(超级的)while(当的时候)说明:其中 goto 和 const 的用途被保留,在语法中未使用到这两个关键字。注:语法中由三部分组成:关键字、标识符、空格括号标点3.3 标识符命名规则:标识符命名规则:1、 不能是关键字2、 只能以字母、下划线(_)和美元符号($)开头,不能以数字.3、 不能包含特殊字符,例如空格、括号和标点符号等3.4 基本数据类型基本数据类型3.4.1 概述概述Java 基本数据类型 8 种,4 个类别:整数型:byte(字节型) 、short(短整型) 、int(整型) 、long(长整型)小数型:float(单精度浮点型) 、double(双精度浮点型)字符型:char 布尔型:boolean3.4.2 整数型整数型-_类型名称关键字占用空间(字节)取值范围默认值字节型byte1-2727-10短整型short2-215215-10整型int4-231231-10长整型long8-263263-10说明:1、Java 中的整数都都有正有负(补码表示负值) 。2、整数数值默认是 int 以及 int 以下,如果需要 long 型的值,则需要在数值后面添加字母 L,大小写均可,例如:123L3、默认整数是十进制数字,八进制以 0 开头,例 016,十六进制 0x(大小写均可)开头,例如 0xaf。3.4.3 小数型小数型没有特殊要求,一般选择 double 类型,运算速度要低于整数运算。类型名称关键字占空间(字节)取值范围默认值单精度浮点型float4-3.4E+383.4E+380.0f双精度浮点型double8-1.7E+3081.7E+3080.01、float 类型需要在小数后加字母 f,不区分大小写,例如 1.01f. 2,小数都有一定的精度所以在运算时不够精确。Strictfp(精确浮点)-_3.4.4 字符型字符型字符型的值实际只是字符集中的编号,Java 语言中使用 Unicode 字符集作为默认的字符集。程序代码中,字符用一对单引号加上字符来标识,例如A、 a等。也可以直接使用字符编码,也就是一个非负整数进行表示。类型名称关键字占用空间(字节)取值范围默认值字符型char20-216-10说明:c+中为 1B1、不包含负数,可作为无符号整数使用,可以参与数学运算。2、字符型的默认值是编号为 0 的字符3.4.5 布尔型布尔型类型名称关键字占用空间(字节)取值范围默认值布尔型boolean取决于虚拟机true 或 falsefalse3.5 变量和常量变量和常量3.5.1 变量(同变量(同 C+)法格式如下:数据类型 变量名 1 =值,.,变量名 N=值;例如:int x = 10,y,z=40;注:等号右的值的类型需要和声明变量的数据类型一致。3.5.2 常量常量-_作用:1,便于程序的修改。2,增强程序的可读性常量:只需要在变量的语法格式前面添加关键字 final。常量名必须大写。语法格式:final 数据类型 常量名称 1 = 值 1,常量名称 n = 值 n;例如:final char MALE=M,FEMALE;3.5.3 语句块语句块在程序中包含的内容叫做语句块,可以互相嵌套且层次没限制。例如: int b; char c;3.5.4 变量的作用范围(同常量)变量的作用范围(同常量)同个作用范围内部,不能声明名称相同的变量。变量的作用范围:变量声明开始到声明所在的语句块结束的大括号为止。3.6 数据类型转换数据类型转换Java 强类型的语言有以下几个要求:1,声明变量或常量时必须声明类型且先声明后使用(vb 中可以先使用中可以先使用,此时默认为变形体类型) 。2,值的类型必须和变量或常量的类型完全一致。3,参与运算的数据类型必须一致才能运算。4,需要在不同类型的值之间进行操作就需要数据类型转换。数据类型转换有两种:1,自动类型转换(存储范围小的到大) ,不需要在程序中编写代码。byteshort(char)intlongfloatdouble整数转换为小数有可能存在数据精度的损失(存储方式不同) 。-_2,强制类型转换(存储范围大到小) ,必须在程序中编写代码。语法格式为:(转换到的类型)需要转换的值 此处同 C 语言,而 C+多了:转换到的类型(需要转换的值)很可能存在精度的损失基本数据类型的转换是出了 boolean 类型以外的其它 7 种类型之间的转换。 3.9 语句结束(和语句结束(和 C+同)同)可以把一句代码写在多行,而代码语句结束的地方书写一个“;”。开始和结束的地方和大部分()结束的地方都不需要书写“;”进行结束。3.10 注释(和注释(和 C+同)同)有三种:单行、多行和文档注释。单行注释格式:/注释内容 多行注释格式:/*注释内容*/文档注释:一般对于程序的结构进行说明,格式为:/*注释内容*/第四章第四章 运算符运算符4.1 算术运算符算术运算符符号名称功能说明+加加法运算-减减法运算*乘乘法运算/除除法运算-_%取余求两个数字相除的余数乘除优先于加减,按照从左向右的顺序计算,运算结果的类型和参与运算的类型中最高的类型一致,例如整数加整数还是整数。整数除整数结果还是整数,例如 10/3 的结果是 3,而不是 3.333.取余运算常见用途:控制规则变化,控制随机数字的区间等。晋升指低于 int 的 3 种数字类型(byte、short 和 char)进行算术运算后,结果会自动提升成 int 类型。如下:byte b1 = 10;byte b2 = 20;byte b3 = b1 + b2; /语法错误,类型不匹配int n = b1 + b2; /或者 byte b3 = (byte) (b1 + b2) ;变量在计算时必须被赋值,否则直接报语法错误4.2 比较运算符结果是一个 boolean 类型的值,如果比较结果成立则为 true,否则为 false. 表 4-2 比较运算符符号名称功能说明> 大于比较左侧数字是否大于右侧数字=大于等于比较左侧数字是否大于或等于右侧数字-_>(带符号右移)和>>>(无符号右移) 。在移位运算时,byte、short 和 char 类型移位后的结果会变成 int 类型,对于byte、short、char 和 int 进行移位时,规定实际移动的次数是移动次数和 32 的余数,也就是移位 33 次和移位 1 次得到的结果相同。移动 long 型的数值时,规定实际移动的次数是移动次数和 64 的余数,也就是移动 66 次和移动 2 次得到的结果相同。三种移位运算符的移动规则和使用如下所示:>运算规则:按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃) ,高位的空位补符号位,即正数补零,负数补 1.语法格式:-_需要移位的数字 >> 移位的次数>>>运算规则:按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃) ,高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同。4.5.3 小结以二进制的形式存储和转换数据,是实现网络协议解析以及加密等算法的基础。但为了使代码可读性强,还是大量使用一般的算术运算符来进行数字运算。4.6 其它运算符+、 同 C+、- 表示正负号? : 同 C+ 条件式 ? 值 1 : 值 2() 同 C+4.7 运算符优先级运算符优先级表优先级运算符结合性1() .从左到右2! +(正) -(负) + -从右向左3* / %从左向右-_4+(加) -(减)从左向右5> >>>从左向右6 >= instanceof从左向右7= !=从左向右8静态初始化时,也必须和数组的声明写在一起。 动态初始化二维数组动态初始化的语法格式:数据类型 数组名称 = new 数据类型第一维的长度第二维的长度;数据类型 数组名称;数组名称 = new 数据类型第一维的长度第二维的长度;如果需要初始化第二维长度不一样的二维数组,则格式:int n;n = new int2; /只初始化第一维的长度/分别初始化后续的元素n0 = new int4;n1 = new int3;引用数组元素格式为:数组名称第一维下标第二维下标6.5.4 获得数组长度m.length mi.length; 第七章 方法-_方法(method) ,在面向过程的语言中称作函数(function) 。7.1 方法概述功能主要有以下两个:结构化代码减少代码重复方法在书写时需要注意以下两点:逻辑严谨通用性强7.2 方法声明方法声明写在代码中类声明的内部,方法声明的外部,伪代码如下:public class Hello方法声明 1方法声明 2在 Java 语言中,方法声明之间没有顺序。方法声明,就是声 l;明一种新的功能,或者说创造一种新的功能。例如以下是一个求 int 数据绝对值的方法声明代码:Public intabs(int n)if(n > 0)return n;elsereturn n;-_这里就实现了求 int 值绝对值的功能,为了使该功能通用,使用一个参数 n代表需要求绝对值的数值,在方法内部使用求绝对值的逻辑:正数的绝对值是自身,负数的绝对值是相反数,使用 return 语句将方法运算的结果返回。语法格式:访问控制符 修饰符返回值类型 方法名称(参数列表) 方法体;1、访问控制符方法的访问控制符有四种,按可见范围从大到小依次是:public、protected,无访问控制符,private.其中无访问控制符不书写关键字即可。2、修饰符可选的:Static final abstract synchronized native 3、返回值类型包括基本数据类型和复合数据类型。不需要反馈结果,则 void.4、方法名称在方法调用时,需要方法名称来确定调用的内容。编码规范中,要求方法的首字母小写,而方法名称中单词和单词间隔的第一个字母大写,例如 BubbleSort.5、参数列表语法格式为:数据类型 参数名称 1,数据类型 参数名称 2,6、方法体-_需要返回结果值,则:return 结果的值;无结果返回时:return;如返回值类型不是 void,则可以使用 return 返回结果的值。如果返回值类型是void 时,可以使用 return 语句实现方法返回,而不需要返回值。7.3 方法声明示例7.3.2 数组排序功能要求:实现整数数组数据从小到大(升序)的排序简单分析:为了实现通用性,需要每次传递需要排序的数组进入方法内部,所以方法声明中需要有一个整型数组参数。为了直观,可以把排序以后的数组返回。说明:随着后续的学习,这个返回值不是必须的。代码如下:Public int BubbleSort(int m).Return m;7.4 方法调用方法声明是创建一个新的功能,声明出来的方法在需要的时候可以通过调用执行该方法的功能,方法只有被调用才能被执行。在 Java 程序中有一个基本的 main 方法,其方法声明如下:public static void main(String args)main 方法也称作 J2SE 程序的入口方法,在运行程序时,自动调用对应代码中的 main 方法开始程序的执行。函数如果需要得到执行,则需要直接或间接在-_main 方法中进行调用。方法调用的语法分为以下两种:一个类内部调用:指调用以及被调用的方法都在一个类的内部。不同类之间调用:指调用以及被调用的方法位于不同的类内部。由于类的概念现在还没有涉及到,所以这里只讲一个类内部的方法调用语法,关于不同类之间的方法调用则在后续的章节中进行介绍。7.4.1 一个类内部方法调用语法声明类的结构:public class 文件名在该声明后续大括号内部的代码,称作一个类的内部。在进行方法调用时,调用的语法格式和 static 修饰符有关,所以按照一个方法在声明时是否有 static 修饰分为两类:有 static 修饰的称作静态方法,没有 static 修饰的称作非静态方法这样一个类内部的方法调用就存在四种情况:1 在非静态方法内部调用非静态方法2 在非静态方法内部调用静态方法3 在静态方法内部调用静态方法4 在静态方法内部调用非静态方法前三种情况的调用都是直接调用,语法格式为:方法名(参数 1 值,) ;方法调用之间可以进行嵌套。int maxNumber = max(max(a,b) ,max(c,d) ) ;-_最后一种情况,也就是在静态方法内部调用非静态的结构在语法上则比较复杂,以下是一个简单的示例:public class CallMethod2public static void main(String args)CallMethod2 cm = new CallMethod2();int n = cm.max(1,2);public int max(int a,int b)if(a > b)return a;elsereturn b;其中:CallMethod2 cm = new CallMethod2() ;该行代码声明并创建了一个 CallMethod2 类型的对象 cm.接着的代码:int n = cm.max(1,2) ;7.5 方法相同Java 语言中的方法相同指方法名称和参数列表都相同,其中参数列表相同指参数个数、参数类型和参数排列顺序等相同,参数名称可以不相同。方法访问控制符、返回值类型可以不相同。以下是一下相同的方法:-_public void test(int a,double d)private int test(int i,double d1)在同一个类内部,不能声明相同的方法,否则将出现语法错误。7.6 方法重载方法重载指方法名相同,但是参数列表不同的多个方法。恰当的使用重载,可以增强代码的可维护性。以下是方法重载的示例:public void a(int a)public int a()public void a(int a,String s)通常情况下,重载的方法在访问控制符、修饰符和返回值类型上都保持相同。(非必须)7.7 参数传递按值传递(by value):八种基本数据类型和 String使用该方式传递的参数,参数原始的值不发生改变。按址传递(by address):除 String 以外的所有复合数据类型,包括数 组、类和接口在方法内部修改参数的值时,参数原始的值也发生改变。对于按值传递的参数需要修改参数的值:通过返回值修改参数的值或者按址传递时,不想修改参数的值:通过返回值修改参数的值下面是实现这两种方式时的示例代码。-_第八章 面向对象面向对象思想的基础是将相关的数据和方法放在一起,组合成一种新的复合数据类型,然后使用新创建的复合数据类型作为项目的基础。8.1 面向对象简介前面只是基础知识,面向对象则是和设计有关的知识。面向对象是先设计整然后细节。就像要制造一辆汽车,首先汽车要生产发动机、变速箱等模块,然后再去考虑每个模块的具体实现。整个系统(项目)则通过模块之间的互相关联运转起来,而每个模块只需要开放一个接口给其它的模块即可。面向对象编程中,划分出来的每个模块一般称为类(class) ,而模块内部的数据称为 field,一般称为属性,模块内部的功能一般称为方法(method) 。项目开发过程中,面向对象技术一般分为 3 个部分:l 面向对象分析(Object-Oriented Analysis,简称 OOA)该步骤按照面向对象的思考方式提取项目的需求信息,一般由系统分析员负责,本部分形成文档为项目需求分析说明书 。l 面向对象设计(Object-Oriented Design,简称 OOD)该步骤按照项目需求分析说明书进行模块划分,以及进行模块的概要设计,一般由高级程序员负责,本部分形成文档为项目概要设计说明书 。l 面向对象编程(Object-Oriented Programm,简称 OOP)该步骤按照项目概要设计说明书细化每个模块的结构,一般由程序员负责,本部分形成文档为项目详细设计说明书 。最后由编码员(Coder)按照项目详细设计说明书进行具体的编码。这个就是面向对象开发的标准过程的简单描述。而实际的程序开发过程中,则更关注于 OOP 部分,也就是实际实现时的具-_体设计以及编码的问题。面向对象技术除了这些设计方式以外,还有很多的概念和语法知识需要在编程时进行学习,下面以 Java 语言的语法为基础来介绍面向对象编程的内容。类(一)8.2.1 类的概念类是一组事物共有特征和功能的描述。组成项目的最基本的模块。类的概念是抽象的,只包含框架结构,不包含具体的数据。用户(