java程序设计概述及语言基础

java程序设计概述及语言基础

ID:36207521

大小:942.50 KB

页数:128页

时间:2019-05-07

上传者:U-145848
java程序设计概述及语言基础_第1页
java程序设计概述及语言基础_第2页
java程序设计概述及语言基础_第3页
java程序设计概述及语言基础_第4页
java程序设计概述及语言基础_第5页
资源描述:

《java程序设计概述及语言基础》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

张晓龙主编Java程序设计基础清华大学出版社 相关书籍参考书《Java程序设计》唐大仕,北交大《Java语言与面向对象程序设计》,印旻,清华大学出版社《Java编程思想》,BruceEckel著;陈昊鹏等译,机械工业出版社 第一章Java概述第二章Java语言基础第三章类与对象第四章Java的I/O流和异常处理第五章数据库编程第六章Java用户界面类和Applet 第七章Java网络编程第八章Java线程第九章JavaBean和RMI第十章JSP与Servlet 第1章Java概述1.1Java语言及其产生1.2Java的特点1.3Java的体系结构1.3.1Java的体系结构1.3.2Java虚拟机1.3.3垃圾回收机制1.3.4代码安全检测1.4Java的版本 第1章Java概述1.5Java的运行环境及配置1.5.1Java运行环境的安装及配置1.5.2JDK的开放环境工具1.6一个简单的Application一个简单的Applet1.7本章小结 第1章Java概述学习导读Java语言是对软件开发技术有深远影响、应用前景广泛、具有丰富的类库、继承了C++传统广泛使用的网络编程语言。本章着重介绍Java语言的众多特性,这些特性使它可以最大限度地利用网络。 应用2004年1月9日,美国“勇气”号探测器成功登陆火星,并在随后的一段时间内,由远在美国NASA中的科学家们控制,对火星进行了成功的探访。 美国BEA公司,1995年创办,两年后上市,六年后用户数过万,八年后营业额超过10亿美元,创造了全球软件产业的一个奇迹。 一种可同时适用于高性能企业计算平台、桌面计算平台和移动计算平台的计算机编程技术。 这些的事例有什么内在联系?Java编程语言 1.1Java语言及其产生随着新技术WorldWideWeb的发展,面向对象程序设计语言的进程中又出现了另一个萌芽。由于C和C++写成的程序都是与机器相关的,如果不重新编译,程序就不能运行在另一种类型的计算机上。就此问题,人们将注意力集中于开发一种与机器无关的程序设计语言上。 1.1Java语言及其产生1991年,Sun公司的5位技术专家开始将因特网商业化。JamesGosling,PatrickNaughton,ChrisWarth,EdFrank和MikeSheridan花了18个月的时间开发了一种称为Oak的编程语言,后来当这种新语言在1995年正式发布时,改名为Java。目前,最常用的版本是1.5。 1.1Java语言及其产生Java这个名称被用于由Sun公司开发的各种技术。Java的内涵包括三种主要的Java组件:Java语言,为Java平台编写软件的设计语言Java平台,为执行用Java编写的软件提供支持的各种运行环境JavaAPI,提供完整的类库(JFC),包括GUI、数据存储和处理、I/O及网络支持等内容。 1.2Java的特点简单易学,Java=C++--面向对象,有生产力的90%面向对象分布性,如Internet编程健壮性,强类型内存管理异常处理安全性,如对字节码进行安全性检查,Applet程序体系结构中立,引入Java虚拟机,字节码与计算机结构无关 1.2Java的特点(cont.)移植性,Java虚拟机的引入解释性,半编译半解释,生成.class类文件高效性,丰富的类库多线程,内置线程库动态性,动态绑定(虚拟函数,虚拟函数表),注意:静态函数没有动态性 1.3Java的体系结构 1.3Java的体系结构Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。 1.4Java的版本三种版本:企业计算,桌面计算和移动计算。标准版(J2SE):主要用于桌面应用软件的编程企业版(J2EE):Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。J2EE包括许多组件,如JSP、Servlet、JDBC、JavaBean、EJB、JavaMail等微缩版(J2ME):主要应用于嵌入式系统开发,如手机和PDA的编程,还有实时系统的开发另外,高性能的分布式计算(RMI,JINI)等应用。 1.5Java的运行环境及配置1.下载安装JDKJDK的下载:登录Java的官方网站(http://java.sun.com)2.安装Java帮助文档3.配置环境变量设置Java运行环境:进入“控制面板”,双击“系统”,弹出“系统属性”对话框,选择“高级”单击“环境变量”按钮。 1.5Java的运行环境及配置(cont.)(1)EnvironmentVariable(环境变量)环境变量也称为系统变量,是由操作系统提供的一种与操作系统中运行的程序进行通信的机制,一般可为运行的程序提供配置信息环境变量一般为“名字、值”对,在Shell编程中以${变量名}来取某变量的值常用的Java环境变量包括:JAVA_HOMECLASSPATHPATH 1.5Java的运行环境及配置(cont.)(2)环境变量—JAVA_HOME环境变量JAVA_HOME的值应设置为JDK的安装目录的路径,如在Windows平台上JDK的安装目录为“C:javajdk1.5”,则JAVA_HOME为那些需要使用Java命令和JVM的程序提供了通用的路径信息JAVA_HOME=c:javajdk1.5 1.5Java的运行环境及配置(cont.)环境变量CLASSPATH的值一般为一个以分号“;”作为分隔符的路径列表,如当执行Java程序时,执行命令会首先把类名转换为字节码文件的路径信息,再在环境变量CLASSPATH的值的路径列表的每个路径及其子路径中搜索指定的字节码文件,如果在所有路径都找不到该文件,就报告错误.CLASSPATH=.;c:javajdk1.5libdt.jar;…(3)环境变量—CLASSPATH 1.5Java的运行环境及配置(cont.)环境变量PATH是操作系统使用的变量,用于搜索在Shell中输入的希望执行的命令为了便于使用,一般可把JDK中Java命令程序所在的目录的路径加入PATH变量的值中,如:PATH=c:javajdk1.5bin;…(4)环境变量—PATH 1.5Java的运行环境及配置(cont.)Java命令是JDK中附带的一组可执行的程序,主要用于Java程序的编译、执行及其它用途Java命令位于JDK的安装目录的子目录“bin”中,可以通过环境变量JAVA_HOME来表示命令的位置在Windows平台上,Java命令通常在命令行窗口中执行${JAVA_HOME}/bin(5)JavaCommand(Java命令) (6)TheJ2SESystemDevelopmentKit(JDK)JavaRuntimeEnvironment(JRE)(Java执行环境)Tools(各种工具程序)JavaClassLibrarySourceFiles(Java类库源码)Demo(关于各种类的例程)1.5Java的运行环境及配置(cont.) (7)JDK实用命令程序--包括Javac,Java,AppletViewer等工具 (8)JavaIDE(Java集成开发环境)JavaIDE(Java集成开发环境)我们将使用JDK和Intellijidea作为开发环境。IntelliJJBuilderNetbeansWorkshopEclipseWSAD (9)Java程序开发过程安装JDK设置环境变量安装IDE源程序文件(*.java)编译字节码文件(*.class)程序设计程序修改错误成功保存AppletRichClientAppJ2EEServerAppJ2MEApp安装开发运行 Java程序的分类:JavaApplication由JAVA解释器独立运行字节码由专门的命令行启动程序执行程序中有定义了main()方法的主类JavaApplet不能独立运行,字节码必须嵌入HTML文档当浏览器调用含APPLET的Web页面时执行程序中含有java.applet.Applet类的子类1.6Java程序 1.6.1JavaApplicationpublicclassFirst{publicstaticvoidmain(Stringargs[]){System.out.println(“Hello,JavaWorld!”);}}开始使用JDK://编译器 编译出First.classE:JavaPractice>javacFirst.java//解释器运行主类E:JavaPractice>javaFirst运行结果如右图所示: 编写Java程序需要注意的几点:Java区分大小写一个程序中可以有一个或多个类,但其中只能有一个主类(publicclass修饰)源程序编写完毕,应该用主类名作为文件名,再加后缀.java存储成磁盘文件如果将一个java源程序中标记为主类的public去掉的话,则可将此源程序保存为任何一个合法的.java文件,试试看编译后的.class文件有何不同?编译时要提供后缀名,而解释执行时只需要类名,如果运行时带上了.class,试试看能否正常运行? 1.6.2JavaAppletimportjava.awt.Graphics;importjavax.swing.JApplet;publicclassWelcomeAppletextendsJApplet{publicvoidpaint(Graphicsg){super.paint(g);g.drawString("WelcometoJavaProgramming!",25,25);}}此Applet实现的功能是在起始点坐标为(25,25)的矩形框中显示如下内容:WelcometoJavaProgramming! JavaApplet程序:JavaApplet中不需要有main方法,它的要求是程序中有且必须有一个类是系统类Applet的子类,也就是必须有一个类的类头部分以extendsApplet结尾。所有的JavaApplet程序中都必须有一个系统类Applet的子类,因为系统类Applet中已经定义了很多的成员域和成员方法,它们规定了Applet如何与执行它的解释器—www浏览器配合工作。 字节码的解释与运行源代码目标码可执行代码源代码字节码编译连接运行操作系统编译解释执行Java解释器 字节码的执行要经过三个步骤。首先,类加载器为程序执行所需的类进行加载。在此过程需要检验该类文件是否符合类文件规范;其次,字节码校验器检查该类文件的代码中是否存在着某些非法操作;如果字节码校验器检验通过,由Java解释器负责把该类文件解释成为机器码进行执行。Java程序的代码和数据都被限制在一定内存空间里执行,不允许程序访问该内存空间外的内存,如果是Applet程序,还不允许访问客户端机器的文件系统。最后,字节码的翻译和执行。编译或解释方式。字节码的解释与运行(cont.) 对于Java独立应用程序来说,Java运行系统一般是指Java解释器;而对于Applet,Java运行系统一般是指能运行Applet的与Java兼容的Web浏览器,并且其中包含了支持Applet运行的环境。Java运行系统的功能是对字节码进行解释和执行。Java运行时系统 Java运行时系统(cont.)解释型编译型 什么是虚拟机?虚拟机是一种对计算机物理硬件计算环境的软件实现虚拟机是一种抽象机器,内部包含一个解释器(Interpreter),可以将其它高级语言编译为虚拟机的解释器可以执行的代码(称这种代码为中间语言IntermediateLanguage),实现高级语言程序的可移植性 虚拟机的优点平台无关性(SystemIndependence)安全(Security)无论是运行在嵌入式设备还是多个处理器的服务器上,虚拟机都执行相同的指令,所使用的支持库也具有标准的API和完全相同或相似的行为。虚拟机可以根据要求对其中执行的程序进行控制,使其无法访问虚拟机运行的操作系统的其它资源。 什么是Java虚拟机(JVM)?Java虚拟机(JVM)是专门针对Java语言设计的一种虚拟机实现,有自己的指令系统(字节码),用软件模拟了处理器、堆栈、寄存器等计算机物理组件,可以运行Java语言编译后得到的字节码程序,实现了Java程序的可移植性 理解Java程序可移植性一经编写,随处运行?JVM规范的一严一宽更好的理解—WOCRACJVM规范对可移植代码的严格性-JVM规范对虚拟机实现的宽松性WriteOnceCarefully,RunAnywhereConditionally.(精心编写一次就可以有条件的到处运行) Java虚拟机字节码虚拟机1()VCodeLineNumberTablemain([Ljava/lang/String;)VSourceFileHelloWorldApp.java  HelloWorld! HelloWorldApp与平台无关的字节码 由于Java的目标代码需要Java运行系统的支持,虽然Java运行系统被建立在各种不同的平台上,但为了做到Java的可移植性,被建立在不同平台上的Java运行系统的功能要求是一样的,为此Java引入了Java虚拟机(JavaVirtualMachine)的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器.这台虚拟的机器在任何平台上都提供给编译程序一个共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。Java虚拟机(cont.) 在Java中,这种供虚拟机理解的代码称为字节码(ByteCode),它不面向任何特定的处理器,只面向虚拟机。JVM只规定了各部件(指令集,寄存器组,类文件格式规定,堆栈,内存垃圾收集器,存储区)的功能和规格而没有规定它们的具体实现技术。所以,JVM是一种使得实际机器运行Java字节码的规范机制。Java虚拟机(cont.) 类装载器(ClassLoader)类装载器负责加载(load)类的字节码文件,并完成类的链接和初始化工作 类的加载步骤把要加载的类名转换为类的字节码文件名,并在环境变量CLASSPATH指定的每个目录搜索该文件把字节码文件读入缓冲区将类转换为JVM内部的数据结构使用校验器检查类的合法性如何类是第一次被加载,则对类中的静态数据进行初始化加载类中所引用的其它类把类中的某些方法编译为本地代码 字节码解释器(BytecodeInterpreter)JVM使用单字节长度的操作码,被称为“字节码”字节码可以看作是JVM的汇编语言JVM定义了14类200多个单字节指令字节码解释器是整个JVM的核心组件,负责解释执行由类装载器加载的字节码文件中的字节码指令集合,并通过Java运行时环境(JRE)由底层的操作系统实现操作 附Java资源Sun公司Java技术官方网站Eclipse项目网站各种Java相关开源项目网站本教材附录Ahttp://java.sun.comhttp://www.eclipse.orghttp://jakarta.apache.orghttp://www.sourceforge.net 本章小结Java程序以两种方式进行运行,一种是通过Java虚拟机进行直接运行的JavaApplication,另一种是通过浏览器进行运行的JavaApplet,但是无论是何种方式,Java都是一门纯粹的面向对象的编程语言。阐述了Java运行时系统和Java虚拟机等重要概念。最后,以简单的两类实例演示了Java程序的编写、编译和执行,及其编写规范。 学习导读本章是学习Java语言的基础,通过本章的学习,能够深入了解Java程序的语言要素,并掌握Java语言中的控制结构、数组及字符串,同时能够灵活运用Java语言提供的各种数据类型和运算符。第2章Java语言基础 2.1Java的关键字、标识符、数据类型2.2Java的常量与变量2.3Java运算符和表达式2.4控制语句2.5数组2.6字符串的处理2.7本章小结第2章Java语言基础 2.1Java语言要素2.1.1标识符标识符(identifier)是标示类、方法或者变量的名称。在Java中,字母、数字、下划线、美元符号($)都可以作为标识符的一部分,但不能以数字开头,且严格区分大、小写字母。几个合法的标识符:sumTotalTmpCountaverageb2不合法的有:a<2hight-1#221abcM.J.John 2.1.2关键字关键字就是指被系统所保留使用的那些标识符,不能被编程人员用于变量名、类名或者方法名。 Java语言的常见关键字:表征数据类型的:byte、char、short、int、long、float、double、boolean、true、false;用于选择及循环语句的:if、else、switch、case、break、default、for、goto、continue、do、while;修辞类及其成员的:abstract、public、private、protected、class、extends、const、implements、final、static、super、try、void、this、throw、throws、catch、return、new;还有其它一些关键字:assert、interface、package、import、finally、instanceof、native、null、strictfp、synchronized、transient、volatile; 值得注意的:true、false和null不能用作类名、方法名或者变量名。strictfp、assert是在Java2中加入的。而关键字const和goto虽被保留,但并没有被Java规范,也很少被使用。 2.1.3分隔符最常见的分隔符是分号(;),用来分隔不同的Java语句。此外,还有一些空白分隔符(Whitespace)。它可以是空格符、Tab跳格键,或者换行符。还有点号(.),它可将软件包的名字与它的子包或类分隔,也可将引用变量与变量或者方法分隔。 2.1.4注释Java中有3种类型的注释(comments)方式,它们分别是:单行注释、多行注释和文档注释(Documentationcomment)。单行注释,以“//”开始,可以注释某一行或一行的某一部分。其功能是:注释掉单行代码,及为一段代码实现的功能添加一个简短的说明。 多行注释,以“/*”开始,以“*/”标志结束。用来为一段代码或者一个函数(方法)添加注释,说明那些代码的含义及其功能。文档注释(Javadoc),以“/**”开始,以“*/”标志结束。文档注释提供将程序信息嵌入到程序中的功能。注意:文档注释时,所有的文档标记,都以“@”标志开始。在一个文档注释中,也可以使用其它的标准HTML标记。 2.1.5Java的基本数据类型Java支持多种数据类型,可以声明变量、创建数组以及其他更加复杂的数据类型。Java中,定义了8种基本的数据类型:字符型、短整型、整型、长整型、字符型、浮点型、双精度型、布尔型。这些基本类型都有固定的格式和大小,是跨平台的,没有依赖性。这是产生Java程序跨平台的重要特性。 2.1.5.1整数类型Java定义的整数类型有:字节型(byte)、短整型(short)、整型(int)和长整型(long),都是有符号的。Java不支持仅仅是正的无符号整数。 字节型(byte):通过关键字byte定义字节型的变量,用它定义一个字符型的变量n的格式是:byten;短整型(short):这种类型主要用于16位计算机,现在已经很少用了。用它声明短整型变量r和s的格式是:shortr,s;整型(int):整型变量通常被用于控制循环及数组下标。在任何时候,如果整数表达式中包含有byte、short、int或者字面量数字,那么在计算前,所有表达式的类型将被提升到int。其声明变量的格式与前三种类型一样。长整型(long):长整型数据的范围是相当大的,足以进行天文计算。它的声明变量的格式和前面介绍的一样。 表2-3各种整数类型说明整数类型长度(bits)取值范围字节型8-128~127短整型16-32768~32767整型32-2147183648~2147183647长整型64-9223372036854775808~9223372036854775807 2.1.5.2浮点类型浮点型(Floating-PointTypes)数据,也称为实型(real)数据,当计算有精度要求时使用。在Java中,有两种浮点类型:单精度(float)浮点型和双精度(double)浮点型。单精度浮点型:占32位存储空间的单精度数据类型,取值范围是3.4E-038~3.4E+038。双精度型:占用64位存储空间,取值范围是1.7E-308~1.7E+308。 2.1.5.3字符类型存储字符的数据类型是char(16个字节,范围是0~65536)。char没有负数的型式。这是因为,Java中使用unicode码来代表字符。unicode所定义的国际化字符集能表示迄今为止人类语言的所有字符集。标准字符集ASCII码的范围仍然是0~127,扩展的8位字符集ISO-Latin-1的范围是0~255。 2.1.5.4布尔类型布尔型是一种表示逻辑值的简单类型,取值只能是true(真)或false(假)两个值中的一个。它是所有关系运算的返回类型,它对管理像if、for这样的控制语句的条件表达式也是有必需的。if(flag=0)//C/C++的语法允许这样写if(flag==0)//在Java中必须这样写 Java的基本数据类型(总表) 2.2字面量和变量字面量(literal)是指由文字所表示的取值,也可以称为常量。整数型字面量、浮点型字面量、布尔型字面量、字符字面量及字符串字面量。例如,下面的就是一些字面量:335.36‘k’“thisisasentenceofJava”第一个表示一个整数;第二个表示一个浮点值;第三个是一个字符型的常量;最后一个是一个字符串值。字面量(常量)能在程序中的任何地方被它所允许的类型直接使用,代表的是所属类型的一个实在值。在程序执行期间其值不能发生变化。 2.2字面量和变量(cont.)变量的值则是可以变化的,它的定义包括变量名、变量类型和作用域几个部分。注意以下几点:(1)变量名必须是一个合法的标识符。变量名应具有一定的含义,以增加程序的可读性。(2)变量类型可以为前面所说的任意一种数据类型。 (3)声明一个变量的同时也就指明了变量的作用域,变量的作用域指明可访问该变量的一段代码。按作用域来分,变量可以有下面几种:局部变量、类变量、方法参数、例外处理参数。局部(local)变量是在一个方法内定义的变量,也被称作自动(automatic)、临时(temporary)或栈(stack)变量。当执行进入一个方法时,局部变量被创建,当执行离开该方法时,局部变量被清除,它的作用域为它所在的代码块(整个方法或方法中的某块代码)。在成员函数内定义的变量对该成员变量是“局部的”,因而,你可以在几个成员函数中使用相同的变量名而代表不同的变量。在一个确定的域中,变量名应该是唯一的。通常,一个域用大括号“{”和“}”来划定。 (4)下面是几个变量的声明:inta,b,c;//定义a,b,c为int型变量doubled,e;//定义d,e为double型变量floatf=2.5,g=5.8;//定义f,g为float型变量,并赋初值其中,多个变量间用逗号隔开。(5)在Java程序中声明变量后,需给该变量赋值。可用赋值语句来初始化变量——任何变量都不能没有初始值(否则,则无法通过编译)。 赋值方式如下:将已声明的变量名放在左边,然后是等号(=),右边是有适当值的Java表达式。它的意思是“取得右边的值,把它复制到左边”。右边的值可以是任何常数、变量或者表达式,只要能产生一个值就行。但左边的值必须是一个明确的、已命名的变量。如:inta;//这是声明a=45;//这是赋值charc;//这是声明c=‘y’;//这是赋值 相对于一个方法的“局部”变量,如果在初始化之前想使用它,编译器会提示出错,如下面这样就是不允许的:voidf(){inti;i=i+1;}当一个对象被创建时,实例变量在分配存储器的同时被值初始化。初始化值如表2.3.2所示。 (6)final类型变量该类型的变量也称作常量,其值在变量定义时初始化,以后也不能再重新对其赋值。finaldoublePI=3.1415926;(7)变量可根据其定义的位置不同,分为4类:类成员变量局部变量方法参数变量异常处理参数变量其中,类成员变量的作用域是整个类块。 下面给出几个Java程序的例子,使大家对数据类型进一步加深理解。【例2.1】Java中的数据类型【例2.2】Java中变量的作用域【例2.3】Java中对象的初始化 2.3运算符和表达式运算符有4大类:算术运算符、关系运算符、位运算符和逻辑运算符。一些附加的运算符,用于处理那些特殊情况。表达式:用运算符和括号将运算对象(或者成为操作数)连接起来、符合Java语法规则的式子就成为相应运算表达式。 2.3.1算术运算符算术运算符,主要用于数学表达式,其功能和用法与代数中的含义一样。Java语言提供如下12种算术运算符:+(加法)、-(减法)、*(乘法)、/(除法)、%(取模)、++(递增)、--(递减)、+=(加法赋值)、-=(减法赋值)、*=(乘法赋值)、/=(除法赋值)、%=(取模赋值)。 需要注意下面这两种运算符:++、--分别是递增递减运算符,作用是使变量的值增加1或者减少1,只能用于变量。其常用格式是:++variable;--variable;或者:variable++;variable--;赋值运算符是将基本算术运算符与赋值运算符相结合而成的。有:+=、-=、*=、/=、%=,其涵义是,先进行相应的运算,再将结果赋给变量。 2.3.2关系运算符关系运算符,主要用于关系运算,来判断两个可以比较的数据的数值关系。其结果是一个布尔量,常见于if语句及循环语句中,用于判断条件是否符合。6种关系运算符:<(小于)、<=(小于或等于)、>(大于)、>=(大于或等于)、==(等于)!=(不等于)。 注意:只有数字类型才可以进行大小比较。此外:布尔型变量的值只是true或者false而不等同于非0或者0。如if语句中的条件,形如:if(t!=0)或if(t==0)的方式,而非if(t)或if(!t)。 2.3.3位运算符位运算进行二进制位的运算,操作数可以是整型、字符型或者字节型,但是不可以是浮点型。位运算符主要有如下13种:&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、<<(左移)、>>(符号扩展右移)、>>>(无符号右移)、&=(按位与赋值)、|=(按位非赋值)、^=(按位异或赋值)、<<=(左移赋值)、>>=(符号扩展右移赋值)、>>>=(无符号右移赋值)。 1.位逻辑运算符按位与运算(&)参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0。即:0&0=0,0&1=0,1&0=0,1&1=1按位或运算(|)参与运算的两个值,如果两个相应位都是0,则该位结果为0,否则为1。即:0|0=0,0|1=1,1|0=1,1|1=1 按位异或运算(^)参与运算的两个值,如果两个相应位的某一个是1,另一个是0,那么按位异或(^)在该位的结果为1。也就是说如果两个相应位相同,输出位为0,否则为1。即:0^0=0,0^1=1,1^0=1,1^1=0按位取反运算(~)按位取反运算(~)属于一元运算符,它只对一个自变量进行操作(其他所有运算符都是二元运算符)。按位取反生成与输入位的相反的值——若输入0,则输出1;输入1,则输出0。即:~0=1,~1=0 表2-4四种逻辑位逻辑运算结果XY~XX&YX|YX^Y001000011011100011110110 2.左移、右移运算符:左移位运算符(<<)左移,即将某个数的各个二进制位均向左移动指定的位数。其形式为:data<>、>>>):右移运算,即是将某个数的各个二进制位均向右移动指定的位数。右移有两种形式:符号扩展右移与无符号右移。表现形式是:data>>n及data>>>n 符号扩展右移:移位运算操作中,原高位上的数值被右移至其它位时,用原来高位的数值填补丢失的高位。无符号右移,即不管data的数值是正是负,只要右移就用0来填补丢失的高位。 3.位赋值运算符位赋值是指,由运算符与赋值运算符(=)组成的新的运算符。常见的有:&=(按位与赋值)、|=(按位非赋值)、^=(按位异或赋值)、<<=(左移赋值)、>>=(符号扩展右移赋值)、>>>=(无符号右移赋值)。 4.逻辑运算符逻辑运算符就是能够在逻辑运算之中使用的运算符,用于逻辑运算的数据类型必须是布尔型,结果也是布尔型。常见的逻辑运算符有:&(逻辑与)、|(逻辑或)、^(逻辑异或)、&&(短路与)、||(短路或)、!(逻辑反)、&=(逻辑与赋值)、|=(逻辑或赋值)、^=(逻辑异或赋值)、==(相等)、!=(不等)。辨析逻辑运算符&&和&之间的不同。如,(x>y)&&(x>z)与(x>y)&(x>z)逻辑运算符&要求每个表达式都要计算! 需要说明“&&”和“||”这两个运算符的主要思想:用于逻辑运算的两个操作数,第一个操作数决定表达式的结果。即通过只判断第一个操作数的值,就可以得出正确结果的,不考虑第二个操作数就直接得出结论。 5.其它运算符及优先级与结合规律(1)其他运算符赋值运算符赋值运算符,将赋值运算符后面的值赋给其前的变量。其格式为:variable=常量或者表达式;这里允许一连串的赋值,即赋值运算符的后面仍然是一个赋值语表达式。 条件运算符是唯一一个三元运算符。其格式是:判断条件?操作组1:操作组2;执行过程是:检验判断条件是否为“true”,若是,则执行操作组1的代码,否则执行操作组2的代码。如:a>b?max=a:max=b; 其他类型运算符如,内存分配运算符(new)、实例运算符(instanceof)、强制类型转换运算符等。 其他类型运算符(cont.)举例说明如下:double[]stockPrice=newdouble[10];stockPrice[0]=10.124879;intistock=(int)stockPrice[0];StringstockName=newString(“A001”);instanceof的语法:anObjectinstanceofaclassif(aobjinstanceofaclass){…} 数值类型转换(1)自动数值类型转换intx=1;doubley=3.1415926;System.out.println(x+y);(2)强制类型转换,也称之为造型(cast)如前例子所示。如果宽类型被强制转换为窄类型,有可能丢失信息。数值类型之间的合法转换如图2.1所示。 实线表示的转换不会丢失信息,而虚线所示的转换可能丢失精度! (2)运算符的优先级与结合规律运算符的优先级,是指在运算过程中,各个运算符的运算执行顺序。运算符的结合规律,是指一种运算符按照哪个结合方向对其进行运算。具体情况请见表2-5 表2-5运算符的优先级及结合规律优先级运算符结合规律1()、[]、.(点运算符用于连接对象和其成员)、自左至右2!、~、++、--、-(取负数)(byte)(强制类型转换)、instanceof自右至左3*、/、%自左至右4+、-自左至右5<<、>>、>>>自左至右6<、>、<=、>=自左至右7==、!=自左至右8&自左至右9^自左至右10|自左至右11&&自左至右12||自左至右13?:自右至左14各种赋值运算符及其变形运算符自右至左 2.4控制语句2.4.1选择结构控制语句选择结构是三大基本结构之一,是通过选择控制语句来实现的。其功能是:根据所给条件,来判断下一步进行两组或者若干组操作之中的一组。选择控制语句的两种实现:if语句与switch语句。 1.if语句if语句常用形式是:if(判断条件)操作组1;[else操作组2;]说明:操作组1和操作组2是两个不同的操作,else及其后面的操作是可选项。运行过程:判断条件是否满足,若满足则执行操作组1;否则进行操作组2。如:if(a

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭