java学习从入门到精通

上传人:xgs****56 文档编号:10179803 上传时间:2020-04-10 格式:DOC 页数:488 大小:6.58MB
返回 下载 相关 举报
java学习从入门到精通_第1页
第1页 / 共488页
java学习从入门到精通_第2页
第2页 / 共488页
java学习从入门到精通_第3页
第3页 / 共488页
点击查看更多>>
资源描述
第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_10 CLASSPATH= .;C:Program FilesJavajdk1.6.0_10lib PATH= .;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 HelloWorld public 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,大小写均可,例如:123L 3、默认整数是十进制数字,八进制以0开头,例016,十六进制0x(大小写均可)开头,例如0xaf。3.4.3 小数型 没有特殊要求,一般选择double类型,运算速度要低于整数运算。类型名称关键字占空间(字节)取值范围默认值单精度浮点型float4-3.4E+383.4E+380.0f双精度浮点型double8-1.7E+3081.7E+3080.0 1、float类型需要在小数后加字母f,不区分大小写,例如1.01f. 2,小数都有一定的精度所以在运算时不够精确。Strictfp(精确浮点)3.4.4 字符型 字符型的值实际只是字符集中的编号,Java语言中使用Unicode字符集作为默认的字符集。 程序代码中,字符用一对单引号加上字符来标识,例如A、a等。也可以直接使用字符编码,也就是一个非负整数进行表示。类型名称关键字占用空间(字节)取值范围默认值字符型char20-216-10 说明:c+中为1B 1、不包含负数,可作为无符号整数使用,可以参与数学运算。 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 比较运算符符号名称功能说明 大于比较左侧数字是否大于右侧数字=大于等于比较左侧数字是否大于或等于右侧数字=小于等于比较左侧数字是否小于或等于右侧数字=等于比较左侧数字是否等于右侧数字!=不等于比较左侧数字是否不等于右侧数字 注意的问题: boolean类型只能比较相等和不相等,不能比较大小。 逻辑运算符的运算结果以及参与逻辑运算的数据是boolean类型。 表4-3 逻辑运算符符号名称功能说明&逻辑与两个条件同时为true才为true,否则为false|逻辑或两个条件有一个为true则为true,否则为false!逻辑非只操作一个数据,对数据取反说一下&和&的区别,对于&来说,如左侧为false,也会计算右侧,而对于&来说,如果左侧的条件为false,则不计算右侧 4.4 赋值运算符 char c = -100; /类型不匹配,无法自动转换,语法错误 常量只能赋值一次 赋值运算符可以组合算术运算符及后续将学习的位运算符,从而组成复合赋值运算符。赋值运算符和算术运算符组成的复合赋值运算符表4-4 复合赋值运算符符号名称功能说明+=加等把变量加上右侧的值然后再赋值给自身-=减等把变量减去右侧的值然后再赋值给自身*=乘等把变量乘以右侧的值然后再赋值给自身/=除等把变量除以右侧的值然后再赋值给自身%=取余等把变量和右侧的值取余然后再赋值给自身 复合赋值运算不会改变结果的类型,所以在有些时候运算在逻辑上会出现错误,但是符合计算中数值的表述。例如: byte b = 127; b += 1; System.out.println(b); 结果是-128,而不是128.原因: byte类型值127的机器数是01111111,0表示正数,后续的数值表示127 该数值加1后,得到的数值是10000000,二进制加法 而10000000在byte类型中恰好是-128的机器数表示形式其它类型的符合运算符也可能存在类似的情况,使用时需要注意。 4.5 二进制运算符 效率比数学运算符高的多,适用于网络编程、硬件编程等领域。 在Java代码中,直接书写和输出的数值默认是十进制,Java代码中无法直接书写二进制数值,但是可以书写八进制和十六进制数字。 在计算二进制运算时,Java语言的执行环境(JRE)首先将十进制的数字转换为二进制,然后进行运算。如果输出结果的值,则数字会被转换成十六进制进行输出。需要注意:1、正数的机器数是原码,负数的机器数是补码 2、整数型的计算结果都是int型,而不管是对byte还是short进行二进制运算。 4.5.1 位运算符4种:&(位与)、|(位或)、(异或)和(按位取反) l &(AND) 运算规则:参与运算的数字,低位对齐,高位不足的补零,对应的二进制位都为1,则运算结果为1,否则为0.适用场合:屏蔽数字中某一位或某些位。因为任何数和0与都是0. 2, | (OR)运算规则:参与运算的数字,低位对齐,高位不足的补零,对应的二进制位有一个为1则为1,否则为0.适用场合:将数字中某一位或某些位修改成1. 3, (XOR) 运算规则:参与运算的数字,低位对齐,高位不足的补零,对应的二进制位相同为零,不相同为1.适用场合:判断数字对应的位是否相同。4, (NOT) 运算规则:只操作一个数字,将该数字中为1的位变成0,为0的位变成1.适用场合:反转数字的内容4.5.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&(按位与)从左向右9从左向右10|从左向右11&从左向右12|从左向右13?:从右向左14= += -= *= /= %= &= |= = = = =从右向左 说明: 2、 结合性通常都是从左到右。从右向左的运算符最典型的就是负号,例如3+-4 3、 instanceof作用是判断对象是否为某个类或接口类型 4、 区分正负号和加减号,按位与和逻辑与的区别第五章 流程控制 5.1 流程控制基础 流程控制在程序语言实现时,通过三类控制语句进行实现:顺序语句 条件语句 if语句和switch语句 循环语句5.3 条件语句 5.3.1 if语句 if语句 if(条件表达式)功能代码块;if-else语句 if(条件表达式)快1;else块2;if-else if-else: if(条件1) 功能代码1; else if(条件2) 功能代码2; else if(条件3) 功能代码3; else功能代码; switch语句语法格式为: switch(表达式) case 值1:功能代码1;break; case 值2:功能代码2;break; default: 功能代码1;break; 语法说明: 1、 表达式的类型只能为byte、short、char和int这4种之一。2、 值1、值2值n只能为常数或常量,不能为变量。 while语句 语法格式变为: while(循环条件) 循环体;do-while语句语法格式为: do 循环体; while(循环条件);ava编程那些事儿37for语句语法for语句语法格式为: for(初始化语句;循环条件;迭代语句) 循环体;5.5 break和continue语句 break语句 break语句中断switch语句的执行,中断循环语句。 continue语句 continue只能在循环语句内部,功能是跳过该次循环,继续执行下一次循环结构。在while和do-while语句跳转到循环条件,for语句中跳转到迭代语句处。第六章 数组分为:一维数组和多维数组,主要有以下几点: 1、 数组中的元素类型必须相同。 2、 数组的长度一旦指定即不能改变。3、 数组中的值通过数组名和下标组合起来进行访问。数组声明 语法格式为: 数据类型 数组名称 或:数据类型 数组名称既可以放在数据类型的后面,也可以放在数组名称的后面。数组名称是一个标识符,可以根据需要设置其名称,在程序中使用该名称代表该数组。这两种声明的语法格式在实际使用时完全等价,可以根据习惯进行使用。数组声明以后在内存中不占用空间,数组是复合数据类型,默认null. 6.2.2 数组初始化 静态初始化char c = a,f,d; 只能在声明数组的同时进行静态初始化。 动态初始化 语法格式:数据类型 数组名称 = new 数据类型长度;例如: int m = new int10; 中括号内的数组长度值可以是数字也可以是整型变量,如是整型变量则不能为long型。动态初始化在内存中申请了对应长度的空间,而每个元素的值取数组数据类型对应的默认值。默认值的规定如下:boolean类型的默认值是false. 其它7种基本数据类型是0.说明:char的默认值是编码为0的字符, d、 复合数据类型的初始值是null.6.2.4 获得数组长度语法格式为:数组名称.length 多维数组基多维数组的声明: 数据类型 数组名称; 数据类型 数组名称; 数据类型 数组名称; 没有分配具体的存储空间,也没有设定数组的长度。 6.5.2 多维数组初始化 静态初始化 int m = 1,2,3, 2,3,4; 静态初始化时,也必须和数组的声明写在一起。 动态初始化 二维数组动态初始化的语法格式: 数据类型 数组名称 = 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;else return 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 CallMethod2 public 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; else return 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 inta() public void a(int a,String s) 通常情况下,重载的方法在访问控制符、修饰符和返回值类型上都保持相同。(非必须)7.7 参数传递 按值传递(by value):八种基本数据类型和String使用该方式传递的参数,参数原始的值不发生改变。 按址传递(by address):除String以外的所有复合数据类型,包括数 组、类和接口 在方法内部修改参数的值时,参数原始的值也发生改变。 对于按值传递的参数需要修改参数的值:通过返回值修改参数的值或者按址传递时,不想修改参数的值:通过返回值修改参数的值下面是实现这两种方式时的示例代码。 第八章 面向对象 面向对象思想的基础是将相关的数据和方法放在一起,组合成一种新的复合数据类型,然后使
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!