Java语言程序设计基础教程(上)ppt.ppt_第1页
Java语言程序设计基础教程(上)ppt.ppt_第2页
Java语言程序设计基础教程(上)ppt.ppt_第3页
Java语言程序设计基础教程(上)ppt.ppt_第4页
Java语言程序设计基础教程(上)ppt.ppt_第5页
已阅读5页,还剩286页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java程序设计基础教程 第1章Java程序设计概述第2章Java基本的程序设计结构第3章类和对象第4章继承 接口和内部类第5章JavaAPI第6章Java程序设计概述第7章多线程第8章文件和流第9章异常处理第10章Java网络编程第11章JavaApplet基础第12章常见数据结构的Java实现第13章Java数据库连接 JDBC第14章Java多媒体编程 图形 图像和声音 第一章Java程序设计概述 1 1机器语言 汇编语言和高级语言1 2Java语言概述1 3Java平台和主要应用方向1 4Java的垃圾回收与代码安全检查机制1 5典型的Java开发环境1 6Java编程示例1 7反编译工具的介绍1 8JavaJDK6新功能介绍 1 1机器语言 汇编语言和高级语言 计算机程序设计语言的种类非常多 总的可以分成机器语言 汇编语言 高级语言三大类 机器语言是计算机唯一能接受和执行的语言 与硬件紧密相连 机器语言由二进制码组成 每个二进制码是一条指令 一条指令通常由两个部分组成 操作码 操作数 操作码规定了计算机要执行的基本操作 操作数规定了操作对象或操作对象的地址 汇编语言 AssemblyLanguage 是面向机器的程序设计语言 用汇编语言编写的程序叫汇编语言源程序 计算机无法执行 必须用汇编程序把它翻译成机器语言目标程序 计算机才能执行 这个翻译过程称为汇编过程 汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序 汇编语言中 用助记符代替操作码 用地址符号 Symbol 或标号 Label 代替地址码 这样用符号代替机器语言的二进制码 就把机器语言变成了汇编语言 因此汇编语言亦称为符号语言 机器语言和汇编语言都是面向机器的 高级语言是面向用户的 由于汇编语言依赖于硬件体系 且助记符量大难记 于是人们又发明了更加易用的所谓高级语言 高级语言中的语法和结构更类似普通英文 且由于远离对硬件的直接操作 使得一般人经过学习之后都可以编程 用高级语言编写的程序叫做高级语言源程序 必须翻译成机器语言目标程序才能被计算机执行 高级语言的翻译有两种方式 编译方式和解释方式 编译方式 先由编译程序把高级语言源程序翻译成目标程序 执行时运行目标程序 现在大多数的编程语言都是编译型的 例如VisualC VisualFoxpro Delphi等 解释方式 在运行高级语言源程序时 由解释程序对源程序边翻译边执行 经典的Basic语言就是以解释方式运行的 1 2Java概述 Java语言的产生Java语言的发展Java虚拟机及Java的跨平台原理Java语言的关键特点 Java语言的产生 Java是1995年6月由Sun公司引进到我们这个世界的革命性的编程语言 1990年Sun公司成立了由JamesGosling领导的开发小组 开始致力于开发一种可移植的 跨平台的语言 该语言能生成正确运行于各种操作系统 各种CPU芯片上的代码 他们的精心专研和努力促成了Java语言的诞生 Java语言是一门很优秀的语言 具有面向对象 与平台无关 安全 稳定和多线程等优良特性 是目前软件设计中极为健壮的编程语言 Java语言的出现是源于对独立于平台语言的需要 即这种语言编写的程序不会因为芯片的变化而发生无法运行或出现运行错误 目前 随着网络的迅速发展 Java语言的优势越显明显 Java已经成为网络时代一门非常重要的语言 Java语言的发展 微软公司总裁比尔 盖茨先生认为 Java语言是长时间以来最卓越的程序设计语言 Java语言已经成为目前最流行的网络编程语言到2005年 我国对Java技术人员的需求量将高达20万余人 许多大学纷纷开设Java课程 Java正逐步成为世界上程序员最多的编程语言 Java虚拟机及Java的跨平台原理 Java虚拟机 JavaVirtualMachine 简称JVM Java虚拟机是一个想象中的机器 在实际的计算机上通过软件模拟来实现 Java虚拟机有自己想象中的硬件 如处理器 堆栈 寄存器等 还具有相应的指令系统 Java语言的一个非常重要的特点就是与平台的无关性 而使用Java虚拟机是实现这一特点的关键 Java语言的关键特点 简单性平台无关性面向对象性安全性分布式多线程动态性 1 3Java平台和主要应用方向 某种意义上来说 Java不仅是编程语言 还是一个开发平台 Java技术给程序员提供了许多工具编译器 解释器 文档生成器和文件打包工具等同时Java还是一个程序发布平台 两种主要的 发布环境 首先是Java运行时环境 javaruntimeenvironment 简称JRE 包含了完整的类文件包 其次 许多主要的浏览器都提供了Java解释器和运行时环境 Java技术的平台架构包括以下三个方面 J2SE Java2StandardEdition 标准版主要目的是为台式机和工作站提供一个开发和运行的平台 包括标准的Java2SDK 工具 运行时环境和API 用Java程序设计语言编写 部署和运行Applet和应用程序的开发人员 是桌面开发和低端商务应用的解决方案 J2EE Java2EnterpriseEdition 企业版主要目的是为企业计算提供一个应用服务器的运行和开发平台 J2EE本身是一个开放的标准 任何软件厂商都可以推出自己的符合J2EE标准的产品 通过基于标准化模块组件和一整套的相关服务能够自动处理应用程序行为的许多细节 从而大大简化了多层企业应用程序的构造和部署 IBM Oracle BEA HP等29家已经推出了自己的产品 其中尤以BEA公司的WebLogic产品和IBM公司的WebSphare最为著名 J2ME Java2MicroEdition 小型版主要是面向消费电子产品 为消费电子产品提供一个Java的运行平台 使得Java程序能够在手机 机顶盒 PDA等产品上运行包含高度优化的Java运行时环境 致力于电子消费产品和嵌入式设备的解决方案 1 4Java的垃圾回收与代码安全检查机制 在Java程序的执行过程中 部分内存在使用过后就处于废弃状态 如果不及时进行无用内存的回收 内存会越占越多 导致内存泄漏 进而导致系统崩溃 在C 语言中是由程序员人为进行内存回收的 程序员需要在编写程序的时候把不再使用的对象内存释放掉 但是这种人为的管理内存释放的方法却往往由于程序员的疏忽而致使内存无法回收 同时也增加了程序员的工作量 在Java运行环境中 始终存在着一个系统级的线程 专门跟踪内存的使用情况 定期检测出不再使用的内存 并进行自动回收 避免了内存的泄露 也减轻了程序员的工作量 字节码的执行需要经过三个步骤 1 首先由类装载器 classloader 负责把类文件 class文件 加载到Java虚拟机中 在此过程需要检验该类文件是否符合类文件规范 2 其次字节码校验器 bytecodeverifier 检查该类文件的代码中是否存在着某些非法操作 例如Applet程序中写本机文件系统的操作 3 如果字节码校验器检验通过 由Java解释器负责把该类文件解释成为机器码进行执行 Java虚拟机采用的是 沙箱 运行模式 即把Java程序的代码和数据都限制在一定内存空间里执行 不允许程序访问该内存空间外的内存 如果是Applet程序 还不允许访问客户端机器的文件系统 Java致力于检查程序在编译和运行时的错误 类型检查帮助检查出许多开发早期出现的错误 Java自已操纵内存减少了内存出错的可能性 Java还实现了真数组 避免了覆盖数据的可能 这些功能特征大大提高了开发Java应用程序的周期 Java提供 Null指针检测 数组边界检测 异常出口 Bytecode校验 1 5典型的Java开发环境 Sun公司为全世界使用Java进行开发的人员提供了一套免费的开发工具集 取名为JDK JavaDevelopersKits 它不仅是Java的开发平台 也是Java的运行平台 学习Java必须从J2SE开始目前Sun公司已发布了SDK的1 5测试版本 beta版 可以登录到Sun公司的网站 免费下载SDK1 5 例如 jdk 1 5 0 beta2 windows i586 exe 下载 安装和了解JDK 1 下载安装JDK的第一步是下载安装文件 这里要下载的是Sun公司的J2SE5 0DevelopmentKits 下载的网址是 3 了解JDK默认情况下 JDK与公用JRE各安装至C ProgramFiles Java jdk1 5 0 06 及C ProgramFiles Java jre1 5 0 06 公用JRE主要是为开发好的Java程序提供执行的平台 其实JDK本身也有自己的JRE 这个JRE位于JDK安装目录的jre目录下 以上面的安装为例 就是在C ProgramFiles Java jdk1 5 0 06 jre中 JDK本身所附的JRE主要是开发Java程序时做测试之用 与公用JRE的主要差别在于JDK本身所附的JRE比公用JRE多了个server的VM VirtualMachine 执行选项 JDK的安装目录下有如下内容 bin目录 提供的是JDK的工具程序 包括javac java javadoc appletviewer等程序 demo目录 一些使用Java编写好的范例程序 jre目录 JDK自己附带的JRE lib目录 工具程序实际上会使用的Java工具类 例如 javac工具程序实际上会去使用tools jar中的com sun tools javac Main类 src zip Java提供的API类的源代码压缩文件 如果需要查看API的某些功能是如何实现的 可以查看这个文件中的源代码内容 JDK安装目录下的bin目录非常重要 因为编写完Java程序之后 无论是编译或执行程序 都会使用到bin目录下所提供的工具程序 系统环境ClassPath值的设置 SDK的安装目录的jre文件夹中包含着Java应用程序运行时所需要的Java类库 这些类库被包含在jre lib目录下的压缩文件rt jar中 系统环境变量Path值的设置 SDK平台提供的Java编译器 javac exe 和Java解释器 java exe 位于Java安装目录的bin文件夹中 为了能在任何目录中使用编译器和解释器 应在系统特性中设置Path 对于Windows2000 Windows2003 WindowsXP 用鼠标右键点击 我的电脑 弹出菜单 然后选择属性 弹出 系统特性 对话框 再单击该对话框中的高级选项 然后点击按钮 环境变量 添加如下的系统环境变量 测试环境变量 写一个简单的Java程序 测试一下环境设置是否正确 例1 1 一个简单的Java程序 publicclassHelloWorld publicstaticvoidmain Stringargv System out println 你好 我的第一个Java程序 注意 1 Java的源文件必须以扩展名 java结束 2 Java主文件名与类名称必须一致 区分大小写 3 Java程序的类名称是指class关键词后的名称 就这个例子而言 也就是HelloWorld 该名称必须与HelloWorld java的主文件名 HelloWorld 一致 4 注意每个字母的大小写 Java程序中会区分字母的大小写 System与system对Java程序来说是不一样的名称 C cdjava work 1接着使用javac工具程序来编译 java文件 命令如下 C java work 1 javacHelloWorld java如果编译顺利成功 则在HelloWorld java所在的目录 会出现一个HelloWorld class文件 这是已经编译完成的Java字节码文件 使用java工具程序来执行它 执行方式如下 C java work 1 javaHelloWorldJava工具程序会根据指定的类名称 实际加载 class的文件 以上例来说 就是载入HelloWorld class并执行 Eclipse和MyEclipse 1 Eclipse是什么 Eclipse是一个开放源代码的 基于Java的可扩展开发平台 就其本身而言 它只是一个框架和一组服务 用于通过插件组件构建开发环境 幸运的是 Eclipse附带了一个标准的插件集 包括Java开发工具 JavaDevelopmentTools JDT 虽然大多数用户很乐于将Eclipse当作JavaIDE来使用 但Eclipse的目标不仅限于此 Eclipse还包括插件开发环境 Plug inDevelopmentEnvironment PDE 这个组件主要针对希望扩展Eclipse的软件开发人员 因为它允许构建与Eclipse环境无缝集成的工具 由于Eclipse中的每样东西都是插件 对于给Eclipse提供插件 以及给用户提供一致和统一的集成开发环境而言 所有工具开发人员都具有同等的发挥场所 2 MyEclipse是什么 简单而言 MyEclipse是Eclipse的插件 也是一款功能强大的J2EE集成开发环境 支持代码编写 配置 测试以及除错 最新版本是7 0 主要增加Matisse4MyEclipseGuiBiulder的整合 Ajax Web2 0开发工具 1 6Java编程示例 Java程序分为JavaApplication Java应用程序 和JavaApplet Java小应用程序 两种类型 1 6 1第一个JavaApplication 例1 2 第一个JavaApplication程序MyApplication java importjava util 下面我们用到了Date和Properties这两个类 是属于Java util这个包的 而System和Runtime这两个类 是属于Java lang这个包的 publicclassMyApplication publicstaticvoidmain String args System out println newDate 在命令行下面打印出日期Propertiesp System getProperties 获得系统的Properties对象pp list System out 在命令行下打印出p中的各个系统变量的值System out println MemoryUsage 打印一行字符串 MemoryUsageRuntimert Runtime getRuntime 获得系统的Runtime对象rtSystem out println TotalMemory rt totalMemory FreeMemory rt freeMemory 打印总内存大小 打印空闲内存大小 System out println newDate 打印语句的参数是一个日期对象Date 而创建Date对象的目的就是把它的值发给println 语句 一旦这个语句执行完毕 Date对象就没用了 而后Java的垃圾回收机制会将其收回 第二行中调用了System getProperties 方法 getProperties 是System类的一个静态方法 static方法 关于类的静态方法含义 我们会在第三章中介绍 由于它是 静态 的 所以不必创建任何对象就可以通过类名直接调用该方法 在第三行中 Properties对象有一个名为list 的方法 它将自己的全部内容都发给一个PrintStream对象 该对象作为list 方法的参数 第四行和第六行是典型的打印语句 其中第六行通过运算符 的重载来连接多个字符串对象 在Java中只有当 运算符作用于字符串时才能够进行重载 仔细观察下述语句 System out println TotalMemory rt totalMemory FreeMemory rt freeMemory 其中 totalMemory 和freeMemory 返回的是数值 并非String对象 第五行通过调用Runtime的getRuntime 方法创建了一个Runtime对象 该对象中包含了内存等信息 1 6 2Java程序的编辑 Java程序的编辑可以使用任何一种文本编辑器 例如UltraEdit Notepad Wordpad甚至word 然后只要把编辑好的文件存成后缀为 java的文件 当然也可以用一些集成开发环境 例如Borland公司的JBuilder IBM公司的VisualageforJava Sun公司的NetBean 此外还有cafe kawa等其它集成开发环境 1 6 3运行JavaApplication应用程序 要编译上述Java文件MyApplication java 可以在 命令提示符 下进行编译 在命令行中敲入 javacMyApplication java 当编译结束后 Java源文件中的每一个类都会生成相应的 class文件 例如上例就会生成一个MyApplication class文件 而Java程序在执行时调用的是 class文件 在 命令提示符 下敲入 javaMyApplication 进行执行 1 6 4第一个JavaApplet 例1 3 一个JavaApplet程序 该程序保存在文件HelloApplet java中 importjava awt Graphics 进行显示输出时 需要用到类Graphics的对象 importjava applet Applet Applet类是所有的JavaApplet的父类 给这个类取名为HelloApplet 因为所有的applet程序都是Applet类的子类 publicclassHelloAppletextendsApplet publicStrings publicvoidinit s newString 欢迎学习JavaApplet 生成一个字符串对象 publicvoidpaint Graphicsg g drawString s 25 25 在浏览器中坐标为 25 25 的位置显示字符串s Applet小应用程序是从方法init 开始执行的 在该方法中完成了对字符串s的初始化工作 而显示功能是在方法paint 中执行的 paint 方法是类Applet的一个成员方法 其参数是图形对象Graphicsg 通过调用对象g的drawString 方法就可以显示输出 1 6 5运行applet Applet程序也是一个类 其编译方式与JavaApplication完全一样 Applet的执行方式与Application完全不同 Applet程序必须嵌入到html文件中才能够执行 因此必须编写一个相应的html文件 此处为HelloApplet html 代码中包含有applet标记如下 然后可以通过JDK所提供的命令 appletviewer 在 命令提示符 下敲入appletviewerHelloApplet html此时系统会弹出另外一个窗口运行该applet程序 运行结果如图1 9所示 图1 9Applet例子运行结果 1 7反编译工具的介绍 使用SDK提供的反编译器javap exe可以将字节码反编译为源码 查看源码类中的public方法名字和public成员变量的名字 例如 javapjava awt Button将列出Button中的public方法和public成员变量 下列命令javap privatejava awt Button将列出Button中的全部方法和成员变量 查看更多的参数 可以执行 javap help 来显示 1 8JavaJDK6新功能介绍 2006年底 Sun公司发布了JavaStandardEdition6 JavaSE6 的最终正式版 跟JavaSE5相比 在性能方面有了很大的提升 JavaSE6在Instrumentation方面的新特性 在JavaSE6里面 instrumentation包被赋予了更强大的功能 启动后的instrument 本地代码instrument 以及动态改变classpath等等 JavaSE6与HTTP相关的诸多新特性 这使得JavaSE平台本身对网络编程 尤其是基于HTTP协议的因特网编程 有了更加强大的支持 Java管理扩展 JMX 架构及其框架 以及在JavaSE5中新引入的JMXAPI java lang management包 此API在JavaSE6中做了改进 JDK6中新增加的编译器API JSR199 利用此API 您可以在运行时调用Java编译器 可以编译不同形式的源代码文件 还可以采集编译器的诊断信息 JavaSE6在数据库编程方面的新特性 包括嵌入在JDK中的JavaDB Derby 和JDBC4 0的一部分 JavaSE6新引入的对JSR223的支持 它旨在定义一个统一的规范 使得Java应用程序可以通过一套固定的接口与各种脚本引擎交互 从而达到在Java平台上调用各种脚本语言的目的 JavaSE6中提供的XML处理框架 以及在此框架之上结合注释 Annotation 技术 所提供的强大的针对Web服务的支持 1 9练习思考题 1 Java运行平台包括三个版本 请选择正确的三项 A J2EEB J2MEC J2SED J2E2 开发与运行Java程序需要经过的三个主要步骤为 和 3 如果一个JavaApplet源程序文件只定义有一个类 该类的类名为MyApplet 则类MyApplet必须是 类的子类并且存储该源程序文件的文件名为 第2章Java基本的程序设计结构 标识符和关键字Java的基本数据类型运算符 表达式和语句语句输入输出数组 2 1标识符和关键字 在Java中的标识符和关键字统称为保留字 2 1 1标识符 标识符是赋予常量 变量 方法 类或者接口的名称 可以由用户自行定义 无长度限制 但要符合以下规则 1 标识符可以由一个或多个字符组成2 标识符必须以字母 下划线 或 为开头 后面可以包含数字 字母但不包含空格 3 标识符中大小写字母有区别 但长度没有限制4 关键字不能做为标识符使用5 用以命名类 方法和变量 以及包遵守JAVA的命名规范 类名称的每个单词都以大写字母开头 方法和变量第一个字母不大写 其他照旧 2 1 2关键字 Java中的关键字 它是Java特意保留的 具有特殊的意义和用途 不可以任意使用或更改 当我们在编写程序时要注意不要使用它作为变量或方法名称 以免造成程序编译的错误 Java的关键字有 Abstract default if package this Boolean do implements private throw Break double import protected throws Byte else instanceof public transient Case false interface short try Catch final long static void Char finally native super volatile Class float new switch while Continue for null synchronized goto和const在Java中虽然不再使用 但是还作为关键字存在 2 2Java的基本数据类型 Java严格规定每个数据类型的大小 而且不允许任意更换变量的数据类型 也就是说如果A变量我们声明为整数类型后 就不能再将A变量改为其它类型 而且所占的空间就是32位 无法更改 表2 1Java的基本数据类型 2 2 1布尔型 布尔型 也就是我们所说的真或假 使用关键字boolean来定义逻辑变量 值为常量 true false 例2 1 一个布尔型应用的示例 定义了一个布尔类型变量y 起初给它赋值false 然后又赋值为true 在if条件判断中 因为y是true 条件满足 执行语句所以执行System out println yistrue 最后是一个表达式10 9 结果为真 所以显示true publicclassBoolTest publicstaticvoidmain Stringargs booleany y false System out println yis y y true if y System out println yistrue System out println 10 9 10 9 2 2 2字符型 字符型在C语言中占8位 而Java中由于使用的是unicode 所以占16位 例2 2 举个例子说明一下字符型数据的使用 publicclassCharDemo publicstaticvoidmain Stringargs charch1 ch2 ch1 65 ch2 B System out print ch1andch2 System out println ch1 ch2 大写的A在ASCII字符集中的值为65 因为ASCII中的字符集占了Unicode中的前127个字符 所以ASCII中的技巧这里面一样用 从上面可以看出 给字符型变量ch1赋值65和 A 作用是一样的 程序2 2运行结果如下所示 图2 2字符型数据应用示例运行结果 2 2 3整数型 Java定义了四种整数型 即字节型 byte 短整型 short 整型 int 长整型 long 在Java语言中没有无符号这个关键字 unsigned 这个有区别于C语言 也就是说所有的数都为有符号数 2 2 4浮点型 浮点型 也就是所说的实数 其中单精度数float占4个字节 双精度数占8个字节 当需要保持多次反复迭代的计算的精确性时或操作值很大时 是最好的选择了 例2 4 下面例子是一个双精度数计算圆面积的例子 计算圆的面积publicclassArea publicstaticvoidmain Stringargs doublepi r a r 0 3 半径pi 3 1416 a pi r r 面积System out println 面积为 a 2 2 5基本数据类型的转换 在Java中类型由低到高的顺序为 byte short char int long float double 1 自动转换 当由低到高时可以自动转换 比如 byteb inti b longl b floatf b doubled b 那么这些都可以自动转换 是合法的 但byte short char是平级的不能自动转换 必须使用强制转换 2 强制转换 由高级到低级时 必须使用强制转换 inti 99 byteb byte i charc char i 例2 5 下面例子说明这两种转换 publicclassChangeTest publicstaticvoidmain Stringargs byteb 15 inti b longl b floatf b doubled b System out println b System out println i System out println l System out println f System out println d ints 99 byten byte s System out println s System out println n 注意 在强制转换时有时会导致溢出或降低精度 比如整型值赋给byte时 如果整型值大了 会自动取模再赋值 而浮点数赋值给整数时会去掉小数点 3 字符串型数据与其他数据类型转换 在Java中是通过toString 方法来实现的 例2 6 字符串型数据与其他数据类型转换的例子 publicclassChangeTest1 publicstaticvoidmain Stringargs inti1 10 floatf1 3 14f doubled1 3 1415926 注意大小写IntegerI1 newInteger i1 生成integer类FloatF1 newFloat f1 生成float类DoubleD1 newDouble d1 生成double类 分别调用包装类的tostring 方法转换为字符串Stringsi1 I1 toString toString在此完成integer类型转换为字符串Stringsi2 F1 toString Stringsi3 D1 toString System out println si1 System out println si2 System out println si3 4 将CHAR型值直接做为数值转换为其他数据类型 例2 7 CHAR型值直接做为数值转换为其他数据类型的例子 publicclassChangeTest2 publicstaticvoidmain Stringargs inti charc1 A i c1 System out println i charc2 char i 2 此处要强制转换System out println c2 2 3运算符 表达式 Java提供了丰富的运算符 如算术运算符 关系运算符 逻辑运算符 位运算符等 2 3 1算术运算符与算术表达式 在Java中提供运算功能的就是运算符 Operator 例如与算术相关的有加 减 乘 除 这类的运算符 另外还有一个也很常用的取模运算符 这类以数学运算为主的运算符称为算术运算符 ArithmeticOperator 算术运算符的使用基本上与加减乘除一样 也是先乘除后加减 必要时加上括号表示运算的先后顺序 2 3 2比较和条件运算 数学上有比较的运算 像大于 等于 小于等运算 Java中也提供了这些运算符 这些运算符称为 比较运算符 ComparisonOperator 它们有大于 大于等于 小于 小于等于 等于 和不等于 在Java中 比较条件成立时以true表示 比较条件不成立时以false表示 例2 8 一个比较运算的示例 publicclassComparisonOperator publicstaticvoidmain String args System out println 10 5结果 10 5 System out println 10 5结果 10 5 System out println 10 5结果 10 5 System out println 10 5结果 10 5 System out println 10 5结果 10 5 System out println 10 5结果 10 5 等于运算符 它由两个连续的等号 所组成 而不是一个等号 一个等号是赋值运算 这一点必须特别注意 若有两个变量x与y要比较是否相等 应该是写成x y 而不是写成x y 后者的作用是将y的值指定给x 而不是比较x与y是否相等 对于对象来说 两个对象参考之间使用 作比较时 是比较其名称是否参考至同一对象 而不是比较其内容 条件运算符 使用方式如下 条件式 成立返回值 失败返回值返回值依条件式的结果而定 如果条件式的结果为true 则返回冒号前的值 若为false 则返回冒号后的值 例2 9 一个条件运算符的示例 importjava util Scanner publicclassConditionalOperator publicstaticvoidmain String args Scannerscanner newScanner System in System out print 请输入学生分数 intscoreOfStudent scanner nextInt System out println 该生是否及格 scoreOfStudent 60 是 否 2 3 3逻辑和位运算 Java中也提供这几个基本逻辑运算所需的逻辑运算符 LogicalOperator 分别为与 2 3 4递增和递减运算 递增 Increment 递减 Decrement 与赋值 Assignment 运算符 这几种运算符的目的除了让程序看来比较简洁之外 还可以稍微增加一些程序执行的效率 在程序中对变量递增1或递减1是很常见的运算 例如 inti 0 i i 1 System out println i i i 1 System out println i 上面这段程序会分别显示变量 1与 1操作的结果 1与0两个数 例2 16 递增 递减运算符的示例 publicclassIncrementDecrement publicstaticvoidmain String args inti 0 System out println i System out println i 2 3 5赋值运算符 到目前为止 只学习过一个赋值运算符 也就是 这个运算符 事实上赋值运算符还有其他几个 如表2 2所示 表2 2赋值运算符 2 4语句 在Java语言中 语句可分为以下5类 1 方法调用语句System out println Hello 2 表达式语句由一个表达式构成一个语句 最典型的是赋值语句 如 x 23 一个表达式加上一个分号就构成了一个语句 分号是语句不可缺少的部分 3 复合语句可以用 把一些语句括起来构成复合语句 如 z 23 x System out println Hello 4 控制语句包括条件语句和switch开关语句 5 package语句和import语句Package语句和import语句与类 对象有关 相关内容在第3章中介绍 2 4 2控制语句 Java的控制语句有2种类型 即条件语句和switch开关语句 1 条件控制语句为了解决 如果 发生了 就要 的需要 Java提供了if条件控制语句 它的语法如下 if 条件式 语句1 else语句2 如果在if后有两个以上的语句 称之为复合语句 CompoundStatement 此时必须使用 定义程序块 Block 将复合语句包括起来 例如 if 条件式 语句1 语句2 else 语句3 语句4 例2 19 使用if条件式来判断使用者的输入是奇数还是偶数 importjava util Scanner publicclassOddDecider3 publicstaticvoidmain String args Scannerscanner newScanner System in System out print 请输入数字 intinput scanner nextInt intremain input 2 求除2的余数if remain 1 如果余数为1System out println input 为奇数 elseSystem out println input 为偶数 2 switch条件式 switch只能比较数值或字符 使用适当的话 可比if判断式有效率 switch的语法结构如下 switch 变量名称或表达式 case符合数字或字符 语句1 break case符合数字或字符 语句2 break default 语句3 例2 21 使用switch来改写处理学生的成绩等级问题 importjava util Scanner publicclassScoreLevel2 publicstaticvoidmain String args Scannerscanner newScanner System in System out print 请输入分数 intscore scanner nextInt intlevel int score 10 switch level case10 case9 System out println 得A break case8 System out println 得B break case7 System out println 得C break case6 System out println 得D break default System out println 得E 不及格 2 4 3循环语句 1 for循环在Java中如果要进行重复性的指令执行 可以使用for循环式 它的基本语法如下 for 初始式 判断式 递增式 语句1 语句2 如果语句只有一个 也就是非复合语句 可以省略不写 for循环的第一个初始语句只会执行一次 之后每次重新进行循环时 都会根据判断式来判断是否执行下一个循环 而每次执行完循环之后 都会执行递增式 例2 22 for循环的功能示例 publicclassSimpleLoopFor publicstaticvoidmain String args for inti 0 i 10 i System out print i 2 while循环 Java提供while循环式 它可以根据所指定的条件式来判断是否执行循环体 语法如下 while 条件式 语句1 语句2 例2 25 计算输入成绩平均的程序 importjava util Scanner publicclassScoreAverage publicstaticvoidmain String args Scannerscanner newScanner System in intscore 0 intsum 0 intcount 1 while score 1 count sum score System out print 输入分数 1结束 score scanner nextInt System out println 平均 double sum count 2 4 4break和continue break可以离开当前switch for while dowhile的程序块 并前进至程序块后下一条语句 在switch中主要用来中断下一个case的比较 在for while与dowhile中 主要用于中断目前的循环执行 break的例子之前已经看过不少 这里不再举例 continue的作用与break类似 主要用于循环 所不同的是break会结束程序块的执行 而continue只会结束其之后程序块的语句 并跳回循环程序块的开头继续下一个循环 而不是离开循环 例如 for inti 1 i 10 i if i 5 break System ut println i i 这段程序会显示i 1到4 因为当i等于5时就会执行break而离开循环 看下面这个程序 for inti 1 i 10 i if i 5 continue System out println i i 这段程序会显示1到4 与6到9 当i等于5时 会执行continue直接结束此次循环 这次循环中System out println 行并没有被执行 然后从程序块开头执行下一次循环 所以5并没有被显示 2 5输入输出 1 利用System out println 可以非常容易实现输出 例2 29 一个输出的例子 publicclassOutputTest publicstaticvoidmain Stringargs floatx x 100 0f 3 0f System out println x System out println 100 0 3 0 2 格式化输出在java text包中 提供了NumberFormat类可以产生这种格式 然后我们再用format方法来得到格式化的字符 例2 30 一个格式化输出的例子 importjava text publicclassOutputTest1 publicstaticvoidmain Stringargs doublex x 100 0 3 0 NumberFormatf1 NumberFormat getNumberInstance 数字格式Strings f1 format x System out println s NumberFormatf2 NumberFormat getPercentInstance 百分比格式s f2 format x System out println s NumberFormatf3 NumberFormat getCurrencyInstance 货币格式 这跟系统区域有关s f3 format x System out println s 3 键盘输入 例2 31 一个键盘输入的例子 importjavax swing publicclassInputTest publicstaticvoidmain Stringargs Stringname JOptionPane showInputDialog pleaseinputyouname Stringinput JOptionPane showInputDialog pleaseinputyouage intage Integer parseInt input System out println yourname name youage age System exit 0 2 6数组 2 6 1数组的概念数组 Array 是一组相同数据类型数据的有序集合 在Java语言中数组元素可以由简单数据类型组成也可以由对象组成 数组中的每个元素都具有相同的数据类型 可以用一个统一的数组名和一个下标来唯一地确定数组中的元素 数组主要具有下面的特点 数组是相同数据类型的元素的集合 数组中的各元素是有先后顺序的 在内存中按照这个先后顺序连续存放在一起 数组元素用整个数组的名字和其在数组中的顺序位置来表示 如a 0 表示名字为a的数组中的第一个元素 a 1 表示数组a中的第二个元素 从数组的构成形式上看 可将其分为一维数组和多维数组 2 6 2一维数组 1 一维数组的定义typearrayName 类型 type 可以为Java中任意的数据类型 包括简单类型和复合类型 例如 intintArray DatedateArray 2 一维数组的初始化 静态初始化intintArray 1 2 3 4 StringstringArray abc How you 动态初始化1 简单类型的数组intintArray intArray newint 5 2 复合类型的数组StringstringArray StringstringArray newString 3 为数组中每个元素开辟引用空间 32位 stringArray 0 newString How 为第一个数组元素开辟空间stringArray 1 newString are 为第二个数组元素开辟空间stringArray 2 newString you 为第三个数组元素开辟空间 3 一维数组元素的引用数组元素的引用方式为 arrayName index index为数组下标 它可以为整型常数或表达式 下标从0开始 每个数组都有一个属性length指明它的长度 例如 intArray length指明数组intArray的长度 2 6 3多维数组 Java语言中 多维数组被看作数组的数组 1 二维数组的定义typearrayName type arrayName 2 二维数组的初始化 静态初始化intintArray

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论