




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java基础知识 清华IT教育培训中心 一 Java的运行系统 1 1 1Java运行系统Java运行系统一般由类装载器 ClassLoader 字节码校验器 Bytecodeverifier 解释器 代码生成器和运行支持库等几个部分组成 运行Java字节码的工作是由解释器来完成的 解释执行过程分三步进行 代码的装入 代码的校验和代码的执行 基本结构图 Java程序的编译和执行过程如图 JDK的安装与配制 JDK JavaDevelopmentkit 是SUN公司提供的一套Java开发环境 通常称之为它主要包括了一些常用的JDK工具 执行时需要的函数库 与C连接时所需的文件及一些Java应用程序范例等 2 2 1JDK的获取JDK可以从SUN公司的网站或国内一些常用的资料下载网站免费下载而得 2 2 2JDK的安装安装好JDK后 JDK目录下的一些文件和文件夹说明 COPYRIGHT JDK版本说明 README html JDK的HTML说明文档 README txt JDK基本内容及功能说明 src zip JDK程序源代码压缩文件 bin目录 包含了常用的JDK工具 lib目录 包含了一些在执行JDK可执行文件时所要用到的类库 include目录 包含了一些与c连接时所需的文件 demo目录 包含了许多Sun公司提供的Java小应用程序范例 2 2 3安装Java帮助文档JDK的安装程序中并不包含帮助文档 因此必须从Sun的网站上下载进行安装 是个压缩包 通常安装在JDK所在目录的docs子目录下面 2 2 4环境变量的配置在安装完JDK之后 必须配置环境变量classpath和path JDK才能够正常运行 在环境变量中新建名为classpath的环境变量 如已经存在则只要修改 值为 d jdk1 3 lib classpath指明Java虚拟机要装载类的路径 表示当前目录在环境变量中新建名为path的环境变量 如已经存在则只要修改 值为 path d jdk1 3 bin path指明了操作系统查找JDK工具如javac java等文件的路径 Java开发工具包 Sun公司为程序开发者提供了编译 测试 执行程序等一套完备的工具体系 它们被集中存放在主目录的bin目录下 Java编译器 javac exe 是用户用来将 java文件编译成可以被java解释器运行的类文件 class 的工具 命令格式为 javac 选项 源文件名Java解释器 java exe java解释器也称字节码解释器 它负责解释执行java字节码文件 就是通常所说的java虚拟机 JVM 命令格式为 java 选项 类名 参数 Applet刘览器 appletviewer exe Appletviewer展示Web页面中包含的Applet 通常用于Applet开发过程中的测试 命令格式为 appletviewer 选项 URL JAVA源文件编辑环境的选择 较流行的代码编辑工具 UltraeditTextPadEditplusJava集成开发工具 Visualj Jbuildereclipse Application和Applet的编写与运行 Application程序的编写与运行编写源程序 例HelloWorld java classHelloWorld publicstaticvoidmain String args System out println HelloWorld 注 保存的时候文件名要和类名一致 包括大小写编译源程序首先在命令提示符下 进入该文件的根目录用javac命令编译源文件 如 javacHelloWorld java运行Java程序执行java命令就可运行Java程序 如 javaHelloWorld Applet程序的编写与运行编写源程序 例MyFirstApplet java importjava applet importjava awt publicclassMyFirstAppletextendsApplet publicvoidpaint Graphicsg g drawString Hello javaworld 2 20 编译源程序建立MyFirstApplet html 将MyFirstApplet class字节码文件放入其中 MyFirstAppletprogram浏览MyFirstApplet html 补充 Java程序规范 源文件的命名规则如果在源程序中包含有公共类的定义 则该源文件名必须与该公共类的名字完全一致 字母的大小写都必须一样 这是java语言的一个严格的规定 如果不遵守 在编译时就会出错 因此 在一个java源程序中至多只能有一个公共类的定义 如果源程序中不包含公共类的定义 则该文件名可以任意取名 如果在一个源程序中有多个类定义 则在编译时将为每个类生成一个 class文件 Java编程规范软件开发是一个集体协作的过程 程序员之间的代码是经常要进行交换阅读的 因此 java源程序有一些约定成俗的命名规定 主要目的是为了提高java程序的可读性 包名 包名是全小写的名词 中间可以由点分隔开 例如 java awt event 类名 首字母大写 通常由多个单词合成一个类名 要求每个单词的首字母也要大写 例如classHelloWorldApp 接口名 命名规则与类名相同 例如interfaceCollection 方法名 往往由多个单词合成 第一个单词通常为动词 首字母小写 中间的每个单词的首字母都要大写 例如 balanceAccount isButtonPressed 变量名 全小写 一般为名词 例如 length 常量名 基本数据类型的常量名为全大写 如果是由多个单词构成 可以用下划线隔开 例如 intYEAR intWEEK OF MONTH 如果是对象类型的常量 则是大小写混合 由大写字母把单词隔开 数据类型 数据类型的分类如下所示 数据类型 基本数据类型 复合数据类型 数值型 字符型 char 布尔型 boolean 整型 byte short int long 实型 float double 类 class 数组和字符串 接口 interface 基本数据类型 布尔型布尔型数据只有两个值true和false 且它们不对应于任何整数值 布尔型变量的定义如 booleanb true 字节型字节型以一个字节来表示整数值 取值范围为 128 127 它有八进制 十进制和十六进制三种表示方式 定义如下 bytex 18 整型数据短整型 short 用两个字节表示整数值 整型 int 用4个字节表示整数值 长整型 long 用8个字节表示整数值 注 在声明长整型时 在整数后要加 L 或 l 以示区别 字符型字符 char 类型以2个字节表示一个字符 char类型的数据可以转换为整数类型 其值范围为0 65535 定义char类型字符时 要用一对单引号将字符括起来 如 charc x 浮点型float与double是Java用来表示实数的两种数据类型 float是32位单精度浮点数 而double则是64位双精度浮点数 Float类型的数据其最后一个字符之后需加入 F 或 f 如果数据其最后一个字符之后没有 F 或 f 则默认为double类型的数值 标识符与关键字 3 2 1标识符程序员对程序中的各个元素加以命名时使用的命名记号称为标识符 identifier Java语言中 标识符是以字母 下划线 美元符 开始的一个字符序列 后面可以跟字母 下划线 美元符 数字 Java语言对标识符的使用有如下规定 1 标识符可以由字母 数字 下划线 或美元符号 组成 2 标识符必须以字母 下划线或美元美元开头 3 Java语言是区别大小写语言 Myfirst与myfiirst分别代表不同的标识符 4 标识符不能与关键字 保留字 同名 5 使用标识符应该在一定的程度上反应出它所表示的变量 常量 类或对象和含义 关键字具有专门的意义和用途 不能当作一般的标识符使用 这些标识符称为保留字 reservedword 也称为关键字 下面列出了java语言中的所有保留字 abstract break byte boolean catch case class char continue default double do else extends false final float for finally if import implements int interface instanceof long length native new null package private protected public return switch synchronized short static super try true this throw throws threadsafe transient void while 常量 整型常量十进制整数 如123 456 0八进制整数 以0开头 如0123表示十进制数83 011表示十进制数 9 十六进制整数 以0 x或0X开头 如0 x123表示十进制数291 0X12表示十进制数 18 浮点型常量浮点数常量也叫实常量 十进制数形式 由数字和小数点组成 且必须有小数点 如0 123 1 23 123 0科学计数法形式 如123e3或123E3 其中e或E之前必须有数字 且e或E后面的指数必须为整数 float型 单精度浮点型 的值 必须在数字后加f或F 如1 23f 布尔型常量JAVA语言的布尔常量的取值要么为true 要么为false 它们分别表示真 假两种不同的状态 字符型常量字符常量是用单引号括起来的一个字符 如 a A 字符串型常量字符串常量是用一对双引号括起来的一系列字符 如 Itisaniceday 和 Java 注意 c 不等于 c null常量null常量只有一个值 用null表示 表示对象的引用为空 变量 3 4 1变量的概念JAVA语言的变量用于存储值变化的量 它是在程序运行期间 系统为程序分配的一块内存单元 变量名为内存单元的名称 内存单元中所装载的数据就是变量的值 JAVA语言中的变量必须先定义后使用 定义变量包括指明变量的数据类型和变量名称 必要时还可以指定变量的初始数值 JAVA语言的变量的定义语句格式为 数据类型变量名表 基本数据类型转换数据类型的转换有自动转变和强制转换两种形式 自动类型转换整型 实型 字符型数据可以混合运算 运算中 不同类型的数据先转化为同一类型 然后进行运算 转换从低级到高级 要实现自动类型转变 需要同时满足两个条件 第一是两种类型彼此兼容 第二是目标类型的取值范围大于源类型 例如 当byte型向int型转换时 由于int型的取值范围大于byte型 就会发生自动转换 不同类型数据间的优先关系如下 低 高byte short char int long float double强制类型转换当两种类型彼此不兼容 或者目标类型的取值范围小于源类型 自动转换无法进行 这时就需要进行强制类型转换 强制类型转换的通用格式如下 目标类型变量 目标类型 值 高级数据要转换成低级数据 需用到强制类型转换表达式数据类型的自动提升如果在JAVA应用程序表达式中出现数据类型不一致的情形 那么JAVA运行时系统首先自动将低优先级类型的数据转换成高优先级类型的数据 然后才进行表达式值的计算 变量的作用域Java语言的变量有一定的生存周期和有效范围 Java语言用大括号将若干语句组成语句块 变量的有效范围是声明它的语句所在的语句块 一旦程序的执行离开了这个语句块 变量就变得没有意义 不能再使用了 运算符与表达式 Java中的运算符运算符是一种特殊符号 用以表示数据的运算 赋值和比较 一般由一至三个字符组成 但Java将其视为一个符号 运算符有以下几种 算术运算符 赋值运算符 比较运算符 逻辑运算符 位运算符 算术运算符 例如 3 2 a b i i 注意 1 除有字符串连接的功能外 还能将字符串与其他的数据类型相连组成一个新的字符串 条件是表达式中至少有一个字符串 如 a 68 结果是 a68 2 a是在变量参与参与运算之前自增1 然后用新值参与运算 而a 则是先用原来的值参与运算 然后再将自己加1 a与a 与上述相类似 3 除号 整数除和小数除是有区别 整数之间做除法时 只保留整数部分而舍弃小数部分 赋值运算符 及其扩展赋值运算符如 等例如 i 3 i 3 比较运算符 3 I 0 n 1 逻辑运算符 表达式表达式是由操作数和运算符按一定的语法形式组成的符号序列 一个常量或一个变量名字是最简单的表达式 其值即该常量或变量的值 表达式的值还可以用作其他运算的操作数 形成更复杂的表达式 Java语句及其控制结构 Java语句Java语句是Java标识符的集合 由关键字 常量 变量和表达式构成 是成员方法的主要成分 必须包含在类的方法体之中 Java语句有表达式语句 复合语句 选择语句和循环语句等 语句以分号 作为结束标志 单独的一个分号被看作一个空语句 空语句不做任何事情 在表达式后边加上分号 就是一个表达式语句 经常使用的表达式语句有赋值语句和方法调用语句 表达式语句是最简单的语句 它们被顺序执行 完成相应的操作 复合语句也称为块 block 语句 是包含在一对大括号 中的任意语句序列 与其他语句用分号作结束符不同 复合语句右括号 后面不需要分号 尽管复合语句含有任意多个语句 但从语法上讲 一个复合语句被看作一个简单语句 例 publicclassBlock publicstaticvoidmain Stringargs intk i 3 j 4 k i j System out println k k floatf f j 4 5F i System out println f f System out println i i 运行结果见图2 2 图2 2 程序说明 在main方法中有两个复合语句嵌套在一起 复合语句内包含的是表达式语句 第1个复合语句中说明了3个整型变量k i j 它们不仅在第1个复合语句中起作用 还在被嵌套的第2个复合语句中起作用 而在第2个复合语句中说明的变量f仅在第2个复合语句中起作用 在这个例子中 人为地加入了一个复合语句 在实际编程中并不多见 复合语句更广泛的应用是在结构式语句中 如选择语句和循环语句 当结构式语句中包含的表达式语句超过一条时 就要用大括号把它们括起来 选择语句在复合语句中必须逐行执行每条命令 能否改变程序执行的顺序呢 利用if else结构就可以根据条件控制程序流程 1 if语句if语句的语法结构如下 if 条件表达式 s1语句 这是最简单的单分支结构 条件表达式的值为true 就执行s1语句 否则就忽略s1语句 s1语句可以是复合语句 2 if else语句if选择结构仅当条件为真时才执行某一动作 否则忽略这一动作 而if else选择结构允许程序员指定在条件为真或者条件为假时的不同动作 if语句通常都与else语句配套使用 形成二分支结构 它的语法结构如下 if 条件表达式 s1语句 elses2语句 当条件表达式的值为true 就执行s1语句 忽略else和s2语句 否则 条件表达式的值为false 程序忽略s1语句 执行else后面的s2语句 s1和s2都可以是复合语句 3 if else复合结构对于复杂的情况 我们可以嵌套使用if else语句 它的语法结构如下 if 条件表达式1 s1语句 elseif 条件表达式2 s2语句 elses3语句 在这里依次计算条件表达式 如果某个条件表达式的值为true 就执行它后面的语句 其余部分被忽略 所有表达式的值都为false 就执行最后一个else后的s3语句 s1 s2和s3都可以是复合语句 4 switch开关语句虽然嵌套的条件语句可实现多个分支处理 但嵌套太多时容易出错和混乱 这时可以使用开关语句switch处理 实际上开关语句switch也是一种if else结构 不过它使你在编程时很容易写出判断条件 特别是有很多条件选项的时候 开关语句switch的语法结构如下 switch 表达式 case常量1 语句1 break case常量2 语句2 break default 语句n 其中switch case default是关键字 default子句可以省略 开关语句先计算表达式 然后将表达式值与各个常量比较 如果表达式值与某个常量相等 就执行该常量后面的语句 如果都不相等 就执行default下面的语句 如果无default子句 就什么都不执行 直接跳出开关语句 3 有些case标号列在一起 如 case1 case2 中间没有语句 这表示对所列情况将进行同样的操作 使用开关语句时 注意以下问题 1 case后面的常量必须是整数或字符型 而且不能有相同的值 2 通常在每一个case中都应使用break语句提供一个出口 使流程跳出开关语句 否则 在第一个满足条件case后面的所有语句都会被执行 这种情况叫做落空 循环语句1 for循环语句for循环的语法结构为 for 表达式1 表达式2 表达式3 循环体2 while循环语句while循环的语法结构为如下形式 while 条件表达式 循环体 3 do while循环如不用大括号 循环体中只含一条语句的do while结构如下 do语句while 条件 只有一条语句的do while结构也常常写成如下形式 do 语句 while 条件 4 循环语句的嵌套5 循环语句小结一个循环一般应包括以下4部分内容 1 初始化部分用来设置循环的一些初始条件 计数器清零等 2 循环体部分这是反复被执行的一段代码 可以是单语句 也可以是复合语句 3 迭代部分这是在当前循环结束 下一次循环开始时执行的语句 常用来使计数器加1或减1 4 终止部分通常是一个布尔表达式 每一次循环要对该表达式求值 以验证是否满足循环终止条件 跳转语句1 break和continue语句2 带标号的break和continue语句 数组 java语言中 数组是一种最简单的复合数据类型 数组是有序数据的集合 数组中的每个元素具有相同的数据类型 可以用一个统一的数组名和下标来唯一地确定数组中的元素 数组有一维数组和多维数组 3 6 1一维数组一维数组的定义typearrayName 类型 type 可以为Java中任意的数据类型 包括简单类型和复合类型 一维数组的初始化 静态初始化intintArray 1 2 3 4 StringstringArray abc How you 动态初始化1 简单类型的数组intintArray intArray newint 5 2 复合类型的数组StringstringArray StringstringArray newString 1 stringArray 0 newString How 一维数组元素的引用数组元素的引用方式为 arrayName index index为数组下标 它可以为整型常数或表达式 下标从0开始 每个数组都有一个属性length指明它的长度 例如 intArray length指明数组intArray的长度 3 6 2二维数组二维数组的定义typearrayName 或type arrayName 二维数组的初始化 静态初始化intintArray 2 3 2 3 3 4 5 Java语言中 由于把二维数组看作是数组的数组 数组空间不是连续分配的 所以不要求二维数组每一维的大小相同 动态初始化1 直接为每一维分配空间 格式如下 arrayName newtype arrayLength1 arrayLength2 例 inta newint 2 3 2 从最高维开始 分别为每一维分配空间 arrayName newtype arrayLength1 arrayName 0 newtype arrayLength20 arrayName 1 newtype arrayLength21 arrayName arrayLength1 1 newtype arrayLength2n 二维数组元素的引用对二维数组中的每个元素 引用方式为 arrayName index1 index2 例如 num 1 0 常用Packages的分组在这些包中 除了java lang包外 其他的包必须通过import语句引入 经系统加载后 包中的类才能直接被程序所使用 JavaAPI介绍 8 2java lang包 java lang包是Java中最重要的包 他在Java虚拟机运行时被加载 因此他可直接使用 不需import语句引入 8 2 1java lang System类System类提供了标准输入输出 运行时的系统信息等重要工具 System类的所有属性和方法都是静态的 直接以类名System作为前缀来引用 不能用System类来创建对象 System in与System out是System类的两个静态属性 分别对应了系统的标准输入与输出 1 标准输入流也称控制台输入流 System in 用于程序输入 通常读取用户从键盘输入的信息 2 标准输出流又称为控制台输出流 System out 用于程序输出 通常向用户显示信息 3 System err称为标准错误流 用于是向用户显示错误信息 常用到的方法 P94表8 3 java lang String类String类封装了有关字符串的操作 这里的字符串是常量 即创建后就不可进行修改和变动 如果在程序中只做字符串比较 搜索等操作时 通常使用String类 1 字符串常量的创建字符串数据类型是由String类所建立的对象 其内容是由一对双引号括起来的字符序列 因此 在创建String类的对象时 通常需要向String类的构造函数传递参数来指定所创建的字符串内容 P95表8 4 2 字符串与其他数据类型的转换 P96表8 5 3 字符串中查找与处理String类中提供了求字符串的长度 返回字符的位置 搜索字符串的子串等操作 在整数型返回值中 若没有找到对应的字符串 则返回 1 P96表8 6 4 字符串比较和连接Java字符串的比较是依据两个字符串中的第1个字符的ASCII码值的大小来进行的 ASCII码大的便是最大的字符串 如果两个字符串的第1个字符的ASCII码值相等则依次比较第2个 第3个 P97表8 7 8 2 3java lang StringBuffer类StringBuffer类则是动态可变的字符串缓冲 它提供了一系列方法 见P98表8 8 把不同类型 如整型 布尔型等 数据插入缓冲或追加在缓冲的末尾 8 3java lang Math类 Math类主要完成一些常用的数学运算 它提供了基本的科学运算函数的方法 这些方法都是公共的 静态的 可以直接使用类名作前缀来调用这些方法 P99表8 9列出了Math类的主要方法 8 4java util类 java util是Java是实用工具类包 这个包提供了一些如日期 Date 类 随机数 Random 类 堆栈 Stack 类等 为程序设计提供了便利 8 4 1日期类DateJava在日期类中封装了有关日期和时间的信息 用户可以通过调用相应的方法来获取系统时间或设置日期和时间 常用的date类的主要方法见P100表8 10 8 4 2随机数类RandomJava实用工具类库中的类java util Random提供了产生各种类型随机数的方法 它可以产生int long float double以及Gaussian等类型的随机数 这也是他与java lang Math中的方法Random 最大的不同之处 后者只产生double型的随机数 类Random中的方法比较简单 见P102表8 11 8 4 3矢量类VectorVector类实现了可动态扩充的对象数组 类似数组 它包含的元素可通过数组下标来访问 但是 在Vector创建之后 Vector可根据增加和删除元素的需要来扩大或缩小存储容量 P103表8 12 8 5Java输入输出类 8 5 1输入流与输出流字节输入流InputStream与字节输出流OutputStream是两个抽象类 它们为java io包中的字节输入和输出流打下了基础 对于字符流 相应的流类是Reader和Writer 它们的方法与InputStream和OutputStream
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 质量检查月活动方案
- 见面礼仪活动策划方案
- 黄河鲤鱼活动方案
- 航空普测考试题及答案
- 贵州导游考试题及答案
- 光纤光学考试题及答案
- 股票高考试题及答案
- 工具钳工考试题及答案
- 各种注射考试题及答案
- 高职往年考试题及答案
- 数字时代的艺术史重构-洞察及研究
- 零星维修工程项目方案投标文件(技术方案)
- 海龟汤题目和答案(100题)
- 学习进阶理论指导下的美国科学课程体系整合研究
- 2025年法院书记员考试试题及答案
- 车队车辆保养维护方案
- 【教学评一体化】第五单元 观世间万物悟人生哲思【大单元公开课一等奖创新教学设计】新统编版语文七年级下册名师备课
- 新课程标准2025版解读
- 非营利组织会计岗位职责
- 电梯维修改造施工方案大修
- 军工科研事业单位会计制度
评论
0/150
提交评论