




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章数组和字符串 Java语言程序设计 4 1数组 数组是一种最简单的复合数据类型 数组是具有一定顺序关系的若干相同类型成员的集合体 组成数组的成员称为该数组的元素 数组元素可以用一个统一的数组名和下标 序号 来唯一确定 数组属于构造类型 数组中的每个元素可以是Java中的基本数据类型 也可以是Java中的引用类型 包括类对象 数组等 在使用数组时 会涉及到以下几个术语 数组名应该符合Java语言标识符的命名规则 因为数组是用来存储相同类型的数据 因此数组的类型就是其所存储的元素的数据类型 数组的长度指的是数组中可以容纳的元素的个数 而不是数组所占用的字节数 数组的类型 数组的长度 数组名 4 1数组 一维数组的使用分两大步 一维数组的定义和使用数组 其中一维数组的定义又包括数组声明和为数组分配空间 初始化 创建数组 等内容 必要时 还要为数组元素分配空间或初始化 4 1 1一维数组 例如 inti 或int A doubledArray 或double dArray StringsArray 或String sArray Buttonbtn 或Button btn int a b c 或inta b c 声明一维数组有两种格式 格式一 数组元素类型数组名 格式二 数组元素类型 数组名 数组名是一个合法的标识符 指明该变量是一个数组变量 注意 Java在数组声明时并不为数组分配空间 因此 在声明的 中不能指出数组中元素的个数 数组长度 数组声明之后 尚不能立即被访问 必须通过初始化 分配存储空间创建数组后 才能访问数组元素 当仅有数组声明而尚未分配空间时 数组变量中只是一个值为null的空引用 指针 4 1 1一维数组 声明一维数组 可以是Java中任意的基本数据类型或引用类型 为数组分配空间有两种方法 数组初始化和使用new运算符 为数组分配空间后 数组变量中存储的是数组存储空间的引用地址 4 1 1一维数组 创建一维数组 1 一维数组数组初始化 静态初始化 类型数组名 初值1 初值2 在数组声明的基础上 在大括号中给出数组元素的初值 系统将自动按照所给初值的个数计算出数组的长度并分配相应的存储空间 基本类型和字符串类型等可以用这种方式创建数组空间 例如 intintArray 1 2 3 4 5 doubledecArray 1 1 2 2 3 3 StringstrArray Java BASIC FORTRAN 4 1 1一维数组 创建一维数组 2 使用new运算符 动态初始化 若数组已经声明 为已声明数组分配空间的一般形式如下 数组名 new类型 数组大小 若数组未声明 则可在数组声明的同时用new运算符为数组分配空间 类型数组名 new类型 数组大小 数组大小是数组的长度 可以为整型常量或变量 例 inta a newint 10 doubleb newdouble 5 Strings newString 2 4 1 1一维数组 创建一维数组 注意 使用new运算符创建数组时 系统会给数组元素提供默认初始值 数值型数组元素的默认初值是0 char类型数组元素的默认初值是全0代码字符 布尔类型数组元素的默认初值是false 所有数组都有一个成员length 程序可以访问它 获得数组的元素个数 但不能改变它 4 1 1一维数组 创建一维数组 一维数组元素的引用方式为 数组名 下标 其中 下标是一般为int类型的 取值从0开始 直到数组的长度减1 一维数组元素的引用与同类型的变量相同 Java对数组元素要进行越界检查以保证安全性 若数组元素下标小于0 大于或等于数组长度将产生下面的异常 ArrayIndexOutOfBoundsExceptionJava语言对于每个数组都有一个指明数组长度的属性length 它与数组的类型无关 例如intArray length等 4 1 1一维数组 引用一维数组元素 例4 1 小应用程序先声明一个数组a 在方法init 中创建它 指定有5个元素 然后为数组元素逐一赋值 在方法paint 中输出各元素的值 通常对数组的处理与循环语句结合在一起 实现对数组元素依次作某种处理 intmyArray newint 5 数组的全部元素初始化为0for intindex 0 index myArray length index myArray index index 1 System out println myArray index 4 1 1一维数组 引用一维数组元素 例4 2 数组也是一种引用类型 一个数组名在不同时间可引用不同的数组 4 1 1一维数组 引用一维数组元素 在Java语言中 多维数组被看作数组的数组 4 1 2多维数组 声明二维数组的一般形式为 类型数组名 或类型 数组名 或类型 数组名 数组声明中的类型 可以是简单类型 也可以是复合类型 与一维数组时的情况一样 对数组的声明不分配数组的存储空间 charc floatf Strings 4 1 2多维数组 声明二维数组 1 二维数组的初始化二维数组的初始化也是在声明数组的同时就为数组元素指定初值 类型数组名 初值表1 初值表2 初值表n 例如 inta 1 2 3 4 5 6 7 Java系统将根据初始化时给出的初始值的个数自动计算出数组每一维的大小 4 1 2多维数组 创建二维数组 补充例 定义一个三角形的二维数组 classArrayLengths publicstaticvoidmain Stringargs intiarray 44 22 16 11 12 99 System out println iarray length iarray length System out println iarray 0 length iarray 0 length System out println iarray 1 length iarray 1 length System out println iarray 2 length iarray 2 length 数组名 length表示二维数组的行数数组名 行号 length表示该行的元素个数 4 1 2多维数组 创建二维数组 2 使用new运算符 若数组已声明 为已声明数组分配空间 数组名 new类型 数组长度1 数组长度2 若数组未声明 可在声明数组的同时用new运算符为数组分配空间 类型数组名 new类型 数组长度1 数组长度2 例 inta a newint 3 4 doubled newdouble 2 5 Strings newString 2 2 4 1 2多维数组 创建二维数组 2 使用new运算符 可以从最高维开始 分别为每一维分配空间例 例 inta newint 2 a 0 newint 3 a 1 newint 5 inta newint 2 intb newint 注意 在使用运算符new来分配内存时 对于多维数组至少要给出最高维的大小 4 1 2多维数组 创建二维数组 对于二维数组 要注意以下两点 1 二维数组名 length和二维数组名 下标1 length的区别 二维数组名 length是二维数组的子数组个数 二维数组名 下标1 length是指定子数组的元素个数 2 二维数组名 下标 是一维数组 例4 3 一个含有三角二维数组的应用程序 4 1 2多维数组 使用二维数组要注意的问题 字符串是字符的序列 可以包含字母 数字和其他符号 它是组织字符的基本的数据结构 字符串常量是用双引号括起的一个字符串 是匿名的String类的对象 Java将字符串当作对象来处理 它提供了一系列的方法对整个字符串进行操作 使得字符串的处理更加容易和规范 Java语言中的包java lang中封装了final类String和StringBuffer 其中类String对象是字符串常量 建立后不能改变 而类StringBuffer对象类似于一个字符缓冲区 建立后可以修改 我们赢了 2008奥运加油 n 4 2字符串 一 定义格式以前使用的每个字符串常量 用双引号括起来的一串字符 实际上都是String对象 因此 可以用字符串常量直接初始化一个String对象 例如 Strings HelloWorld 注意 String类是字符串常量类 String对象建立后不能修改 由于每个字符串常量对应一个String类的对象 所以对一个字符串常量可以直接调用类String中提供的方法 4 2 2字符串的声明和创建 Strings HelloWorld Inta s length inta abcd length 二 类String构造方法例如 Strings newString 其他创建String对象的构造方法有 String Stringvalue 用已知串value创建一个字符串对象 String charchars 用字符数组chars创建一个字符串对象 String charchars intstartIndex intnumChars 用字符数组chars的startIndex位置开始的numChats个字符 创建一个字符串对象 String byte bytes 构造一个新的String 方法是使用平台的默认字符集解码字节的指定数组 String byte bytes intoffset intlength 该方法使用默认字符编码 用指定字节数组的一部分 即从数组起始位置offset开始取length个字节构造一个字符串对象 此构造方法不需要任何参数 它生成一个空字符串 也可以由字符数组或字节数组来生成一个字符串对象 补充例 类String构造方法的使用 publicclassStringConstructors publicstaticvoidmain Stringargs Strings s1 s2 s3 s4 s5 s6 bytebyteArray byte J byte a byte v byte a charcharArray 程 序 设 计 Stringsb newString 欢迎 s newString Hello s1 newString s2 newString s s3 newString sb s4 newString charArray 2 2 s5 newString byteArray 0 s6 newString charArray System out println s s System out println s1 s1 System out println s2 s2 System out println s3 s3 System out println s4 s4 System out println s5 s5 System out println s6 s6 结果为 s Hello s1 s2 Hello s3 欢迎s4 设计s5 Javas6 程序设计 1 连接运算符 2 方法 concat Strings 4 2 3字符串基本操作 字符串连接 publicclassExample4 4 staticpublicvoidmain Stringagrs Strings1 ABC Strings2 DEFG System out println s1 s2 s1 ABC s2 XYZ s1 s1 concat s2 System out println s1 length 方法可以获取一个字符串的长度 Strings 我是学生 intstrlen s length strlen的值是4 字符串常量也可以使用length 获得长度 我是好学生 length 的值是5 4 2 3字符串基本操作 获取字符串长度 booleanstartsWith Strings 方法 判断一个字符串的前缀是否是字符串s 如 Stringstr1 220302620629021 Stringstr2 21079670924022 str1 startsWith 220 的值是true str2 startsWith 220 的值是false booleanendsWith Strings 方法 判断一个字符串的后缀是否是字符串s 如 Stringstr1 220302620629021 Stringstr2 21079670924022 str1 endsWith 021 的值是true str2 endsWith 021 的值是false 4 2 3字符串基本操作 字符串前缀和后缀 1 booleanequals ObjectanObject 和booleanequalsIgnoreCase StringanotherString 例System out println abc equals abc System out println abc equalsIgnoreCase ABC 注意 它们与运算符 实现的比较是不同的运算符 比较两个字符串对象是否引用同一个实例对象 而equals 和equalsIgnoreCase 则比较两个字符串中对应的每个字符是否相同 比较两个字符串的值是否相等 后者忽略字母的大小写 4 2 3字符串基本操作 比较两个字符串是否相同 Strings newString abc Strings1 newString abc s s1是两个不同的对象System out println s s1 System out println s equals s1 System out println abc abc false true true 2 intcompareTo StringanotherString 通过返回的整数值指明当前字符串与参数字符串的大小关系 若比较的两个字符串有不同的字符 则从左边数起的第一个不同字符的大小即两个字符串的大小 publicclassStringConstructors publicstaticvoidmain Stringargs System out println this compareTo that System out println abcd compareTo abcfg System out println abcd compareTo abcd System out println abc compareTo abcgdr System out println abc compareTo ab System out println this compareToIgnoreCase THIS 若比较的两个字符串各个位置的字符都相同 仅长度不同 则方法的返回值为 this length anotherString length 忽略字母大小写 8 20 310 4 2 3字符串基本操作 比较两个字符串是否相同 intindexOf intch 有重载 intindexOf Stringstr intindexOf Stringstr intfromIndex 实现字符串检索 前一个方法是从指定字符串的头开始检索参数字符串s 返回字符串s首次出现的位置 后一个方法则在指定字符串中从某个位置开始检索参数字符串s 返回字符串s首次出现的位置 如果没有检索到 则返回 1 4 2 3字符串基本操作 字符串检索 Strings ABCDEFGHIJABC s indexOf C 值是2s indexOf EFG 2 值是4s indexOf A 7 值是10s indexOf D 4 值是 1 Stringsubstring intbeginindex 和Stringsubstring intbeginindex intendindex 方法的功能是返回子字符串 前者返回从位置beginindex开始处到串尾的子字符串 后者是返回从beginindex开始到endindex 1为止的子字符串 例 abcd substring 2 abcd substring 1 2 abcd substring 2 4 结果为 cd b cd 4 2 3字符串基本操作 取字符串的子串 Stringreplace charoldChar charnewChar 用参数newChar指定的字符替换s中由oldChar指定的所有字符 产生一个新的字符串 例 Strings1 1234567788 Strings2 s1 replace 7 A 结果 创建两个String对象 s1为 1234567788 s2为 123456AA88 4 2 3字符串基本操作 字符串替换 Stringtrim 该方法的功能是截去字符串两端的空白字符 例 4 2 3字符串基本操作 字符串去空格 publicclassExample4 5 staticpublicvoidmain Stringargs Strings 1234567788 str str s replace 7 A System out println s s str str Strings2 1234567788 str2 str2 s2 trim System out println s2 s2 str2 str2 方法trim 不能改变字符串自己 而是产生一个新的字符串 1 staticStringvalueOf Objectobj 该方法的功能是将其他类的参数转换为字符串对象返回 为了方便起见 类String中提供了重载的静态方法valueOf 用来把其他类型的对象转换为字符串对象 注 其他类也提供了方法valueOf 把一个字符串转换为相应的类对象 4 2 3字符串基本操作 类String与其他类的转换 System out println String valueOf Math PI StringpiStr 3 14159 Floatpi Float valueOf piStr String对象转换为Float对象 用法总结 类型 valueOf 某类的对象 作用 把某类的对象所代表的内容转换为相应的类型 2 toString java lang Object中提供了方法toString 把对象转换为字符串 这一方法通常被重写以适合子类的需要 例如 在实际应用中 也经常需要将字符串转换为其他类型的数据 例如 4 2 3字符串基本操作 类String与其他类的转换 Strings Integer toString 123 System out println s 输出为123 Strings 125 Integerobj Integer valueOf s inti obj intValue 上两行也可合写为 inti Integer valueOf s intValue 教材p79 例4 8 程序获取Date对象的小时 分和秒 获得Date对象的字符串表示 并测试一个循环所消耗的时间 4 2 3字符串基本操作 类String与其他类的转换 importjava util publicclassExample4 8 publicstaticvoidmain Stringargs Datedate1 newDate System out println 日期及时间是 date1 Stringt date1 toString t t substring 11 t indexOf C 截取时 分 秒部分 System out println 现在时间是 t doublesum 0 0 for doublei 0 i 80000000 i sum sum i System out println sum Datedate2 newDate 循环结束后的时间 t date2 toString t t substring 11 t indexOf C 字符C之前为时分秒System out println 现在时间是 t 字符串转化为整型用Integer parseInt Strings 方法intx Strings 6542 x Integer parseInt s 字符串转化为long型数据用Long parseLong Strings 方法longx Strings 46046542 x Long parseLong s 4 2 3字符串基本操作 字符串转换为基本类型 字符串转化为float型用Float parseFloat Strings 方法floatf Float parseFloat 12 35 使f的值为12 35 字符串转化为double型用Double parseDouble Strings 方法doubled Double parseDouble 12 35 使d的值为12 35 4 2 3字符串基本操作 字符串转换为基本类型 是java util包中的类 用于语言符号 单词 分析 如 字符串 WearelearningJavaprogramming 如果把空格作分隔符 那么该串有5个单词 4 2 4StringTokenizer类 一 构造方法StringTokenizer Strings 为字
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安图生安全培训课件
- 淀粉车间检修课件
- 海鲜两岸的交往课件
- 交了房款没签购房合同9篇
- 2026届山东省临沂市临沂经济开发区九级英语九年级第一学期期末预测试题含解析
- 内蒙古巴彦淖尔市杭锦全旗2026届九年级英语第一学期期末复习检测模拟试题含解析
- 甘肃省金昌市金川区宁远中学2026届化学九年级第一学期期中复习检测模拟试题含解析
- 2025新版大型活动场地租赁合同2篇
- 2025年老师资格考试试题及答案
- 民间土地抵押借款协议7篇
- 快递公司快递员操作流程预案
- 高中语文++《大学之道》课件++统编版高中语文选择性必修上册
- 2022-2023年度省职业院校学生专业技能大赛装配式建筑智能建造赛项竞赛规程
- 化工产品销售管理制度
- 闽2023-G-01先张法预应力高强混凝土管桩DBJT13-95
- 前列腺电切手术
- 掌握敏锐观察和细节把控的沟通技巧
- 贵州省安顺市平坝区第二中学2023-2024学年七年级数学第一学期期末考试模拟试题含解析
- 2024年中国融通旅业发展集团有限公司招聘笔试参考题库附带答案详解
- 民谣酒馆创业计划书
- 电工安全常识课件
评论
0/150
提交评论