Java基础教程ppt课件汇总(完整版).ppt
第第1章章 Java语言概述语言概述本章的主要内容:本章的主要内容:1.1 Java1.1 Java语言的发展里程语言的发展里程1.2 java 1.2 java 的特点的特点1.3 1.3 平台无关性平台无关性1.4 Java1.4 Java虚拟机虚拟机JVMJVM1.5 Java 1.5 Java 与与C/C+C/C+之关系之关系1.6 Java1.6 Java运行平台运行平台1.7 Java1.7 Java程序开发程序开发1.8 Java 1.8 Java 开发工具箱开发工具箱1.9 JDK1.51.9 JDK1.5编译器的新规定编译器的新规定1.1 Java语言的发展里程语言的发展里程JavaJava语言前身是语言前身是OakOak语言,于语言,于19911991年推出,但年推出,但仅限于仅限于Sun MicrosystemsSun Microsystems公司内部使用。公司内部使用。19951995年年OakOak语言改名为语言改名为“Java”“Java”,并正式向公众推,并正式向公众推出,主要贡献者是出,主要贡献者是James GoslingJames Gosling。1.21.2版本的版本的JavaJava是是JavaJava语言发展过程中一个关语言发展过程中一个关键阶段,从此,键阶段,从此,SunSun公司将公司将JavaJava更名为更名为Java2Java2。经过十年的发展,经过十年的发展,JavaJava语言已经发展到语言已经发展到1.61.6版版本。本。1.2 java 的特点的特点(1/4)1 1语法简单语法简单(1 1)JavaJava的风格类似于的风格类似于C+C+(2 2)JavaJava摒弃了摒弃了C+C+中容易引发程序错误的地方,中容易引发程序错误的地方,如指针和内存管理;如指针和内存管理;(3 3)JavaJava提供了丰富的类库。提供了丰富的类库。2 2面向对象面向对象面向对象编程是一种先进的编程思想,更加容易解面向对象编程是一种先进的编程思想,更加容易解决复杂的问题。面向对象可以说是决复杂的问题。面向对象可以说是JavaJava最重要的特最重要的特性。性。JavaJava语言的设计完全是面向对象的,语言的设计完全是面向对象的,1.2 java 的特点的特点(2/4)3 3分布式分布式JAVAJAVA从诞生就起就与网络联系在一起,它强调网络特性,内从诞生就起就与网络联系在一起,它强调网络特性,内置置TCP/IPTCP/IP,HTTPHTTP,FTPFTP协议类库,便于开发网上应用系统。协议类库,便于开发网上应用系统。4 4安全性安全性(1 1)在)在JavaJava语言里,象指针和释放内存等语言里,象指针和释放内存等C+C+功能被删除,功能被删除,避免了非法内存操作。(避免了非法内存操作。(2 2)当)当JavaJava用来创建浏览器时,语言用来创建浏览器时,语言功能和一些浏览器本身提供的功能结合起来,使它更安全。功能和一些浏览器本身提供的功能结合起来,使它更安全。JavaJava语言在机器上执行前,要经过很多次的测试。其三级安语言在机器上执行前,要经过很多次的测试。其三级安全检验机制可以有效防止非法代码侵入,阻止对内存的越权全检验机制可以有效防止非法代码侵入,阻止对内存的越权访问。访问。5 51.2 java 的特点的特点(3/4)5 5健壮性健壮性JavaJava致力于检查程序在编译和运行时的错误。异常致力于检查程序在编译和运行时的错误。异常检查可尽早的发现可能存在的错误。类型检查帮助检查可尽早的发现可能存在的错误。类型检查帮助检查出许多开发早期出现的错误。检查出许多开发早期出现的错误。6 6解释运行,高效率解释运行,高效率JavaJava解释器(运行系统)能直接运行目标代码指令。解释器(运行系统)能直接运行目标代码指令。JavaJava程序经编译器编译,生成的字节码经过精心设程序经编译器编译,生成的字节码经过精心设计,并进行了优化,因此运行速度较快,客服了以计,并进行了优化,因此运行速度较快,客服了以往解释性语言运行效率低的缺点。往解释性语言运行效率低的缺点。1.2 java 的特点的特点(4/4)7 7与平台无关与平台无关JAVAJAVA编译器将编译器将JAVAJAVA程序编译成二进制代码,即字节码。字节程序编译成二进制代码,即字节码。字节码有统一的格式,不依赖于具体的硬件环境。码有统一的格式,不依赖于具体的硬件环境。8 8多线程多线程JavaJava提供的多线程功能使得在一个程序里可同时执行多个小提供的多线程功能使得在一个程序里可同时执行多个小任务。任务。9 9动态性动态性JavaJava的动态特性是其面向对象设计方法的发展。它允许程序的动态特性是其面向对象设计方法的发展。它允许程序动态地装入运行过程中所需要的类。动态地装入运行过程中所需要的类。1.3 平台无关性平台无关性(1/2)平台无关类型包括源代码级和目标代码级两种类型。平台无关类型包括源代码级和目标代码级两种类型。C C和和C+C+属于源代码级平台无关,意味着用其写的应用程序不属于源代码级平台无关,意味着用其写的应用程序不用修改只需重新编译就可以在不同平台上运行。用修改只需重新编译就可以在不同平台上运行。JavaJava属于目标代码级平台无关,主要靠属于目标代码级平台无关,主要靠JavaJava虚拟机虚拟机JVMJVM来实现。来实现。对高级语言的翻译方式有解释和编译两种对高级语言的翻译方式有解释和编译两种解释方式就是一边翻译一边运行解释方式就是一边翻译一边运行而编译方式则是一次性翻译好,生成目标程序。而编译方式则是一次性翻译好,生成目标程序。1.3 平台无关性平台无关性(2/2)解决移植性的方法有以下两种方式:解决移植性的方法有以下两种方式:方式方式1 1:到一台机器上将源程序重新编译成适合该:到一台机器上将源程序重新编译成适合该台机器的机器代码。台机器的机器代码。方式方式2 2:将高级语言源程序编译成一种与机器无关:将高级语言源程序编译成一种与机器无关的中间代码(如的中间代码(如JavaJava语言的字节码),该中间代码语言的字节码),该中间代码程序不能被操作系统直接执行,需要由解释其来解程序不能被操作系统直接执行,需要由解释其来解释和执行。释和执行。JavaJava语言采用方式语言采用方式2 2,将由解释程序扩展了的,将由解释程序扩展了的指令系统的机器称为指令系统的机器称为JavaJava虚拟机,简称虚拟机,简称JVMJVM。1.4 Java虚拟机虚拟机JVM虚拟机虚拟机是一种对计算机物理硬件计算环境的软件实现。是一种对计算机物理硬件计算环境的软件实现。虚拟机是一种抽象机器,内部包含一个解释器虚拟机是一种抽象机器,内部包含一个解释器(InterpreterInterpreter),可以将其它高级语言编译为虚拟),可以将其它高级语言编译为虚拟机的解释器可以执行的代码(称这种代码为中间语言机的解释器可以执行的代码(称这种代码为中间语言 Intermediate LanguageIntermediate Language),实现高级语言程序的可),实现高级语言程序的可移植性平台无关性移植性平台无关性 (System IndependenceSystem Independence),无论),无论是运行在嵌入式设备还是多个处理器的服务器上,虚是运行在嵌入式设备还是多个处理器的服务器上,虚拟机都执行相同的指令,所使用的支持库也具有标准拟机都执行相同的指令,所使用的支持库也具有标准的的APIAPI和完全相同或相似的行为。和完全相同或相似的行为。1.4 Java虚拟机虚拟机JVMJavaJava虚拟机虚拟机(Java Virtual MachineJava Virtual Machine,简称,简称JVMJVM)是)是一种抽象机器,它附着在具体操作系统上,本身具有一种抽象机器,它附着在具体操作系统上,本身具有一套虚拟机器指令,并有自己的栈,寄存器等,运行一套虚拟机器指令,并有自己的栈,寄存器等,运行JAVAJAVA程序不可少的机制。编译后的程序不可少的机制。编译后的JAVAJAVA程序指令并不程序指令并不直接在硬件系统直接在硬件系统CPUCPU上执行,而是在上执行,而是在JVMJVM执行。在执行。在JVMJVM上有一个上有一个JavaJava解释器用来解释解释器用来解释JavaJava编译器编译后的程编译器编译后的程序。任何一台机器只要配备了解释器,就可以运行这序。任何一台机器只要配备了解释器,就可以运行这个程序,而不管这种字节码是在何种平台上生成的。个程序,而不管这种字节码是在何种平台上生成的。图1-1 计算机硬件、操作系统、JVM与各种可执行程序之间的关系机器代码机器代码硬件硬件操作系统操作系统JVM本地可执行文件本地可执行文件(.exe,.com文件)文件)Java字节码文件字节码文件(.class文件)文件)1.4 Java虚拟机虚拟机JVMJVM体系结构图体系结构图类装载器字节码解释器安全管理器垃圾收集器线程管理图形Java虚拟机虚拟机操作系统操作系统字节码*.class 文文件件图1-2 Java虚拟机体系结构示意图1.5 Java 与与C/C+之关系之关系相近之处相近之处JavaJava中许多基本语句的语法和中许多基本语句的语法和C+C+一样,像常用的一样,像常用的循环语句、控制语句等和循环语句、控制语句等和C+C+几乎一样几乎一样JavaJava和和C+C+是两种完全不同的语言是两种完全不同的语言1.5 Java 与与C/C+之关系之关系不同之处不同之处JavaJava去掉了去掉了C+C+语言的许多功能,语言的许多功能,JavaJava中没有中没有#include#include 和和#define#define 等预处理功能,用等预处理功能,用importimport语来语来句包含其它类和包;句包含其它类和包;JavaJava中没有中没有structurestructure,unionunion及及typedeftypedef;JavaJava中没有不属于类成员的函数,没有指针和多重中没有不属于类成员的函数,没有指针和多重继承,继承,JavaJava只支持单重继承;只支持单重继承;JavaJava中禁用中禁用gotogoto,但,但gotogoto还是保留的关键字;还是保留的关键字;JavaJava中没有操作符重载;中没有操作符重载;JavaJava中没有全局变量,可以在类中定义公用、静态中没有全局变量,可以在类中定义公用、静态的数据成员实现相同功能。的数据成员实现相同功能。1.6 Java运行平台运行平台1 1三种平台简介三种平台简介 J2SEJ2SE:JavaJava标准版或标准版或Java Java 标准平台。标准平台。J2SE J2SE 提供了提供了标准的标准的SDKSDK开发平台(以前称做开发平台(以前称做JDKJDK开发平台)。开发平台)。J2EEJ2EE:JavaJava企业版或企业版或JavaJava企业平台。企业平台。J2MEJ2ME:JavaJava微型版或微型版或JavaJava小型平台。小型平台。2安装安装J2SE平台平台简介简介JDK版本版本发布日期发布日期版本说明及主要内容版本说明及主要内容JDK 1.0a21995.05正式对外发布正式对外发布JDK 1.0.21996.01标准的标准的I/OI/O库、网络库、库、网络库、appletapplet、文件、文件I/OI/O以及基本的窗口库等以及基本的窗口库等JDK1.11997.02内部类、新的事件处理模型、内部类、新的事件处理模型、RMIRMI、JavaBeanJavaBean,JDBC JDBC、串行化、串行化、国际化、日历类以及性能改进等国际化、日历类以及性能改进等JDK 1 21998.12浮点运算改进、浮点运算改进、String GUIString GUI库、集合、库、集合、Java 2DJava 2D图形、可访问性图形、可访问性 (可视化(可视化GUIGUI支持)、引用对象以及性能改进等支持)、引用对象以及性能改进等JDK 1.32000.05性能改进、性能改进、CORBACORBA兼容性、兼容性、JavaJava音频支持以及音频支持以及JNDIJNDI等等JDK1.42001.12断言语句、断言语句、6464位地址空间(位地址空间(Solaris Solaris),新的,新的I/OI/O库、模式匹配、库、模式匹配、鼠标滑轮支持、鼠标滑轮支持、IPv6IPv6,XML XML,WebStart WebStart支持、性能改进及命支持、性能改进及命名为名为MerlinMerlin的代码等的代码等JDK1.52003.07通用性(代码模块)、允许一些云算符重载以及命名为通用性(代码模块)、允许一些云算符重载以及命名为TigerTiger的代的代码等码等1.6 Java运行平台运行平台3 3环境变量环境变量JAVA_HOMEJAVA_HOME为那些需要使用为那些需要使用JavaJava命令和命令和JVMJVM的程序提的程序提供了通用的路径信息,其值应设置为供了通用的路径信息,其值应设置为JDKJDK的安装目的安装目录的路径,录的路径,JAVA_HOME=C:jdk1.5 JAVA_HOME=C:jdk1.5CLASSPATHCLASSPATH用于指明字节码文件的位置。用于指明字节码文件的位置。CLASSPATH=c:jdk1.5jrelibrt.jar;.PATHPATH是操作系统使用的变量,用于搜索在是操作系统使用的变量,用于搜索在ShellShell中中输入的希望执行的命令。输入的希望执行的命令。Java编译器编译器源文件源文件编辑器编辑器字节码字节码文件文件由由Web浏览器浏览器执行执行文件名文件名.java产生产生对于对于Java小小应用程序应用程序对于对于Java应用程序应用程序由由Java解释器执行解释器执行图1-1 Java程序开发过程示意图1.7 Java程序开发程序开发1.7 Java程序开发程序开发1 1JavaJava应用程序的开发应用程序的开发编写源文件编写源文件EditplusEditplus等文本编辑器生成等文本编辑器生成Hello.javaHello.java编译源文件生成字节码编译源文件生成字节码 javac Hello.java javac Hello.java加载运行字节码加载运行字节码 java Hello java Hello/Hello.javapublic class Hello public static void main(String args)System.out.println(你好,很高兴学习Java);C:javac Hello.javaC:java Hello1.7 Java程序开发程序开发2 2Java AppletJava Applet程序的开发程序的开发编写源文件编写源文件 Editplus Editplus等文本编辑器等文本编辑器Boy.javaBoy.java编译源文件生成字节码编译源文件生成字节码 javac Boy.java javac Boy.java通过浏览器加载运行字节码通过浏览器加载运行字节码 Html Html文件文件myBoy.htmlmyBoy.html 或appletviewew myboy.htmlappletviewew myboy.html/Boy.javaimport java.applet.*;import java.awt.*;public class Boy extends Applet public void paint(Graphics g)g.setColor(Color.blue);g.drawString(Java是一门很优秀的语言是一门很优秀的语言,12,30);g.setColor(Color.red);g.drawString(我一定认真学习我一定认真学习Java,22,56);/myBoy.html C:javac Boy.javaC:appletviewew myboy.html1.8 Java 开发工具箱开发工具箱Java Java 开发工具箱开发工具箱(JDK-Java Development Kit)(JDK-Java Development Kit)是是SunSun公司为用户提供的集成和执行公司为用户提供的集成和执行appletsapplets和应用程序和应用程序的工具的工具javac javac 编译器:可以用任何文字编辑器创建编译器:可以用任何文字编辑器创建JavaJava程序程序java java 翻译器翻译器;用于执行编译过的用于执行编译过的 Java Java应用程序。应用程序。appletviewer:appletviewer:可运行可运行appletsapplets而不必运行而不必运行 Web Web浏览器。浏览器。javapjavap反汇编程序反汇编程序:从字节码文件恢复从字节码文件恢复javajava原代码。原代码。javadocjavadoc工具工具:可以为所编写的源文件生成可以为所编写的源文件生成HTMLHTML文档文档1.9 JDK1.5编译器的新规定编译器的新规定JDK1.5JDK1.5的编译器的编译器javac.exejavac.exe和以前版本的编译和以前版本的编译器有了一个很大的不同,不再向下兼容,也就器有了一个很大的不同,不再向下兼容,也就是说,如果在编译源文件时没有特别约定的话,是说,如果在编译源文件时没有特别约定的话,用用JDK1.5JDK1.5的编译器生成的字节码只能在安装了的编译器生成的字节码只能在安装了JDK1.5JDK1.5或或JRE1.5JRE1.5的的JavaJava平台环境中运行。平台环境中运行。第第2章章 Java语言基础语言基础2.1 Java程序概况2.2 基本数据类型2.3 运算符和表达式2.4 Java语句2.1 Java程序概况程序概况2.1.1 Java程序结构2.1.2 Java注释2.1.3 Java关键字2.1.4 Java标识符2.1.5 变量与常量2.1.1 Java程序结构程序结构Java源程序一般由一个或多个编译单元组成,每个编译单元只能包含以下内容(空格和注释除外):packagepackage包语句包语句importimport导入语句导入语句 类的声明类的声明 接口声明接口声明图2-1 Java程序中各元素及其关系注释注释0.npackage0.1import0.n成员变量成员变量0.n方法方法0.n局部变量局部变量0.n执行语句执行语句0.n类类1.nJava程序程序2.1.1 Java程序结构程序结构2.1.1 Java程序结构程序结构一个简单的Java程序示例。/*/*这是一个简单的这是一个简单的JavaJava程序示例程序程序示例程序*/*/package mypack;package mypack;import java.util.*;import java.util.*;public class Example public class Example public static void main(String args)public static void main(String args)System.out.println(Java System.out.println(Java欢迎您!欢迎您!););2.1.2 Java注释注释方式1:/注释一行例如:例如:num=2;/num num=2;/num是计算器,用于累计选课人数是计算器,用于累计选课人数方式2:/*一行或多行注释*/例如:例如:/*/*本方法用于计算阶乘本方法用于计算阶乘*/*/方式3:/*文档注释*/文档注释一般放在一个变量或函数定义说明之前文档注释一般放在一个变量或函数定义说明之前,表示该段注释应表示该段注释应包含在自动生成的任何文档中(即由包含在自动生成的任何文档中(即由javadocjavadoc生成的生成的HTMLHTML文件)。文件)。这种注释都是声明条目的描述。这种注释都是声明条目的描述。2.1.3 Java关键字关键字abstractconstfinallyinterfacereturnthrowbooleancontinuefloatlongsafetransientbreakdefaultfornativeshorttruebydogotonewstatictrybytedoubleifnullsupervaluecaseelseimplementspackageswitchvoidcatchextendsimportprivatesynchronizedvolatilecharfalseinstanceofprotectedthiswhileclassfinalintpublicthread2.1.4 Java标识符标识符用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符。由字母、下划线、美元符号和数字组成,并且第一个由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字。字符不能是数字。标识符中的字母是区分大小写的例子:判断正误标识符中的字母是区分大小写的例子:判断正误(1)3max (2)class(1)3max (2)class(3)room#(4)userName(3)room#(4)userName(5)User_name(5)User_name2.1.5 变量与常量变量与常量Java变量是一个由标识符命名的项。变量具有一定类型,例如 int 型或class型,也具有作用域,其值可被改变。变量声明的语法形式如下:变量声明的语法形式如下:varType varName=value,varName=value;varType varName=value,varName=value;double area,r;double area,r;在变量声明格式前加上final修饰符,就声明了一个常量。常量一旦被初始化以后就不可改变。常量声明的语法形式如下:常量声明的语法形式如下:final varType varName=value,varName=value;final varType varName=value,varName=value;2.2 基本数据类型基本数据类型2.2.1 基本数据类型概况 1132.2.2 基本数据类型转换 1162.2.1 基本数据类型概况基本数据类型概况基本数据类型也称作简单数据类型,Java语言有8种简单数据类型,分别是:boolean、byte、short、int、long、float、double、char。复合数据类型包括数组、类和接口等。图图2-2 Java语言数据类型语言数据类型数值类型数值类型整数类整数类 int,byte,short,long 浮点类浮点类 double,float逻辑类逻辑类 boolean字符类字符类 char数组数组 type类类 class接口接口 interface数数据据类类型型基本基本数据数据类型类型复合复合数据数据类型类型2.2.1 基本数据类型概况基本数据类型概况1逻辑类型常量:常量:true true,falsefalse。变量的定义:使用关键字变量的定义:使用关键字booleanboolean来定义逻辑变量,定来定义逻辑变量,定义时也可以赋给初值。义时也可以赋给初值。例如:例如:boolean xboolean x;/定义逻辑型变量定义逻辑型变量x xboolean x=false;/boolean x=false;/定义逻辑型变量定义逻辑型变量x x,并赋值为,并赋值为falsefalse2.2.1 基本数据类型概况基本数据类型概况2整数类型常量:常量:123123,60006000(十进制),(十进制),077(077(八进制八进制),0 x3ABC0 x3ABC(十六进制十六进制)。整型变量的定义分为整型变量的定义分为4 4种种类型类型举例举例字节长度字节长度bytebyte x,y=1;1shortshort x,y=2;2intint x,y=3;4longlong x,y=4;82.2.1 基本数据类型概况基本数据类型概况3字符类型常量:常量:unicode unicode字符表中的字符就是一个字符常量字符表中的字符就是一个字符常量例如例如AA,?,99,好好,等。,等。JavaJava还使用转意字符常量,如:还使用转意字符常量,如:nn为换行转意字为换行转意字符常量。符常量。变量的定义:使用关键字变量的定义:使用关键字charchar来定义字符变量来定义字符变量例如:例如:char x=Achar x=A,漂亮,漂亮=假假,jiafeijiafei;特别提示:特别提示:一个一个unicodeunicode字符占字符占2 2个字节个字节charchar型变量,内存分配给型变量,内存分配给2 2个字节,占个字节,占1616位,最高位不是位,最高位不是符号位,没有负数的符号位,没有负数的charchar。charchar型变量的取值范围是型变量的取值范围是0-655360-65536。2.2.1 基本数据类型概况基本数据类型概况4浮点类型浮点类型包括浮点类型包括float float 型和型和doubledouble型。浮点型数值缺省型。浮点型数值缺省为为doubledouble型,型,floatfloat型在数值之后加型在数值之后加f f或或F F例如,例如,float float 型常量:型常量:453.5439f453.5439f,21379.987F21379.987F,2e40f2e40f,doubledouble型常量:型常量:21389.5439d21389.5439d(d d可以省略),可以省略),6e-1406e-140。float float 型变量的定义:型变量的定义:float x,y=22.76f;float x,y=22.76f;doubledouble型变量的定义:型变量的定义:double x,y=12.76double x,y=12.762.2.2 基本数据类型转换基本数据类型转换含义:一种基本数据类型变量转变成另一种基本类型变量。类型转换方式:窄化和拓宽转换。拓宽(拓宽(WideningWidening)转换编译时可以自动执行拓宽转换转换编译时可以自动执行拓宽转换(称为(称为PromotionPromotion,提升)。,提升)。窄化(窄化(NarrowingNarrowing)转换则总是要求显式执行强制转换转换则总是要求显式执行强制转换(称为(称为CastCast,转型)。,转型)。JavaJava语言中不同类型之间不能相互赋值语言中不同类型之间不能相互赋值,同种类型低,同种类型低精度值可以赋给高精度变量,反之则需要使用强制类精度值可以赋给高精度变量,反之则需要使用强制类转换,此时可能导致数据精度的损失。转换,此时可能导致数据精度的损失。2.2.2 基本数据类型转换基本数据类型转换数据精度从“低”到“高”排序:byte byteshortshort(charchar)int intlonglongfloatfloatdoubledouble规则1:当把精度低的变量的值赋给精度高的变量时,系统自动完成数据类型的转换,如int型转换成long型规则2:当把精度高的变量的值赋给精度低的变量时,必须使用显示类型转换运算。(类型名)要转换的值;int x=(int)34.89;规则3:char与byte或short之间的赋值必须实行强制转换。2.2.2 基本数据类型转换基本数据类型转换byte b1=18,b2;short sint1,sint2;char ch1,ch2=A;ch1=char(b1);b2=(byte)ch2;sint2=(short)ch2;注意事项:强制转换运算可能导致精度的损失。当把一个整数赋值给一个byte、short、int或long型变量时,不可以超出这些变量的取值范围,否则必须进行类型转换运算。【实例2-3】1.1.public class transExample public class transExample 2.2.public static void main(String args)public static void main(String args)3.3.byte a=120;byte a=120;4.4.short b=255;short b=255;5.5.int c=2200;int c=2200;6.6.long d=8000;long d=8000;7.7.float f;float f;8.8.double g=0.1234567812345678;double g=0.1234567812345678;9.9.b=a;b=a;10.10.c=(int)d;c=(int)d;11.11.f=(float)g;f=(float)g;12.12.System.out.println(a=+a);System.out.println(a=+a);13.13.System.out.println(b=+a);System.out.println(b=+a);14.14.System.out.println(c=+a);System.out.println(c=+a);15.15.System.out.println(d=+a);System.out.println(d=+a);System.out.println(e=+a);System.out.println(e=+a);1.1.System.out.println(f=+a);System.out.println(f=+a);2.2.System.out.println(g=+a);System.out.println(g=+a);3.3.4.4.2.2.2 基本数据类型转换基本数据类型转换【实例2-3】运行结果为:a=120a=120b=120b=120c=8000c=8000d=8000d=8000f=0.12345678f=0.12345678g=0.1234567812345678g=0.12345678123456782.3 运算符和表达式运算符和表达式2.3.1 算术运算符和算术表达式2.3.2 关系运算符与关系表达式2.3.3 逻辑运算符与逻辑表达式2.3.4 赋值运算符与赋值表达式2.3.5 位运算符2.3.6 条件运算符2.3.7 instanceof 运算符2.3.8 一般表达式2.3.1 算术运算符和算术表达式算术运算符和算术表达式Java算术运算符主要包括一元运算符(如+,-,+,-)和二元运算符(如,+,-,*,/,%),与C/C+基本相同算术表达式是用算术符号和操作元连接起来的符合Java语法规则的式子。例如:例如:(f*b)+(i/c)-(d*s)(f*b)+(i/c)-(d*s)2.3.1 算术运算符和算术表达式算术运算符和算术表达式java将按运算符两边操作元的最高精度保留结果。操作元的精度从低到高排列顺序是:byteshortintlongfloatdouble。执行任何算术运算或按位运算,执行任何算术运算或按位运算,“比比intint小小”的数据(的数据(charchar、bytebyte、shortshort)在正式执行运算之前,那些值会自动转换成)在正式执行运算之前,那些值会自动转换成intint 整型、实型、字符型数据可以混合运算。运算中,不同类型的数整型、实型、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级。据先转化为同一类型,然后进行运算,转换从低级到高级。例如:若将一个例如:若将一个floatfloat值与一个值与一个doubledouble值相乘,结果就是值相乘,结果就是doubledouble;如将一个如将一个intint值和一个值和一个longlong值相加,则结果为值相加,则结果为longlong。2.3.1 算术运算符和算术表达式算术运算符和算术表达式根据上述规则5/2 的结果为2,因为运算符“/”左右操作数均为int型,因此结果也为int型;而5.2/2的结果为2.5,因为运算符“/”左操作数为double型,右操作数为int型,因此运算时首先统一为double型,显然结果也为double型。【实例X-5】/程序2-51.1.class autoPromoteExample class autoPromoteExample 2.2.public static void main(String args)public static void main(String args)3.3.byte b=1;byte b=1;4.4.char c=b;char c=b;5.5.short s=10;short s=10;6.6.int i=100;int i=100;7.7.float f=1.23f;float f=1.23f;8.8.double d=6.78,result;double d=6.78,result;9.9.result=(f*b)+(i/c)-(d*s);result=(f*b)+(i/c)-(d*s);10.10.System.out.println(result=+result);System.out.println(result=+result);11.11.12.12.2.3.2 关系运算符与关系表达式关系运算符与关系表达式运算符运算符表达式表达式返回返回true的情况的情况op1op2op1大于大于op2=op1=op2op1大于或等于大于或等于op2op1op2op1小于小于op2=op1=op2op1小于或等于小于或等于op2=op1=op2op1与与op2相等相等!=op1!=op2op1与与op2不等不等2.3.3 逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式操作数取值操作数取值表达式运算结果表达式运算结果op1op2op1&op2op1|op2!op1falsefalsefalsefalsetruefalsetruefalsetruetruetruefalsefalsetruefalsetruetruetruetruefalse2.3.4 赋值运算符与赋值表达式赋值运算符与赋值表达式赋值运算符“=”是双目运算符,左面的操作元必须是变量。级别是14级,结合性从右到左。2.3.5 位运算符位运算符Java位运算符主要面对基本数据类型,包括byte、short、int、long和char。位运算符包括位运算符包括“按位与按位与”&”&、“按位或按位或”|”|、“按位非按位非”、“按位异或按位异或”、左移、左移。此外,。此外,JavaJava引入一个专门用于逻辑右移运算符引入一个专门用于逻辑右移运算符,它采用了,它采用了所谓的零扩展技术,不论原值是正或负,一律在高位所谓的零扩展技术,不论原值是正或负,一律在高位补补0 0。例如:例如:int a=-2,b;int a=-2,b;b=a30;b=a30;2.3.6 条件运算符条件运算符条件运算符是一个3目运算符,符号是:“?:”。用法如下:用法如下:op1op1?op2op2:op3op3要求第一个操作元要求第一个操作元op1op1的值必须是的值必须是booleanboolean型数据。型数据。运算法则是:当运算法则是:当op1op1的值是的值是truetrue时,运算的结果是时,运算的结果是op2op2的值;当的值;当op1op1的值是的值是falsefalse时,运算的结果是时,运算的结果是op3op3的值。的值。JavaJava要求:要求:op2op2与与op3op3必须同类型必须同类型 。例如,例如,128?100:200128?100:200的结果是