已阅读5页,还剩302页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章Java语言概述 华中科技大学IBM技术中心2008 华中科技大学IBM技术中心 HUST IBMComputerTech Center 主要内容提要 Java程序的开发环境 Java程序相关问题 Java语言的主要特性 Java语言的发展历史 Java程序的开发过程 华中科技大学IBM技术中心 HUST IBMComputerTech Center Java语言的发展历史 Internet迅猛发展Java语言正式问世被美国著名杂志PCMagazine评为1995年十大优秀科技产品之一 JamesGosling领导的Green小组开发了面向数字家电的Oak语言 推出了Java2平台 性能上有所提高 而且对Java的基本模式进行了完善 并提供了更为丰富的API 1991 1995 1998 华中科技大学IBM技术中心 HUST IBMComputerTech Center Java2的版本划分 华中科技大学IBM技术中心 HUST IBMComputerTech Center Java语言的主要特性 华中科技大学IBM技术中心 HUST IBMComputerTech Center Java程序相关问题 Java虚拟机 Java虚拟机 在真实机器中用软件模拟实现的一种抽象的机器 Java虚拟机规范 Java虚拟机主要由五个部分组成 指令系统 寄存器 栈 存储区 碎片回收区解释和执行Java程序编译后产生的字节码 华中科技大学IBM技术中心 HUST IBMComputerTech Center Java程序相关问题 JavaAPI JavaAPI是Java系统提供的预先定义好的软件组件的集合 它们提供了许多可供程序员调用的常用功能丰富的API为程序员提供了极大的方便 但也是学习的难点要学会使用JavaAPI手册 TheJava2PlatformAPISpecification 华中科技大学IBM技术中心 HUST IBMComputerTech Center Java程序相关问题 Java程序的运行机制 操作系统 源代码 可执行代码 目标码 编译 连接 运行 源代码 字节码 编译 解释执行 Java解释器 传统语言的运行机制 Java语言的运行机制 华中科技大学IBM技术中心 HUST IBMComputerTech Center Java程序相关问题 Java程序类型 Java应用程序 JavaApplication 是独立完整的程序在命令行调用独立的解释器软件即可运行主类必须有main方法 这也是程序的入口Java小程序JavaApplet 是指在客户端运行的Java小程序 一般来说客户端是指用户所使用的浏览器JavaServlet 是在服务器端执行的Java小程序 为了能够支持Servlet的运行 服务器端必须安装包含Java虚拟机的服务器软件 这种能够支持服务端小程序的服务器一般被称为应用服务器 华中科技大学IBM技术中心 HUST IBMComputerTech Center Java开发环境 JDK J2SDK JavaDeveloperKit JDK1 02JDK1 1 xJDK1 2 J2SDK1 3 J2SDK1 4 JDK5 0 J2SDK1 5 Java集成开发环境 IDE NetBeansJBuilderEclipseJCreatorForteforJavaVisualJ WSAD 华中科技大学IBM技术中心 HUST IBMComputerTech Center JDK的安装与设置 从 华中科技大学IBM技术中心 HUST IBMComputerTech Center 环境设置 在Windows环境下 为了快速进入指定目录的命令行窗口 可在注册表中增加项目 HKEY CLASSES ROOT Directory shell 进入命令行 command 默认值设为 cmd k cd 1 华中科技大学IBM技术中心 HUST IBMComputerTech Center JDK的目录结构 bin目录中包含了所有JDK5 0提供的实用程序demo目录中包含了JDK5 0自带的实例程序inculde目录中包含了一些支持Javanative方法的C C 头文件jre目录中包含了Java运行环境所需的所有文件 这个目录中所包含的java运行环境是JDK私有的 它只为JDK的实用程序提供支持lib目录中包含了Java开发环境所需的库文件 它们以jar文件的形式保存sample目录中包含的是体现JDK5 0新特性的一些例程 华中科技大学IBM技术中心 HUST IBMComputerTech Center JDK实用程序简介 javac Java编译器 将Java源代码编译为字节码 java Java解释器 用来解释执行Java程序的字节码文件 appletviewer 小程序浏览器 一种执行HTML文件上的Java小程序类的Java浏览器 javadoc 根据Java源代码及其说明语句生成的HTML文档 jdb Java调试器 可以逐行地执行程序 设置断点和检查变量 javah 产生可以调用Java过程的C过程 或建立能被Java程序调用的C过程的头文件 javap Java反汇编器 显示编译类文件中的可访问功能和数据 同时显示字节代码含义 华中科技大学IBM技术中心 HUST IBMComputerTech Center Java程序的开发过程 编辑源代码编译源代码文件运行程序 华中科技大学IBM技术中心 HUST IBMComputerTech Center Java程序的开发过程 编辑源代码 一般情况下 我们可以使用系统平台下的任何文本编辑器进行源代码的编辑 在Windows平台下常用的是Window系统自带的 记事本 程序或 写字板 程序Java源码大小写敏感Java源码文件的扩展名 javaJava源程序文件也不能随意命名 其文件名必须与程序中主类的类名完全相同 包括大小写在内 publicclassMyFirstJavaApp publicstaticvoidmain String args System out println ThisisMyFirstJavaApplication 华中科技大学IBM技术中心 HUST IBMComputerTech Center Java程序的开发过程 编译源代码 使用JDK实用程序javac对源代码文件进行编译C MyJava javacMyFirstJavaApp java如果系统提示符再次出现并且没有任何消息产生 那么编译便成功了如果有系统报错消息产生 则表示程序编译出错 程序员必须阅读报错信息 并根据这些信息对程序进行修改程序成功编译后 在与源代码文件同一目录下会生成一个新的文件 其文件名与源代码文件名相同 扩展名为 class 这个文件就是源代码文件编译产生的程序字节码文件MyFirstJava class 华中科技大学IBM技术中心 HUST IBMComputerTech Center Java程序的开发过程 运行程序 要执行一个Java程序非常简单 只需在字节码文件所在目录下输入下列命令就可以了 java字节码文件名 Question 第2章面向对象的编程概念 华中科技大学IBM技术中心2006 华中科技大学IBM技术中心 HUST IBMComputerTech Center 主要内容提要 什么是接口 什么是继承 什么是类 什么是消息 什么是对象 华中科技大学IBM技术中心 HUST IBMComputerTech Center 面向对象vs 面向过程 面向对象 OOP Object OrientedProgramming用类class封装数据以及与数据相关的操作用类的继承性来实现类的重用性多态性面向 对象 由对象提供服务面向过程 POP Procedure OrientedProgramming以功能为组织单元通过数据结构来描述具体的问题数据在功能 函数 之间以参数的形式被传送 华中科技大学IBM技术中心 HUST IBMComputerTech Center 现实世界中的对象 现实世界是由对象构成的现实世界中任何实体都可以看作是对象现实世界中的对象有两个共同特征 状态行为 华中科技大学IBM技术中心 HUST IBMComputerTech Center 软件对象 Object 软件对象是现实世界对象的抽象软件对象同样具有状态和行为定义 对象是变量和相关方法的软件组合 华中科技大学IBM技术中心 HUST IBMComputerTech Center 现实对象 软件对象 华中科技大学IBM技术中心 HUST IBMComputerTech Center 封装 Encapsulation 封装性体现了面向对象程序设计的一个特性 将方法和数据组织在一起 隐藏其具体实现而对外体现出公共的接口模块化隐藏信息 华中科技大学IBM技术中心 HUST IBMComputerTech Center 消息 Message 复杂的行为必须通过对象之间的交互来实现软件对象与其它对象进行交互与通讯是通过互发消息来实现的 对象B 对象A 消息 华中科技大学IBM技术中心 HUST IBMComputerTech Center 消息的组成 消息的目的对象要执行的方法的名称方法所需参数 你的车 你 换档 低档 华中科技大学IBM技术中心 HUST IBMComputerTech Center 消息的性质 同一对象可接收不同形式的多个消息 产生不同的响应同一个消息可以发给不同的对象 所做出的响应可以截然不同发送方不需要知道接受方如何对请求予以响应的 华中科技大学IBM技术中心 HUST IBMComputerTech Center 类 Class 定义 类是蓝图或原型 它定义了所有某种类的对象的共有的变量和方法类是具有共同属性和行为的对象的抽象与集合 私有的实现细节 公共API 华中科技大学IBM技术中心 HUST IBMComputerTech Center 实例 Instance 定义 特定类所描述的一个具体对象 华中科技大学IBM技术中心 HUST IBMComputerTech Center 对象 类与实体的关系 华中科技大学IBM技术中心 HUST IBMComputerTech Center 继承 Inheritance 广义地说 继承是指能够直接获得已有的性质和特性 而不必重复定义它们 在面向对象的软件技术中 继承是子类自动地共享父类中定义的数据和方法的机制 华中科技大学IBM技术中心 HUST IBMComputerTech Center 单重继承与多重继承 单重继承 一个子类只有一个唯一确定的父类单重继承所构成的类的关系结构是一棵树多重继承 一个子类可以有多个不同的父类多重继承所构成的类的关系结构是一个格Java语言仅支持单重继承 华中科技大学IBM技术中心 HUST IBMComputerTech Center 继承的作用 使软件系统具有开放性更好地进行抽象与分类实现代码的复用提高可维护性 华中科技大学IBM技术中心 HUST IBMComputerTech Center 类型 Type 在面向数值的编程中 类型通常用作数据的表示 在Java这样的强类型语言中 在编译期 每一个变量和表达式都有一个类型与之相对应Java中的类型 基本类型 类 接口 华中科技大学IBM技术中心 HUST IBMComputerTech Center 接口 Interface 接口和类一样也是一种类型 也同样包含一些方法的定义 但与类不同的是 接口中所定义的所有方法都是抽象方法 即没有实现的方法 接口中所定义的方法由实现 implement 该接口的类来实现 一个类可以同时实现多个接口接口机制使Java的面向对象编程变得更加灵活 解决了单重继承带来的问题接口定义了对象的行为模型 相当于一个协议 实现接口的各个类负责实现接口所定义的行为 虽然实现细节各不相同 但对用户来说是一样的行为 华中科技大学IBM技术中心 HUST IBMComputerTech Center 面向对象的示例 本例中包含很多对象 点 窗口 颜色 点击事件 代码 ClickMeApp java ClickMe java Spot java 华中科技大学IBM技术中心 HUST IBMComputerTech Center Spot类 publicclassSpot instancevariablesprivateintsize publicintx y constructorpublicSpot x 1 y 1 size 1 methodsforaccesstothesizeinstancevariablepublicvoidsetSize intnewSize if newSize 0 size newSize publicintgetSize returnsize 华中科技大学IBM技术中心 HUST IBMComputerTech Center Spot对象 privateSpotspot null spot newSpot 华中科技大学IBM技术中心 HUST IBMComputerTech Center 示例中的消息 g2d setColor Color WHITE g2d fillRect 0 0 getWidth 1 getHeight 1 华中科技大学IBM技术中心 HUST IBMComputerTech Center 示例中的继承和接口 publicclassClickMeextendsJComponentimplementsMouseListener publicclassClickMeextendsJComponentimplementsMouseListener MethodsrequiredbytheMouseListenerinterface publicvoidmousePressed MouseEventevent if spot null spot newSpot spot setSize RADIUS spot x event getX spot y event getY repaint publicvoidmouseClicked MouseEventevent publicvoidmouseReleased MouseEventevent publicvoidmouseEntered MouseEventevent publicvoidmouseExited MouseEventevent 欢迎提问 Question 第三章Java语言基础 华中科技大学IBM技术中心 华中科技大学IBM技术中心 HUST IBMComputerTech Center 变量 Variable 对象将它的状态存储在变量中定义 变量是一个由标识符命名的数据项变量名必须是一个合法的标识符 一个以字母开头的无限制的Unicode字符序列 变量的声明 类型名称 初始值 inti doublepi 3 1415926 Stringname 华中科技大学IBM技术中心 HUST IBMComputerTech Center 数据类型 每个变量都必须有一个数据类型 一个变量的数据类型决定了它能容纳的值和在它上面可以进行什么操作 Java编程语言有两大类数据类型 原始类型 primitive 引用类 reference 华中科技大学IBM技术中心 HUST IBMComputerTech Center Java的数据类型 华中科技大学IBM技术中心 HUST IBMComputerTech Center 原始类型变量包含单个值 其大小和格式与它的类型匹配 数字 字符或布尔值 Java语言没有unsigned类型0 xFFFF和0 xFF谁大 Java语言必须强制类型转换floatf 0 1 booleanb 1 原始类型 华中科技大学IBM技术中心 HUST IBMComputerTech Center 引用类型 数组 类和接口就是引用数据类型 与原始类型变量的值不同的是 引用类型变量的值是对应变量代表的一个值或一组值的引用 也就是其地址 在其他语言里引用被称为指针或者内存地址 Java不支持显示地使用地址 而是使用变量的名称代替 华中科技大学IBM技术中心 HUST IBMComputerTech Center 变量的引用 通过变量名引用变量的值简单名称 由单个标识符组成的名称限定名称 通过类名或对象名引用改类或对象中的成员变量System out println i spot x 华中科技大学IBM技术中心 HUST IBMComputerTech Center 作用范围 变量的作用范围是可以通过简单名称引用该变量的程序区域作用范围也决定了系统为该变量创建和释放内存的时间 华中科技大学IBM技术中心 HUST IBMComputerTech Center 例子 inti 10 if i 0 inti 20 System out println Thevalueofi i System out println Thevalueofi i 华中科技大学IBM技术中心 HUST IBMComputerTech Center 最终变量 你可以在任意范围里将一个变量定义为最终变量 final 最终变量的值一经初始化就不能改变类似于C语言中的常量 const finalintaFinalVar 0 finalintblankfinal blankfinal 0 华中科技大学IBM技术中心 HUST IBMComputerTech Center 操作符 表达式 语句和块 自学 第四章对象基础和简单数据对象 华中科技大学IBM技术中心 华中科技大学IBM技术中心 HUST IBMComputerTech Center 主要内容 数组 数字 字符和字符串 对象的生存周期 华中科技大学IBM技术中心 HUST IBMComputerTech Center 对象的生命周期 华中科技大学IBM技术中心 HUST IBMComputerTech Center CreateObjectDeom publicclassCreateObjectDemo publicstaticvoidmain String args 创建一个Point对象和两个Rectangle对象Pointorigin one newPoint 23 94 Rectanglerect one newRectangle origin one 100 200 Rectanglerect two newRectangle 50 100 显示rect one的宽 高以及面积System out println Widthofrect one rect one width System out println Heightofrect one rect one height System out println Areaofrect one rect one area rect two origin origin one 设置rect two的位置 显示rect two的位置System out println XPositionofrect two rect two origin x System out println YPositionofrect two rect two origin y 移动rect two并且显示它的新位置rect two move 40 72 System out println XPositionofrect two rect two origin x System out println YPositionofrect two rect two origin y 华中科技大学IBM技术中心 HUST IBMComputerTech Center 对象的创建 类型名引用变量 new构造器 构造器的参数 华中科技大学IBM技术中心 HUST IBMComputerTech Center 声明一个变量来引用对象 为了声明一个变量来引用对象 你可以使用类或者接口的名字作为变量的类型声明并没有创建新对象 在对该引用变量赋值前 该引用为空 称为空引用 null 类型名引用变量 new构造器 构造器的参数 Pointorigin one 华中科技大学IBM技术中心 HUST IBMComputerTech Center 实例化对象 new操作符通过为新对象分配内存来实例化一个类new操作符需要一个后缀参数 即构造器的一个调用new操作符返回一个对它所创建对象的引用 通常该引用被赋值给具有适当类型的引用变量如果new操作符返回的引用没有被赋给任何变量 那么当new操作符所在的语句执行完后 将无法访问该对象 华中科技大学IBM技术中心 HUST IBMComputerTech Center 初始化对象 构造器 Constructor 是一个用来创建对象的特殊方法 用来初始化对象的属性 构造器的名字与类名相同构造器没有返回值构造器所包含的语句用来对所创建的对象进行初始化没有参数的构造器称为 无参构造器 每个Java类都至少有一个构造器 如果该类没有显式地声明任何构造器 系统会默认地为该类提供一个不包含任何语句的无参构造器 华中科技大学IBM技术中心 HUST IBMComputerTech Center 对象创建的实例 publicclassPoint publicintx 0 publicinty 0 publicPoint intx inty this x x this y y Pointorigin one newPoint 23 94 华中科技大学IBM技术中心 HUST IBMComputerTech Center 问题 Pointorigin one newPoint 23 94 Pointorigin two newPoint 23 94 Pointorigin one newPoint 23 94 Pointorigin two origin two 华中科技大学IBM技术中心 HUST IBMComputerTech Center 构造器的重载 Overload publicclassRectangle publicintwidth 0 publicintheight 0 publicPointorigin publicRectangle origin newPoint 0 0 publicRectangle Pointp origin p publicRectangle intw inth this newPoint 0 0 w h publicRectangle Pointp intw inth origin p width w height h 一个类可以包含多个构造器 这种情况成为构造器的重载同一个类中的多个构造器通过参数的数目及类型的不同来区分 华中科技大学IBM技术中心 HUST IBMComputerTech Center 对象的使用 对象的使用有两种方式操作或者检查它的变量调用它的方法要使用对象的实例成员 首先需要得到该对象的引用 华中科技大学IBM技术中心 HUST IBMComputerTech Center 实例成员与类成员 实例成员包括实例变量与实例方法实例成员依赖于实例存在同一个类的不同实例都拥有一份实例变量的拷贝 对某个实例的实例变量的操作不影响到其它实例实例变量遵循对象的生命周期 随着对象的创建而创建 随着对象的消亡而消亡必须通过实例的引用来调用实例方法类成员包括类变量与类方法类成员不依赖于实例存在同一个类的不同实例共享同一个类变量 对类变量的改变会影响到所有实例类变量的生存期不依赖于对象 其它类可以不用通过创建该类的实例 直接通过类名访问它们 同样 类方法也可以直接通过类名访问 华中科技大学IBM技术中心 HUST IBMComputerTech Center 实例成员与类成员 classABCD chardata staticintshare data classDemo ABCDa b c d 实例化 华中科技大学IBM技术中心 HUST IBMComputerTech Center 实例变量的引用 简单名称当实例变量处在作用域内 即对象的类的代码内 的时候限定名称objectReference variableName当实例变量处在作用域外时使用限定名称 System out println Widthofrect one rect one width System out println Heightofrect one rect one height intheight newRectangle height 华中科技大学IBM技术中心 HUST IBMComputerTech Center 关于变量访问的说明 建议不要通过其它对象或类直接操作对象的变量 可能引起无效值理想情况下 类会提供一些方法 其他对象可以通过他们检查或修改变量 确保值有效 而且如果变量的类型和名称发生了变化 不会影响它的使用者在某些情况下 可以允许对对象变量的直接访问 以使类更小更简单 也可使变量适用于更广泛范围 JAVA编程语言提供了一个访问控制机制 通过这种机制 类可以决定那些其它的类可以直接访问它的变量 第五章中介绍 华中科技大学IBM技术中心 HUST IBMComputerTech Center 调用对象的方法 使用限定名称来调用对象的方法objectReference methodName argumentList 或者objectReference methodName System out println Areaofrect one rect one area rect two move 40 72 intareaOfRectangle newRectangle 100 50 area 华中科技大学IBM技术中心 HUST IBMComputerTech Center 关于方法调用 方法被声明为public 就可以被任何其它的类所访问 有时 类需要限制对它的方法的访问类可以使用与控制变量访问相同的机制来对它的方法进行访问控制 第五章中介绍 华中科技大学IBM技术中心 HUST IBMComputerTech Center 对象的清除 JAVA运行时环境在当对象不再被使用的时候清除它们 这个过程就是所谓的 垃圾收集 garbagecollection Java的垃圾收集器自动扫描对象的动态内存区 对被引用的对象加标记 然后把没有引用的对象作为垃圾收集起来并释放 垃圾收集器作为一个线程运行 当系统的内存用尽或程序中调用System gc 要求进行垃圾收集时 垃圾收集线程与系统同步运行 否则垃圾收集器在系统空闲时异步地执行 华中科技大学IBM技术中心 HUST IBMComputerTech Center 无用对象的判定 当某个对象不在被任何引用变量引用时 该对象是无用对象 将被清除 一般有如下两种情况 引用变量超出了作用域 StringBuffers newStringBuffer thisisatest 超出对象作用域 引用变量引用了其它对象或引用了空对象StringBuffers newStringBuffer test1 s newStringBuffer test2 引用了新的对象 s null 引用为空 华中科技大学IBM技术中心 HUST IBMComputerTech Center finalize 方法 在对对象进行垃圾收集前 Java运行时系统会自动调用对象的finalize 方法来释放系统资源 某些情况下 程序员可能需要实现该方法来释放不由垃圾收集器所控制的资源 但这种情况非常少见finalize 方法是在Object中有缺省实现 在用户自定义的类中 它可以被覆盖 但一般在最后要调用父类的finalize 方法来清除对象所使用的所有资源 华中科技大学IBM技术中心 HUST IBMComputerTech Center 问题一 下列程序的运行结果 publicclassSomethingIsWrong publicstaticvoidmain String args RectanglemyRect myRect width 40 myRect height 50 System out println myRect sareais myRect area 华中科技大学IBM技术中心 HUST IBMComputerTech Center 问题二 现有一个Point和Rectangle对象 代码执行后有多少引用指向它们 有没有对象需要垃圾收集 Pointpoint newPoint 2 4 Rectanglerectangle newRectangle point 20 20 point null 华中科技大学IBM技术中心 HUST IBMComputerTech Center 字符和字符串 JavaAPI提供了三个处理字符数据的类 Character 这个类的实例可以容纳单一的字符数值 该类还定义了一些简洁的方法来操作或者检查单一字符数据 String 这个类用于处理由多个字符组成的不可变数据 StringBuffer 这个类用于存储和操作由多个字符组成的可变数据 华中科技大学IBM技术中心 HUST IBMComputerTech Center 字符类 Character 字符类的对象包含单个字符值当需要使用对象时 可以用字符对象替代原始的char类型的变量 华中科技大学IBM技术中心 HUST IBMComputerTech Center 字符类 构造器和方法 Character char Character类唯一的构造器 它创建一个字符对象 其中包含由参数提供的值 一旦创建了Character对象 它包含的值就不能改变 compareTo Character 这个实例方法比较两个字符对象包含的值 这个方法返回一个整数值 表示当前对象中的值是大于 等于还是小于参数所包含的值 华中科技大学IBM技术中心 HUST IBMComputerTech Center 字符类 构造器和方法 equals Object 这个实例方法比较当前对象包含的值与参数对象包含的值 如果两个对象包含的值相等 那么这个方法返回truetoString 这个实例方法将此对象转换为字符串charValue 这个实例方法以原始char值的形式返回此字符对象包含的值isUpperCase 这个实例方法判断一个原始char值是否是大写字母 华中科技大学IBM技术中心 HUST IBMComputerTech Center 字符类 例程 publicclassCharacterDemo publicstaticvoidmain Stringargs Charactera newCharacter a Charactera2 newCharacter a Characterb newCharacter b intdifference pareTo b if difference 0 System out println aisequaltob elseif difference0 System out println aisgreaterthanb System out println ais a equals a2 equal notequal toa2 System out println Thecharacter a toString is Character isUpperCase a charValue upper lower case 程序的输出 aislessthanb aisequaltoa2 Thecharacteraislowercase 华中科技大学IBM技术中心 HUST IBMComputerTech Center 字符类 类方法 华中科技大学IBM技术中心 HUST IBMComputerTech Center 问题 Charactera newCharacter a Characterb newCharacter a 下列boolean表达式的值是true还是false 1 pareTo b 0 2 a equals b 3 a b 华中科技大学IBM技术中心 HUST IBMComputerTech Center 字符串和字符串缓冲区 Java平台提供两个类String和StringBuffer 它们用于存储和操作字符串 由多个字符组成的字符数据 String类用于其值不能改变的字符串 StringBuffer类用于被修改的字符串 通常用来动态的构造字符数据 字符串是常量 比字符串缓冲区更高效 而且字符串可以被共享 华中科技大学IBM技术中心 HUST IBMComputerTech Center 字符串 String 使用字符串常量时 需要创建String对象 和其它对象不同 String对象可以通过简单赋值语句创建 Stringname Petter 此外 也可根据String类的构造函数创建String对象 Stringname newString Petter 对于程序任何位置出现的双引号标记的字符串 系统都会自动创建一个String对象 可通过String对象的方法对字符串进行操作 华中科技大学IBM技术中心 HUST IBMComputerTech Center 字符串 构造器 华中科技大学IBM技术中心 HUST IBMComputerTech Center 字符串的不可变性 String类用于其值不能改变的字符串观察下列程序 publicclassStringTest publicstaticvoidmain String args Strings abc s s defg System out println s 程序运行结果是abc还是abcdefg 华中科技大学IBM技术中心 HUST IBMComputerTech Center 字符串的不可变性 s s defg 华中科技大学IBM技术中心 HUST IBMComputerTech Center 字符串缓冲区 StringBuffer String对象表示的是不可更改的字符串对象 如果需要修改String对象所表示的内容 必须重新创建一个对象 Stringstr Petter str str 当修改操作频繁 或字符串的值很大时 会额外分配大量内存因此 Java语言引入了一个StringBuffer类 用来表示内容可以扩充和修改字符串对象 华中科技大学IBM技术中心 HUST IBMComputerTech Center StringBuffer 构造器 必须使用new操作符创建字符串缓冲区 Strings DotsawIwasTod StringBufferdest newStringBuffer s 华中科技大学IBM技术中心 HUST IBMComputerTech Center 访问器方法 用于获取关于对象的信息的方法被称为访问器方法 字符串和字符串缓冲区都可以使用的一个访问器方法就是length方法 length方法返回字符串和字符串缓冲区中包含的字符数 Stringpalindrome DotsawIwasTod intlen palindrome length 华中科技大学IBM技术中心 HUST IBMComputerTech Center 容量 在StringBuffer类中还有一个capacity 方法 它返回分配给这个字符串缓冲区的容量 而不是使用量 使用量会改变 但是容量始终是不变的 华中科技大学IBM技术中心 HUST IBMComputerTech Center 通过索引得到字符 charAt 访问器方法 通过索引从字符串或者字符串缓冲区得到字符 索引值从零开始 StringanotherPalindrome Niagara Oroaragain charaChar anotherPalindrome charAt 9 华中科技大学IBM技术中心 HUST IBMComputerTech Center substring方法 如果要从字符串或者字符串缓冲区得到多个字符 可以使用substring方法 Stringsubstring int Stringsubstring int int StringanotherPalindrome Niagara Oroaragain Stringroar anotherPalindrome substring 11 15 华中科技大学IBM技术中心 HUST IBMComputerTech Center search string类提供两个访问器方法 返回特定的字符或者子字符串在字符串中的位置 indexOf 方法从字符串的开头查找 lastindexOf 方法从字符串的末尾查找 stringBuffer类不支持indexOf 和lastindexOf 方法 华中科技大学IBM技术中心 HUST IBMComputerTech Center search 华中科技大学IBM技术中心 HUST IBMComputerTech Center searchexample publicclassFilename privateStringfullPath privatecharpathSeparator extensionSeparator publicFilename Stringstr charsep charext fullPath str pathSeparator sep extensionSeparator ext publicStringextension intdot fullPath lastIndexOf extensionSeparator returnfullPath substring dot 1 publicStringfilename intdot fullPath lastIndexOf extensionSeparator intsep fullPath lastIndexOf pathSeparator returnfullPath substring sep 1 dot publicStringpath intsep fullPath lastIndexOf pathSeparator returnfullPath substring 0 sep 华中科技大学IBM技术中心 HUST IBMComputerTech Center searchexample publicclassFilenameDemo publicstaticvoidmain String args FilenamemyHomePage newFilename home mem index html System out println Extension myHomePage extension System out println Filename myHomePage filename System out println Path myHomePage path 程序输出 Extension htmlFilename indexPath home mem 华中科技大学IBM技术中心 HUST IBMComputerTech Center 比较字符串和字符串缓冲区 华中科技大学IBM技术中心 HUST IBMComputerTech Center 操作字符串 华中科技大学IBM技术中心 HUST IBMComputerTech Center 修改字符串缓冲区 华中科技大学IBM技术中心 HUST IBMComputerTech Center 数字类 Number类及其子类主要用于处理数字Number类的对象包含了原始类型的数值并且提供了一些有用的变量和方法 用于对数值进行处理 华中科技大学IBM技术中心 HUST IBMComputerTech Center 类型包装器类 Type Wrapperclass 数字类 Boolean Character和void类统称为类型包装器类在需要对象的地方 可将原始类型的值存储在类型包装器对象中这些类定义了一些有用的变量 提供关于数据类型的一般信息这些类还定义了一些有用的方法 用于将值转换为其他类型 转换为字符串等等这些类用于反射 反射这种java机制允许程序收集关于JVM中任何对象或类的信息此外 BigInteger和BigDecimal还扩展了原始数据类型 华中科技大学IBM技术中心 HUST IBMComputerTech Center 例程 publicclassNumberDemo publicstaticvoidmain Stringargs FloatfloatOne newFloat 14 78f 13 78f FloatfloatTwo Float valueOf 1 0 DoubledoubleOne newDouble 1 0 intdifference floatOpareTo floatTwo if difference 0 System out println floatOneisequaltofloatTwo elseif difference0 System out println floatOneisgreaterthanfloatTwo System out println floatOneis floatOne equals doubleOne equal notequal todoubleOne floatOneisequaltooneAgain floatOneisnotequaltodoubleOne 华中科技大学IBM技术中心 HUST IBMComputerTech Center 数字的转换 格式化 高级算术功能 自学 华中科技大学IBM技术中心 HUST IBMComputerTech Center 数组 数组是一个固定长度的结构 它存储多个相同类型的值数组直接被JAVA语言所支持 所以没有一个数组类数组的长度在数组创建的时候就已经确定 数组元素就是数组中的一个数值 可以通过数组中的位置来访问它 华中科技大学IBM技术中心 HUST IBMComputerTech Center 创建数组 声明一个引用变量来引用一个数组格式 type 引用变量名type引用变量名 允许但不推荐 数组变量的声明并不创建数组创建一个数组使用new操作符显示地创建数组格式 newelementType arraySize 数组初始化器可以使用简写的语法创建并初始化数组 type 引用变量名 数组元素值 华中科技大学IBM技术中心 HUST IBMComputerTech Center 使用数组 访问数组元素引用变量名 数组名 index 得到数组大小引用变
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年教师资格之中学物理学科知识与教学能力模拟考试试卷B卷含答案
- 2026届广西壮族自治区南宁市邕衡教育高三上学期11月月考历史试题(含答案)
- 中枢神经系统孤立性脱髓鞘综合症的护理个案
- 专题06 完形填空30篇【考题猜想】原卷版
- 2026年质量员之土建质量专业管理实务考试题库200道附完整答案(易错题)
- 2026中国外汇交易中心(全国银行间同业拆借中心)招聘10人笔试备考试卷带答案解析
- 2025江苏泰州职业技术学院招聘教师及辅导员14人(第二批)备考公基题库附答案解析
- 2026年消防条令纲要知识考试题库及答案【夺冠】
- 2026鄂尔多斯市融媒体中心招聘35名工作人员历年真题汇编带答案解析
- 2026湖北银行秋季校园招聘备考题库附答案
- 2025年消防日消防月主题知识培训
- 医美胶原蛋白课件
- 边坡绿化施工方案范本
- 国军标程序文件培训课件
- 人工智能+数据安全智能监控与异常检测研究报告
- 河堤加固施工方案
- 八年级语文第三次月考卷(考试版A4)【测试范围:上册第1~5单元】(新疆专用)
- 2025年高校教师资格证之高等教育心理学考试题库(附答案)
- 疾控中心招标管理办法
- 病房环境清洁与消毒PDCA课件
- ARDS相关知识课件
评论
0/150
提交评论