1、java全册配套最完整精品课件全册配套最完整精品课件2 JAVAJAVA程序设计程序设计 前言:程序设计语言介绍 n程序设计语言 n计算机能够识别的信息代码所组成的,能完整、 准确和规范地表达人们的意图,并用以指挥或控 制计算机完成预定任务的“符号系统” n机器语言 n汇编语言 n高级语言 nBASIC,FORTRAN,PASCAL,C,C+,Java, 1.1 JAVA1.1 JAVA概述概述(1)(1) Java 历史介绍: nBill Joy:在20世纪70年代末期创立了这种思想 n更多的文献: 1990 nJames Gosling: 拟开发先进软件系统的研究计划 (1990) nPa
2、trick Naughton: 绿色项目 (1990) nOak :开发消费性电器的利器 (1991.8) Oak(此研究计划最初的代称): 一种由Sun公司开发的 面向对象的编程语言 n1993: 设计一种盒子作为远程控件 n1994: Web浏览器,称为 HotJava浏览器 1.1.1 Java 历史介绍 1991 James Gosling 1995 1.1.2 Java 版本演变 Java 1.0 Java 1.1 Java 1.2 Java 1.3 Java 1.4 Java 1.5 (Java 5.0) Java 1 Java 2 1.1.3认证 nSCJP : Sun公司对Ja
3、va平台的程序员认证 nSCJD : Sun公司对Java平台的开发者认证 nSCEA: Sun公司对J2EE技术的企业架构师认证 1.1.4 Java 语言的应用前景 n所有面向对象的应用开发,包括面向对象的事件描 述、处理、综合等。 n计算过程的可视化、可操作化的软件的开发。 n动态画面的设计,包括图形图像的调用。 n交互操作的设计(选择交互、定向交互、控制流程 等)。 nInternet 的系统管理功能模块的设计,包括 Web 页 面的动态设计、管理和交互操作设计等。 nIntranet(企业内部网)上的软件开发(直接面向企 业内部用户的软件)。 n与各类数据库连接查询的 SQL 语句实
4、现。 n其他应用类型的程序。 1.1.5 Java 语言的特点 n简单 n面向对象 n分布性 n鲁棒性 n安全性 n体系结构中立 n可移植性 n解释执行 n高性能 n多线程 n动态性 1.1.6 Java和C、C+ n对于变量声明、参数传递、操作符、流 控制等,Java使用了和C、C+相同的传 统,使得熟悉C、C+的程序员能很方便 地进行编程。同时,Java为了实现其简单、 鲁棒、安全等特性,也摒弃了C和C+中 许多不合理的内容 1.1.7 Java 的分类 J2SE (Java 2 Standard Edition) J2EE (Java 2 Enterprise Edition) J2ME
5、 (Java 2 Micro Edition) n同一个版本的 Java,又分为三种套餐 标准版 (Standard Edition) 开发用户端程序开发用户端程序 企业版 (Enterprise Edition) 开发服务器端程序开发服务器端程序 微型版 (Micro Edition) 开发手机无线设备程序开发手机无线设备程序 1.1.8 常見的 Java IDE(一) nJava语言和其它高级语言一样需要有一语言和其它高级语言一样需要有一 个编程环境。为此,首先要安装个编程环境。为此,首先要安装Java平平 台,然后在该平台上应用台,然后在该平台上应用Java的编译系的编译系 统进行编程。
6、统进行编程。 常見的 Java IDE(二) Borland 最受最受欢欢迎之迎之 Java开发商业软件开发商业软件 IBM 最受最受欢欢迎之迎之 Open Source Java 商业软件商业软件 Sun Java 官方官方 IDE 常見的 Java IDE(三) 毫无疑问,使用集成开发环境有很多的优点, 无论是在调试程序的过程中,还是编译运行程序 都方便很多,所以一般的程序员都会选择一个集 成开发环境来开发程序。 著名的Java集成开发环境还有IBM公司的 Visual Age For Java、Microsoft公司的VJ+等。 对于初学者而言,集成开发环境的界面不能 太复杂。适合于初学
7、者学习的,应该是界面简单 一些,最好是不需要对开发环境做很多的设置的 软件。 1.2 Java开发平台及实例开发平台及实例 1.2.1 Java平台概述 Java平台由Java应用编程接口(Application Programming Interface,简称API)和Java虚拟机(Java virtual machine ,简 称JVM)构成。 Java应用编程接口是已编译的可在我们的程序中使用的代 码库。它们使我们能够添加现成的可定制的功能,以节约编 程时间。 般认为,Java虚拟机是建立在实际的处理器基础上的假 想的计算机。Java虚拟机规范为Java虚拟机(JVM)作了如下 定义:
8、在真实机器中用软件模拟实现的一种想象机器。Java虚 拟机代码被存储在.class文件中;每个文件都包含最多一个 public类。 Java虚拟机规范为不同的硬件平台提供了一种 编译Java技术代码的规范,该规范使Java软件独立 于平台,因为编译是针对作为虚拟机的“一般机器” 而做,这个“一般机器”可用软件模拟并运行于各 种现存的计算机系统,也可用硬件来实现。 Java程序并不是在本机操作系统上直接运行, 而是通过Java虚拟机向本机操作系统进行解释来运 行。这就是说,任何安装有Java虚拟机的计算机系 统都可以运行Java程序,而不论最初开发应用程序 的是何种计算机系统 1.2.2 Jav
9、a平台的安装 开始编写Java 程序前,需要在我们的计 算机系统中安装 Java 平台。 Java 平台可从 网站免费 下载,该网站上提供了免费的Java开发工具 集(Java Developers Kits,简称JDK),我们 可以在这里下载适合于我们计算机操作系统 的JDK,利用这些工具来开发Java程序 下載 JDK http:/ 1.2.3 第一个Java Application程 序 1 编辑源程序 我们可以不采用任何集成开发环境,只是采用文 本编辑器就可以编写简短的Java程序。 【例2.1】 第一个Java Application程序 /MyFirstApp.java publi
10、c class MyFirstApp public static void main(String args ) System.out.println(This is my first Java Application!); 本程序的作用是输出下面一行信息: This is my first Java Application! 在一个Java Application应用程序中,一定要有一 个类包含main方法。而在本范例中,首先用保留字 class来声明一个新的类,其类名为MyFirstApp,它 是一个公共类(public)。整个类定义由大括号括 起来。在该类中定义了一个main方法,这个方
11、法共 有三个修饰语,其意义分别如下: (1)public:表示这个类的main方法可以被所 有的对象使用。 (2)static:指明该方法是一个类方法,它可 以通过类名直接调用,表示main是属于这个类所使 用的方法,我们将之称为“静态方法”。 (3)void:表示main方法执行后不会传回任何 值。这一点是重要的,因为Java编程语言要进行谨 慎的类型检查,包括检查调用的方法确实返回了这 些方法所声明的类型。 对于一个应用程序来说,main方法是必需的, 而且必须按照如上的格式来定义。Java解释器在没 有生成任何实例的情况下,以main作为入口来执行 程序。Java程序中可以定义多个类,每
12、个类中可以 定义多个方法,但是最多只能有一个公共类,main 方法也只能有一个,作为程序的入口。main方法定 义中,括号中的String args是传递给main方法的参 数,参数名为args,它是String类的一个实例。参数 可以为0个或多个,每个参数用“类名 参数名”来 指定,多个参数间用逗号分隔。 对于本程序,还有以下值得注意的地方: (1)在main方法中,只有一条语句: System.out.println(This is my first Java Application!); 它用来实现字符串的输出,这条语句实现与C 语言中的printf语句相同的功能。这里实际上是利用 Ja
13、va应用编程接口(API)向控制台打印输出一行文 字。API中已经有了可以使用的控制台打印功能, 我们只需要提供要打印的文字。 这行程序所做的事是使用由System类的out成员 引用的PrintStream类的out对象的println方法,将字 串“This is my first Java Application!”打印到标准输 出上。 (2)语句 System.out.println(This is my first Java Application!); 的最后有一个分号(;),在Java编程语言中, 一个“;”代表一个语句的结束。 例如语句 totals=a+b+c+d+e+f+g
14、; 与语句 total=a+b+c+ d+e+f+g; 是等价的。 (3)在程序中出现了大括号(“”和“”), 它们是成对出现的,以 为边界的语句集合称为一 个块(block)。 语句块可被嵌套,在本例中,MyFirstApp类是 一个语句块;MyFirstApp类由main方法构成,main 这个方法也是一个语句块,它是一个独立单元,单 元本身又作为类MyFirstApp块中一部分。 (4)为了增强程序的可读性,在程序中有多处 空格,这不影响程序的执行。 Java程序中允许任意多的空白。 (5)在本程序中第一行“/”后的内容为 注释,进行编译时,这一行的从“/”开始的 所有内容会被忽略。 J
15、ava里有两种类型的注释。第一种是传统 的、C语言风格的注释,是从C+继承而来的。 这些注释用一个“/*”起头,随后是注释内容, 并可跨越多行,最后用一个“*/”结束;第二 种类型的注释也起源于C+,这种注释叫作 “单行注释”,以一个“/”起头,表示这一 行的从“/”开始的所有内容都是注释,这种 类型的注释更常用,因为它书写时更方便。 (6)程序名为MyFirstApp.java,和公共 类的类名相同(包括大小写都一致,唯一不 同的地方就是程序名有扩展名.java而类名没 有扩展名),这是因为Java解释器要求公共 类必须放在与其同名的文件中。 1.2.4 字节码的编译生成 程序必需转换为Ja
16、va虚拟机能够理解的形式, 这样,任何安装有Java虚拟机的计算机就可以解释 并运行该程序。编译Java程序是指:提取程序文件 中程序员可读的文本(亦称源代码)并把它转换成 字节码,字节码是提供给Java虚拟机的与平台无关 的指令。Java编译器是通过外壳操作系统中的命令 行进行调用的,下面对该程序进行编译,命令行调 用命令为: C:javac MyFirstApp.java 其中,“javac”是JDK工具包中提供的Java语 言编译器,输出结果为Java字节码。编译的结果是 生成字节码文件MyFirstApp.class。 需要留意的是,使用javac这个指令并没有打 开Java编译器里的
17、侦错功能,所以你无法在它编译 出来的字节码文件中找到与程序侦错有关的数据信 息。除非你用另外一个指令javac-g,它的编译结果 除了字节码文件外还会附带一些有用的除错资料, 可提供程序侦错时用。事实上“javac”提供了一些 指令参数供使用者编译时选用,各个参数代表不同 的功能,以下是常用的几个: (1)-calsspath :告知编译器何处去 引用其他的类型对象。这个设定会取代你原先在开 机执行文件里已说明过的环境变量CLASSPATH。 (2)-d :指示编译器将编译后的 执行码存放在特定的目录下,在这里要使用绝对路 径。 (3)-g:启动侦错功能。 1.2.5 字节码的解释与运行 现在
18、可以运行该程序了,用Java解释器来运行 该字节码文件: C:java MyFirstApp 其中,java是JDK工具包中提供的java解释器。 我们需留意的是,在这个指令行中文件名称不须附 上扩展名“.class”,因为解释器本身会自行加入。 源代码 公共类必须放在与其同名的文件中 / HelloWorldApp.java import java.util.*; 导入程序包 public class HelloWorldApp public static void main(String args) System.out.println(“Hello, world!”); 类方法,通过类名
19、可直接调用 参数(引数)列表 程序入口,整个程序只能有一个 main() 所有的类都可用此方法 类System提供程序访问系统资源的方法. System.in 代表键盘,System.out 代表监视器 注释 1.2.6 编译和运行 n安装 JDK: n设置 PATH=c:j2sdk1.4.1_01bin; n编译: javac HelloWorldApp.java n字节码: HelloWorldApp.class n运行: java HelloWorldApp n反编译: javap HelloWorldApp 本章小结 Java语言是一个广泛使用的面向对象的网络编程语言, 正在为越来越多
20、的人接受。Java语言最吸引人的地方就是 它的可移植性。传统的软件往往都是与具体的实现环境有 关,换了一个环境就需要作一番改动,耗时费力,而Java 语言能在执行码(二进制码)上兼容,这样以前所开发的 软件就能运行在不同的机器上,只要所用的机器能提供 Java语言解释器即可。 另外,需要强调的是,Java提供了丰富的类库,我们 只是讲解了最简单的Java程序的示例,就已经接触到了 Java的类库。可以说离开类库,Java程序设计者将寸步难 行。所以建议大家在清楚掌握了基本概念的基础上,尽量 加深对Java类库的了解。 学习导读学习导读 语言基础部分是学习语言基础部分是学习Java语言必须经过的
21、语言必须经过的 基础阶段,通过本部分的学习,应该能够对基础阶段,通过本部分的学习,应该能够对 Java程序的构成有一个基本的理解,能够灵活程序的构成有一个基本的理解,能够灵活 运用运用Java语言提供的各种数据类型和运算符。语言提供的各种数据类型和运算符。 面向对象的编程也是以面向过程编程为基础而面向对象的编程也是以面向过程编程为基础而 发展起来的,因为在对象的方法等程序片内部,发展起来的,因为在对象的方法等程序片内部, 仍然需要严格遵守传统的结构化程序设计原则,仍然需要严格遵守传统的结构化程序设计原则, 因此,熟练掌握结构化程序设计的三种基本流因此,熟练掌握结构化程序设计的三种基本流 程是进
22、一步学习程是进一步学习Java面向对象程序设计的基础。面向对象程序设计的基础。 2 Java语言基础 第一个 Java Application nJava Application 撰写流程 n源代码撰写 n存挡 n编译 n执行 第一个 Java Application n源代码撰写 /* * HelloWorldApp.java2006/02/10 * Use System.out.println to show “Hello World!” on the screen */ public class HelloWorldApp public static void main ( String
23、 args ) System.out.println(Hello World!);/ Print the string 注意:注意:Java 大小大小写写有分別有分別 第一个Java Application n存挡 n挡名:HelloWorldApp.java nHelloWorldApp: 习惯上与主类别同名 (若为 public 类別,則必须同名) n.java: 一定要使用 .java 作为附加名 n存放地点:C:JavaDemoCh02 第一个 Java Application n编译 njavac HelloWorldApp.java n执行 njava HelloWorldApp
24、n結果 nHello World! 回到原主題回到原主題 程序解释 nJava 程式结构 n注释 n主类 n进入点 (主函数) n在屏幕上印字 Java 程序结构 /* * HelloWorldApp.java2006/02/01 * Use System.out.println to show “Hello World!” on the screen */ public class HelloWorldApp public static void main ( String args ) System.out.println(“Hello World!”);/ Print the strin
25、g 注解注解主主程序程序 进入点进入点 程程序代码序代码 注解 /* * HelloWorldApp.java2006/02/01 * Use System.out.println to show “Hello World!” on the screen */ public class HelloWorldApp public static void main ( String args ) System.out.println(“Hello World!”);/ Print the string 蓝色粗体字部分为注解 注解 nJava 语言支持三种不同的注释方式 n/* 文字 */ - 多行
26、注释 n/* 文字 */ - 多行注释 n可利用 javadoc 工具將 /* */ 之间的文字抽出, 直接作成说明文件 n/ 文字 单行注释 注解 njavadoc n功能:产生说明文件 n格式: njavadoc HelloWorldApp.java njavadoc d C:MyDoc HelloWorldApp.java n外观: 回到原主題回到原主題 主程序 蓝色粗体字部份即为主类别。 Java 程序至少要有一个主类别,才能順利执行。 /* * HelloWorldApp.java2006/02/01 * Use System.out.println to show “Hello W
27、orld!” on the screen */ public class HelloWorldApp public static void main ( String args ) System.out.println(“Hello World!”);/ Print the string 主主程序程序 回到原主題回到原主題 进入点 /* * HelloWorldApp.java2006/02/01 * Use System.out.println to show “Hello World!” on the screen */ public class HelloWorldApp public
28、static void main ( String args ) System.out.println(“Hello World!”);/ Print the string 蓝色粗体字部份即为主进入点,为一个程序开始执行的地方。 Java 的进入点名称为 “main()” 函数 进入点 进入点 main(String args)voidstaticpublic 程式代码在此处 main:进入点的函数名称。一定要取名 “main” (String args): 传送给 main 的参数。所有的宣告与名称一定要如此写。 void: main 的传回值。void 代表不传回任何值。 static:
29、宣告 main 是一个静态函数。 public: 宣告 main 函数大家都可以存取。 : 将你想执行的程序填在此处。注意! Java 每行程序后方都要以分号 “;” 结 束。 回到原主題回到原主題 在屏幕上印字 System.out.println System 类别类别Out 变量变量 println 程序程序 System: java 提供的一个类別,其中定义了所有与标准输出入的相关动作。 out: System 类别中的一个变量。其形态为 PrintStream 类別 println: PrintStream 类別內的一个程序,由于 out 函数本身指向一个 PrintStream 物
30、件,所以我们能够通过 out 呼叫 println 程序。 回到原主題回到原主題 教学重点与难点教学重点与难点: nJava程序的构成 nJava的关键字、标识符、各种数据类型 n常量与变量 n运算符 n流程控制 前言前言 Java程序的构成程序的构成 Java语言的源程序代码由一个或多个编译单元 组成,每个编译单元可包含三个要素: (1)一个包声明(package statement,可选); (2)任意数量引入语句(import statements); (3)类的声明(class declarations)和接口声明 (interface declarations)。 该三要素必须以上述
31、顺序出现。也就是说任何 引入语句出现在所有类定义之前;如果使用包声明, 则包声明必须出现在类和引入语句之前。每个Java 的编译单元可包含多个类或接口,但是每个编译单 元最多只能有一个类或者接口是公共的。 第二章第二章 关键字、标识符、数据类型、关键字、标识符、数据类型、 常量与变量常量与变量 2.1 关键字关键字 关键字对Java编译器有特殊的含义,它 们可标识数据类型名或程序构造(construct) 名。 表2-1列出了在Java编程语言中使用的关 键字。 有关关键字值得我们注意的地方: (1)true、false和null为小写,而不是象在 C+语言中那样为大写。严格地讲,它们不 是关
32、键字,而是文字。然而,这种区别是理 论上的。 (2)无sizeof运算符,因为所有数据类型 的长度和表示是固定的,与平台无关,不是 象在C语言中那样数据类型的长度根据不同的 平台而变化。这正是Java语言的一大特点。 (3)goto和const不是Java编程语言中使用 的关键字。 2.2 标识符标识符 在Java编程语言中,标识符是赋予变量、 类或方法的名称。变量、函数、类和对象的 名称都是标识符,程序员需要标识和使用的 东西都需要标识符。标识符可从一个字母、 下划线(_)或美元符号($)开始,随后也 可跟数字、字母、下划线或美元符号。标识 符是区分大小写,没有长度限制,可以为标 识符取任意
33、长度的名字。 下面是几个有效的标识符: identifier thisone UserName User_name _system_varl $max 下面是几个非法的变量名: 3max (变量名不能以数字开头) room# (包含非法字符“#”) class (“class”为保留字) 标识符不能是关键字,但是它可以包含 关键字作为它的名字的一部分。例如, thisone是一个有效标识符,但this却不是, 因为this是一个Java关键字。 2.3 数据类型数据类型 Java编程语言有八个原始数据类型,可 分为以下四种: 1逻辑类逻辑类 boolean boolean 数据类型有两种文字值
34、:true和 false。 注意在Java编程语言中boolean类型只允 许使用boolean值,在整数类型和boolean类 型之间无转换计算。 在C语言中允许将数字值转换成逻辑值, 这在Java编程语言中是不允许的。 2字符类字符类 char 使用char类型可表示单个字符,字符是用单引 号括起来的一个字符,如a,B等。 Java中的字符型数据是16位无符号型数据,它 表示Unicode集,而不仅仅是ASCII集。 与C语言类似,Java也提供转义字符,以反斜 杠()开头,将其后的字符转变为另外的含义。 表2-2列出了Java中的转义字符。 值得注意的一点是,用双引号引用的文字,就 是我
35、们平时所说的字符串类型不是原始类型,而是 一个类(class)String,它被用来表示字符序列。字 符本身符合Unicode标准,且上述char类型的转义字 符适用于String。 3整数类整数类 byte,short,int,long 在Java编程语言中有四种整数类型,每种类型 可使用关键字byte, short, int和long中的任意一个进 行声明。所有Java编程语言中的整数类型都是带符 号的数字,不存在无符号整数。 整数类型的文字可使用十进制、八进制和十六 进制表示。首位为“0”表示八进制的数值;首位为 “0 x”表示16进制的数值。请看下面的例子: 5 表示十进制值5 075
36、 表示八进制数值75 (也就是十进制数61) 0 x9ABC 表示十六进制的数值9ABC (也就是十进制数39612) 整数类缺省为int类型,如在其后有一个字母 “L”表示一个long值(也可以用小写“l”)。由于 小写“l”与数字“1”容易混淆,因而,建议大家采 用大写“L”。 上面所说的整数long的形式如下: 5L 表示十进制值5,是一个long值 075L 表示八进制数值75,是一个long值 0 x9ABCL 表示十六进制的数值9ABC,是一个 long值 四种整数类型的存储空间长度、能表示的范 围是不一样的,如表2-3所示。 4浮点类浮点类 double,float 在Java编
37、程语言中有两种浮点类型:float和 double。如果一个数包括小数点或指数部分,或者 在数字后带有字母F或f(float)、D或d(double), 则该数为浮点数。如果不明确指明浮点数的类型, 浮点数缺省为double。下面是几个浮点数: 3.14159 (double型浮点数) 2.08E25 (double型浮点数) 6.56f (float型浮点数) 在两种类型的浮点数中,float为32位(单精 度),double为64位(双精度)。也就是说double 类型的浮点数具有更高的精度。 2.4 常量与变量常量与变量 在Java中,不同类型的数据既可以以常量的形式出现, 也可以以变量
38、的形式出现。 常量就是指在程序执行期间其值不能发生变化的数据, 常量是固定的。如整型常量123,实型常量1.23,字符常量 A,布尔常量true等。 变量的值则是可以变化的,它的定义包括变量名、变 量类型和作用域几个部分。注意以下几点: (1)变量名必须是一个合法的标识符。变量名应具有 一定的含义,以增加程序的可读性。 (2)变量类型可以为前面所说的任意一种数据类型。 (3)声明一个变量的同时也就指明了变量的作用域,变 量的作用域指明可访问该变量的一段代码。按作用域来分, 变量可以有下面几种:局部变量、类变量、方法参数、例 外处理参数。 局部(local)变量是在一个方法内定义的变量, 也被称
39、 作自动(automatic)、临时(temporary)或栈(stack)变 量。 当执行进入一个方法时,局部变量被创建,当执行离 开该方法时,局部变量被清除,它的作用域为它所在的代 码块(整个方法或方法中的某块代码)。在成员函数内定 义的变量对该成员变量是“局部的”,因而,你可以在几 个成员函数中使用相同的变量名而代表不同的变量。 在一个确定的域中,变量名应该是唯一的。通常,一个 域用大括号“”和“”来划定。 (4)下面是几个变量的声明: int a,b,c; /定义a,b,c为int型变量 double d,e; /定义d,e为double型变量 float f=2.5,g=5.8; /
40、定义f,g为float型变量, 并赋初值 其中,多个变量间用逗号隔开。 (5)在Java程序中声明变量后,需给该变量 赋值。可用赋值语句来初始化变量任何变量 都不能没有初始值(否则,则无法通过编译)。 赋值方式如下:将已声明的变量名放在左边, 然后是等号(),右边是有适当值的Java表达 式。 它的意思是“取得右边的值,把它复制到左 边”。右边的值可以是任何常数、变量或者表达 式,只要能产生一个值就行。但左边的值必须是 一个明确的、已命名的变量。如: int a; /这是声明 a=45; /这是赋值 char c; /这是声明 c=y; /这是赋值 相对于一个方法的“局部”变量,如果在初始 化
41、之前想使用它,编译器会提示出错,如下面这 样就是不允许的: void f()() int i; i=i+1; 当一个对象被创建时,实例变量在分配存储 器的同时被值初始化。初始化值如表2-4所示。 下面给出几个Java程序的例子,使大家对数 据类型进一步加深理解。 【例2.1】 Java中变量的作用域 学习变量有效范围 n变量有效范围= 宣告处 所属下大括号为止 class HelloWorld int x; public static void Count (int x) int x; catch (int x) 主主程序程序 方法方法 例外例外处理器处理器 成员变量成员变量 方法方法参数参数
42、 区域变量区域变量 例外例外处理器参数处理器参数 第三章第三章 运算符和表达式运算符和表达式 按照运算符功能来分,基本的运算符分包括算术 运算符、关系运算符、逻辑运算符、位运算符、赋 值运算符、条件运算符等。 3.1 算术运算算术运算 算术运算符包括加号(+)、减号(-)、乘号 (*)、除号(/)、取模(%)、自增运算符(+)、 自减运算符(-)等。 在算术运算中,有以下值得注意的地方: (1)算术运算符的总体原则是先乘除、再加减, 括号优先。 (2)整数除法会直接砍掉小数,而不是进位。 (3)与C语言不同,对取模运算符%来说,其操作数 可以为浮点数。如:37.2%10=7.2。 (4)Jav
43、a也用一种简写形式进行运算,并同时进行赋 值操作。例如,为了将10加到变量x,并将结果赋给x,可 用:x+=10。 (5)Java对加运算符进行了扩展,使它能够进行字符 串的连接,如abc+def,得到串abcdef。 (6)前缀+、-与后缀+、-的区别: +i(前缀+)在使用i之前,使i的值加1,因此执行 完+i后,整个表达式和i的值均为i+1; i+(后缀+) 在使用i之后,使i的值加1,因此执行完i+后,整个表达 式的值为i,而i的值变为i+1。 -i在使用i之前,使i的减1,因此执行完-i 后,整个表达式和i的值均为i-1;i-在使用i之 后,使i的减1,因此执行完i-后,整个表达式
44、的值为i,而i的值变为i-1。 【例3.1】 Java中算术运算符的使用 1) 假设a=5,b=10,计算表达式:c=(a+)*(-b) 计算过程:a先使用再加1,b先减1再使用, 所以结果为: b=b-1=9, c=a*b=45, a=a+1=6 【例3.1】Java中算术运算符的使用(二) npublic class ArithOp n n public static void main(String args) n n int a=7+2; /a=9 n int b=a*2; /b=18 n int c=b/9; /c=2 n int d=-a; /d=-9 n int e=d%2; /
45、e=-1 n double f=17.5%4;/f=1.5 n int i=2; n int j=i+; /i=3,j=2 n int k=+i; /i=4,k=4 n System.out.println(a=+a); n System.out.println(b=+b); n System.out.println(c=+c); n System.out.println(d=+d); n System.out.println(e=+e); n System.out.println(f=+f); n System.out.println(i=+i); n System.out.println(
46、j=+j); n System.out.println(k=+k); n n 3.2 关系运算关系运算 关系运算符用来比较两个值,返回布尔类型的 值true或false。关系运算符都是二元运算符,如 表3-1所示。 对“或运算”如果运算符左边的表达式的 值为true,则整个表达式的结果为true,不必 对运算符右边的表达式再进行运算;同样,对 “与运算”,如果左边表达式的值为false, 则不必对右边的表达式求值,整个表达式的结 果为false。 3.3 位运算位运算 在Java语言中,位运算符有按位与运算符( b=a与与) 运算符执行一个右移位(带符号),左边按 符号位补0或1例如: int
47、 a=16,b; b=a2;/b=4 运算符同样是执行一个右移位,只是它执 行的是不带符号的移位。也就是说对以补码表示 的二进制数操作时,在带符号的右移中,右移后 左边留下的空位中添入的是原数的符号位(正数 为0,负数为1);在不带符号的右移中,右移后 左边留下的空位中添入的一律是0。 【例例3.2】 Java中位运算符的使用中位运算符的使用 【例例3.2】Java中位运算符的使用中位运算符的使用 (1) public class BitwiseOP public static void main (String args) int x, y; x = 44; y = 2; System.ou
48、t.println(Test AND - + (x System.out.println(X = + x); x = 44; y = 2; System.out.println(Test OR - + (x | y); System.out.println(X = + x); 【例例3.2】 Java中位运算符的使用中位运算符的使用(2) x = 44; y = 2; System.out.println(Test COMPLEMENT - + (x); System.out.println(X = + x); x = 44; y = 2; System.out.println(Test XO
49、R - + (x y); System.out.println(X = + x); x = 44; y = 2; System.out.println(Test Shift Right - + (x y); System.out.println(X = + x); 【例例3.2】 Java中位运算符的使用中位运算符的使用(3) x = -44; y = 2; System.out.println(Test Shift Right - + (x y); System.out.println(X = + x); x = 44; y = 2; System.out.println(Test Shift Left - + (x + (x + (x y); System.out.println(X = + x); x = -44; y = 2; System.out.println(Test Shift Right without Sign - + (x y); System.out.println(X = + x); 【例例3.2】Java中位运算符的使用中位运算符的使用(5) npublic class BitOp n n public static void main(String args) n n int a=9; /二进制数1001 n int b=15; /二进制数1111