版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章第四章 数组与字符串数组与字符串4.1 数组数组4.2 字符串字符串4.3 向量向量4.1 数组数组由相同类型的若干项数据组成例如:public static void main(String args)其中其中args是是String类型的数组类型的数组占用连续的内存地址数组的静态性一旦创建就不能修改数组的长度一旦创建就不能修改数组的长度类似于动态数组的类型类类Vector长度可以变大或缩小长度可以变大或缩小4.1 4.1 数组数组数组的创建数组的创建(一维数组,基本数据类型和复合数据类一维数组,基本数据类型和复合数据类型)型)1.指定数组名称、数据类型指定数组名称、数据类型(声明数组
2、)声明数组)一维数组变量的声明格式有如下两种一维数组变量的声明格式有如下两种:(1)数组元素的数据类型数组元素的数据类型 变量名变量名;(2)数组元素的数据类型数组元素的数据类型 变量名变量名 ;如:如: char s; Object o; String names; int c ; 4.1 4.1 数组数组2.2.为数组分配内存空间:为数组分配内存空间:Java数组实际上也是对象,所以数组实际上也是对象,所以可通过可通过new 关键字来创建。关键字来创建。var_name = new typesize; 示例示例: int c; / 声明声明 c = new int12; / 创建对象,并分
3、配内存创建对象,并分配内存声明时不必指定数组的大小声明时不必指定数组的大小上面的两个语句可以简化成一个语句上面的两个语句可以简化成一个语句int c = new int12; Object myobj; myobj = new Object2; myobj0 = new Object(); myobj1 = new Object(); 4.1 4.1 数组数组-初始化数组初始化数组基本数据类型的元素初始化为0值或false非基本数据类型的元素初始化为null 可以采用循环结构初始化数组示例:double squares; squares = new double100; for (int i=
4、0; i squares.length; i+) squaresi = i*i; 4.1 4.1 数组数组通过初始化语句创建数组通过初始化语句创建数组Java语言允许通过数组的初始化语句创建数组语言允许通过数组的初始化语句创建数组示例示例: int n = 10, 20, 30, 40, 50 ;上面语句创建了一个含有五个元素的数组上面语句创建了一个含有五个元素的数组下标值分别为下标值分别为0, 1, 2, 3, 4这时不需要运算符这时不需要运算符new4.1 4.1 数组数组数组的使用数组的使用(一维数组,基本数据类型和复合数据类一维数组,基本数据类型和复合数据类型)型)1.数组元素表示:数
5、组元素表示: 数组名数组名下标下标, 数组名数组名下标下标1下标下标2 , 数组名数组名0数组名数组名n-12.Length域域3.一元数组元素的复制一元数组元素的复制 =;System.arraycopy(from fromIndex,to,toIndex,count)4.1 4.1 数组数组-多维数组多维数组数组的创建数组的创建(多维数组,基本数据类型和复合数据类多维数组,基本数据类型和复合数据类型)型)最常用的多维数组是二维数组最常用的多维数组是二维数组 int a = new int34;二维数组可以理解成如下图示的表格二维数组可以理解成如下图示的表格a 0 0 a 0 0 a 1 0
6、 a 1 0 a 2 0 a 2 0 a 0 1 a 0 1 a 1 1 a 1 1 a 2 1 a 2 1 a 0 2 a 0 2 a 1 2 a 1 2 a 2 2 a 2 2 a 0 3 a 0 3 a 1 3 a 1 3 a 2 3 a 2 3 行的下标值行的下标值列的下标值列的下标值示例示例 1类似于一维数组,进行二维数组的声明、创建类似于一维数组,进行二维数组的声明、创建(内存分配内存分配)与与初始化初始化示例示例:class J_FillArray public static void main (String args) int matrix = new int45; for
7、(int row=0; row 4; row+) for (int col=0; col 5; col+) matrixrowcol = row + col; / 内部内部for循环结束循环结束 / 外部外部for循环结束循环结束 / 方法方法main结束结束 / 类类J_FillArray结束结束示例示例 2通过初始化语句创建数组示例: double c = 1.0, 2.0, 3.0, 4.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 ; 注意事项注意事项Java的多维数组实际上是的多维数组实际上是数组的数组数组的数组即创建以数组为元素的数组即创建以数
8、组为元素的数组意味着意味着: 二维数组的每一行可以具有不同的列数二维数组的每一行可以具有不同的列数示例:int a ;a = new int 3 ; / allocate rowsa 0 = new int 3 ; / allocate row 0a 1 = new int 2 ; / allocate row 1a.length 行数行数a i .length 第第i行列数行列数三维数组三维数组思维的扩展: 一维数组二维数组三维数组示例:class J_Fill3DArray public static void main (String args ) int M = new int453;
9、 for (int row=0; row 4; row+) for (int col=0; col 5; col+) for (int ver=0; ver 3; ver+) Mrowcolver = row + col + ver; / 内部内部for循环结束循环结束 / for循环结束循环结束 / 外部外部for循环结束循环结束 / 方法方法main结束结束 / 类类J_Fill3DArray结束结束注意事项注意事项Java允许数组的维数为: 三、四、或更大但是,慎用高维数组甚至三维数组在实际的应用中也比较少出现4.1 4.1 数组数组示例示例1 1/ InitArray.java: in
10、itializing an arrayimport java.io.*;public class InitArray public static void main( String args ) int n = new int 10 ; for ( int i = 0; i n.length; i+ ) System.out.print( i + t + n i + n );4.1 4.1 数组数组示例示例2 2/ InitArray.javaimport java.io.*;public class InitArray public static void main( String args
11、 ) int n = 32, 27, 64, 18, 95, 14, 90, 70, 60,37 ; for ( int i = 0; i n.length; i+ ) System.out.print( i + t + n i + n“); 4.1 4.1 数组数组示例示例3 3/ InitArray.javaimport java.io.*;public class InitArray public static void main( String args ) final int ARRAY_SIZE = 10; int n = new int ARRAY_SIZE ; for ( in
12、t i = 0; i n.length; i+ ) n i = 2 + 2 * i; for ( int i = 0; i n.length; i+ ) System.out.print( i + t + n i + n“); / BubbleSort.javaimport java.applet.*;public class BubbleSort extends Applet public void init() int a = 2, 6, 4, 8, 10, 12, 89, 68, 45, 37 ; for ( int i = 0; i a.length; i+ ) System.out.
13、print( a i + ); System.out.println( ); bubbleSort( a ); 4.1 4.1 数组数组示例示例4 4(排序)(排序)4.1 4.1 数组数组示例示例4 4 for ( int i = 0; i a.length; i+ ) System.out.print( a i + ); public void bubbleSort( int b ) for ( int pass = 1; pass b.length; pass+ ) for ( int i = 0; i b i + 1 ) swap( b, i, i + 1 ); public void
14、 swap( int c, int first, int second ) int hold; hold = c first ; c first = c second ; c second = hold; public void bubbleSort( int b ) for ( int pass = b.length - 1; pass 0; pass- ) for ( int i = 0; i b i + 1 ) swap(b,i,i + 1); 4.1 4.1 数组数组示例示例4 4/ JavaArrayUse.javapublic class JavaArrayUse public s
15、tatic void main( String args ) int i,j; int youngMaxLevel = 15; int young; young = new intyoungMaxLevel; for ( i = 0; i young.length; i+ ) youngi = new inti+1; young0 0 = 1; 4.1 4.1 数组数组示例示例4(4(杨辉三角型)杨辉三角型)for ( i = 1; i young.length; i+ ) youngi0 = 1; for ( j = 1; j youngi.length-1; j+ ) youngij =
16、youngi-1j-1+youngi-1j; youngiyoungi.length-1 = 1; for ( i = 0; i young.length; i+ ) for ( j = 0; j youngi.length; j+ ) System.out.print(youngij+ ); System.out.println(); 4.1 4.1 数组数组示例示例4 44.1 4.1 数组数组示例示例6 6(读程序)读程序)import java.applet.Applet;public class PassArray extends Applet public void init()
17、int a = 1, 2, 3, 4, 5 ; for ( int i = 0; i a.length; i+ ) System.out.print ( a i + ); System.out.println( ); modifyArray( a ); for ( int i = 0; i a.length; i+ ) System.out.print( a i + ); System.out.println( );4.1 4.1 数组数组示例示例6 6(读程序)读程序) modifyElement( a 3 ); System.out.print( a 3 ); public void mo
18、difyArray( int b ) for ( int j = 0; j b.length; j+ ) b j *= 2; public void modifyElement( int e ) e *= 2; 4.1 4.1 数组数组示例示例7 7/ Test.javapublic class Test public static void main( String args ) Point point = new Point( 7, 11 ); Circle circle = new Circle( 3.5, 22, 8 ); Cylinder cylinder = new Cylinde
19、r( 10, 3.3, 10, 10 ); Shape arrayOfShapes; arrayOfShapes = new Shape 3 ; arrayOfShapes 0 = point; 4.1 4.1 数组数组示例示例7 7 arrayOfShapes 1 = circle; arrayOfShapes 2 = cylinder; for ( int i = 0; i arrayOfShapes.length; i+ ) System.out.println(nn + arrayOfShapes i .getName() + : + arrayOfShapes i .toString
20、() ) 4.2 4.2 字符串字符串StringBuffer类类字符串字符串对对象象不变字符串不变字符串可变字符可变字符串串String类类1. 创建字符串创建字符串2. 使用字符串使用字符串不变字符串不变字符串String与与C语言不同语言不同: 字符字符(char)数组不是字符串数组不是字符串(String)String数值不必以数值不必以u0000结束结束String aString bString cHello World!StringString 常量双引号括起来的字符序列双引号括起来的字符序列示例示例: “Hello” 或或 “您好您好字符串赋值可以在声明时赋值可以在声明时赋值S
21、tring c = blue;c是是String类型的变量类型的变量“blue”是是String常量常量类 String:构造方法(9个构造方法,见API)1. 创建字符串创建字符串方法方法1:new方法方法 String str = new String();String str = new String( This is a string );方法方法2:初始化方法:初始化方法 String str =This is a string; String str ; str = This is a string ;示例示例/ J_StringConstructors.java; / 字符串构造
22、方法例程字符串构造方法例程public class J_StringConstructors public static void main(String args ) String s1 = null; String s2 = new String( ); String s3 = 您好您好!; String s4 = new String( s3 ); System.out.println(s1: + s1); System.out.println(s2: + s2); System.out.println(s3: + s3); System.out.println(s4: + s4); /
23、 方法方法main结束结束 / 类类J_StringConstructors结束结束s1不指向任何字符串对象不指向任何字符串对象String构造方法构造方法: 创建空字符串创建空字符串String构造方法构造方法: 创建新字符串创建新字符串字符串直接量字符串直接量2. 使用字符串使用字符串访问:访问:length(),charAt(),indexof(), lastIndexof(), getChars()等等修改:修改:concat(),replace(),substring(), toLowerCase(), toUpperCase()比较:比较:equals(),equalsIgnore
24、Case(), CompareTo(), RegionMatches()访问:length( ), charAt( ) 和 getChars( )方法 length( )返回返回 String 的长度的长度与数组不同之处与数组不同之处: String不含有不含有 length成员域成员域方法charAt(int index) 获得字符串指定位置的字符获得字符串指定位置的字符方法getChars(int srcBegin, int srcEnd, char dst, int dstBegin) 拷贝字符串的部分字符序列拷贝字符串的部分字符序列到指定的字符数组到指定的字符数组的指定位置的指定位置查
25、找字符串(String)中的字符或子串方法方法indexOf 四种重载方法四种重载方法 indexOf 返回第一次找到的时下标返回第一次找到的时下标 如果没有找到,则返回如果没有找到,则返回-1示例:String name = CoolTools;System.out.println (name.indexOf(oo);indexOf()方法 lastIndexOf public int lastIndexOf(int ch, int fromIndex) 从指定位置往回查找,返回找到的最大的字符从指定位置往回查找,返回找到的最大的字符下标位置下标位置即返回满足下面条件的最大值即返回满足下面条
26、件的最大值:(this.charAt(k) = ch) & (k = 0; c-) dest.append(source.charAt(c); return dest.toString();4.3 向量向量向量所对应的类是类java.util.Vector向量变量的声明格式Vector 变量名变量名;示例Vector vs;创建向量实例对象创建向量实例对象Vector vs = new Vector( );Vector vo = new Vector( );增加元素增加元素public boolean add(E o)public void addElement(E obj)示例vs.
27、add(Tom);修改元素修改元素public E set(int index, E element)public void setElementAt(E obj, int index)删除元素public void clear( )public void removeAllElements( )public E remove(int index)public void removeElementAt(int index)通过迭代器(iterator)获取向量对象的各个元素类java.util.Vector的成员方法public Iterator iterator( )接口java.util.
28、Iterator的成员方法boolean hasNext( )接口java.util.Iterator的成员方法E next( )习题习题1. 随机产生十个数进行降序排序。随机产生十个数进行降序排序。2. 修改例子中的冒泡排序,以提高性能。修改例子中的冒泡排序,以提高性能。3. 命令行参数的使用命令行参数的使用:从命令行输入需要排从命令行输入需要排序的个数序的个数,将随机产生的数进行升序排序。将随机产生的数进行升序排序。4. 编写一个应用程序,读入编写一个应用程序,读入 如如07/21/1999格式的日期,打印出如格式的日期,打印出如July 21,1999格式的日期。格式的日期。5. 拼写检查器。拼写检查器。/ StringTest.javapublic class StringTest public static void main( String args ) String s = new String( 07/21/1999 ); String s1 = s.substring(0,2); int m = Integer.parseInt( s1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 信息系统外包合同
- 公司骗我签外包合同
- 出纳外包合同
- 加工厂外包合同
- 医院卫生外包合同
- 单位劳务外包合同
- 后厨洗碗外包合同
- 商务流程外包合同
- 图书管理外包合同
- 大厅卫生外包合同
- 2026年合肥聚和运营管理有限公司委托招聘考试备考试题及答案解析
- 2026年北京市丰台区高三二模政治试卷(含答案)
- 2026年煤矿安全生产管理人员考试题库(附答案)
- 2026年宁夏电投永利能源有限公司公开招聘考试模拟试题及答案解析
- 2026广东佛山市禅城区祖庙街道公有企业招聘初试笔试历年参考题库附带答案详解
- 小儿推拿常用手法及穴位
- GB/T 14782-2010平地机技术条件
- 物理因子治疗技术题库
- 房地产中介企业交易房款监管账户及账号申报表
- T∕ZZB 2753-2022 家用及类似用途设备用塑料集成水路板
- 2022英语课标与2011课标对比变化
评论
0/150
提交评论