java第04讲数组、字符串、向量与哈希表.ppt
《java第04讲数组、字符串、向量与哈希表.ppt》由会员分享,可在线阅读,更多相关《java第04讲数组、字符串、向量与哈希表.ppt(77页珍藏版)》请在三一办公上搜索。
1、2023/11/7,1,第4章 数组、字符串、向量与哈希表,2023/11/7,2,本章总体纲要,数组字符串字符串缓冲区向量哈希表,2023/11/7,3,数组,由相同类型的若干项数据组成例如:public static void main(String args)其中args是String类型的数组占用连续的内存地址数组的静态性一旦创建就不能修改数组的长度类似于动态数组的类型类Vector长度可以变大或缩小,2023/11/7,4,示例,int c=new int12;c 是数组名如何获得数组的长度?c.length第一个数组元素的下标为0 使用数组可以通过数组名与下标每个数组元素类似于普通
2、的变量c 0=3;c 0+=5;,c.length,2023/11/7,5,下标,有时也称为索引必须是整数或整数表达式,例如:c11示例:含有运算符的下标表达式:if(x=3)t=(c 5-2=c 3)/t=true,2023/11/7,6,数组声明,一维数组变量的声明格式有如下两种:(1)数组元素的数据类型 变量名;(2)数组元素的数据类型 变量名;示例:int c;String names;int c;String names;,2023/11/7,7,内存分配,Java数组实际上也是对象,所以可通过new 关键字来创建示例:int c;/声明c=new int12;/创建对象,并分配内存
3、声明时不必指定数组的大小上面的两个语句可以简化成一个语句int c=new int12;,2023/11/7,8,初始化数组,基本数据类型的元素初始化为0值或false非基本数据类型的元素初始化为null 可以采用循环结构初始化数组示例:double squares;squares=new double100;for(int i=0;i squares.length;i+)squaresi=i*i;,2023/11/7,9,通过初始化语句创建数组,Java语言允许通过数组的初始化语句创建数组示例:int n=10,20,30,40,50;上面语句创建了一个含有五个元素的数组下标值分别为0,1,
4、2,3,4这时不需要运算符new,2023/11/7,10,System.arraycopy(),含有一个静态的方法 arraycopy():可以用来进行数组间的拷贝:public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length);拷贝数组:从源数组的指定位置拷贝提定长度的元素到目标数组的指定位置,2023/11/7,11,实例,int src=1,2,3,4,5,6;int dest=new int 12;System.arraycopy(src,0,dest,0,src.lengt
5、h);,2023/11/7,12,注意事项,当通过循环遍历数组时下标永远不要低于0下标永远要比数组元素个数小当数组下标出错,Java 产生 ArrayIndexOutOfBoundsException,2023/11/7,13,多维数组,最常用的多维数组是二维数组 int a=new int34;二维数组可以理解成如下图示的表格,行的下标值,列的下标值,2023/11/7,14,示例 1,类似于一维数组进行二维数组的声明、创建(内存分配)与初始化示例:class J_FillArray public static void main(String args)int matrix=new int
6、45;for(int row=0;row 4;row+)for(int col=0;col 5;col+)matrixrowcol=row+col;/内部for循环结束/外部for循环结束/方法main结束/类J_FillArray结束,2023/11/7,15,示例 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;,2023/11/7,16,注意事项,Java的多维数组实际上是数组的数组即创建以数组为元素的数组意味着:二维数组的每一行可以具有不同的列数示例:int a;a=new int 3;/
7、allocate rowsa 0=new int 3;/allocate row 0a 1=new int 2;/allocate row 1a.length 行数a i.length 第i行列数,2023/11/7,17,三维数组,思维的扩展:一维数组二维数组三维数组示例:class J_Fill3DArray public static void main(String args)int M=new int453;for(int row=0;row 4;row+)for(int col=0;col 5;col+)for(int ver=0;ver 3;ver+)Mrowcolver=row
8、+col+ver;/内部for循环结束/for循环结束/外部for循环结束/方法main结束/类J_Fill3DArray结束,2023/11/7,18,注意事项,Java允许数组的维数为:三、四、或更大但是,慎用高维数组甚至三维数组在实际的应用中也比较少出现,2023/11/7,19,本章总体纲要,数组字符串字符串缓冲区向量哈希表,2023/11/7,20,String的基本知识,String与C语言不同:字符(char)数组不是字符串(String)String数值不必以u0000结束,2023/11/7,21,String 直接量,String 直接量双引号括起来的字符序列示例:“Hel
9、lo”或“您好字符串赋值可以在声明时赋值String c=blue;c是String类型的变量blue是String直接量,2023/11/7,22,String 构造,类 String共有11个构造方法,其中两个不被赞成使用(deprecated)参见docsindex.html,2023/11/7,23,示例,/J_StringConstructors.java;开发者:雍俊海/字符串构造方法例程public class J_StringConstructors public static void main(String args)String s1=null;String s2=new
10、 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);/方法main结束/类J_StringConstructors结束,2023/11/7,24,String 方法:length(),charAt()和 getChars(),方法 length()返回 String 的长度与数组不同之处:Strings不含有 length成员域方法ch
11、arAt(int index)获得字符串指定位置的字符方法getChars(int srcBegin,int srcEnd,char dst,int dstBegin)拷贝字符串的部分字符序列到指定的字符数组的指定位置,2023/11/7,25,字符串比较,字符串(String)比较字符类型的数据也是数值类型数据比较字符串大小,实际上就是依次比较其所包含的字符的数值大小小写字母与大小字母是不相同的,2023/11/7,26,=运算符,当用于基本数据类型时,用于判别是否相等当用于引用数据类型时,用来判别引用是否指向相同的对象Java虚拟机中含有字符串池(直接量在此池内),相同内容的字符串直接量相
12、同的对象s1=“hello”;/字符串直接量s2=new String(hello);s1=hello;/trues2=hello;/false,2023/11/7,27,实例:StringTest.java,public class StringTest public static void main(String args)String a=java;/uses anonymous object String b=java;/uses anonymous object String x=ja;String y=va;String c=x+y;if(a=b)System.out.printl
13、n(a and b point to the same object);else System.out.println(a and b do not point to the same object);if(a=c)System.out.println(a and c point to the same object);else System.out.println(a and c do not point to the same object);/End of method:main/End of class:StringTest,2023/11/7,28,程序输出,a and b poin
14、t to the same objecta and c do not point to the same object,2023/11/7,29,字符串(String)比较方法,boolean equals(Object anObject)比较当前的字符串与指定的对象比较结果为真当且仅当给定的参数不为空,并且具有完全相同的字符序列 例如:s1.equals(Hi);boolean equalsIgnoreCase(String anotherString)判别相等,但不区分大小写例如:在不区分大小写情况下,“hello”与“HELLO”相等,2023/11/7,30,字符串(String)比较
15、方法,int compareTo(String anotherString)比较两个字符串的内容返回:0:如果字符串内容完全相同小于0的值:如果在比较第一个不相同字符,当前字符串的字符的值小于anotherString对应的字符的值大于0的值:如果在比较第一个不相同字符,当前字符串的字符的值大于anotherString对应的字符的值int compareToIgnoreCase(String str)比较两个字符串的内容,但不区分大小写,2023/11/7,31,查找字符串中的字符或子串,查找字符串(String)中的字符或子串方法indexOf四种重载方法 indexOf返回第一次找到的时
16、下标如果没有找到,则返回-1示例:String name=CoolTools;System.out.println(name.indexOf(oo);,2023/11/7,32,查找字符串中的字符或子串,方法 lastIndexOf public int lastIndexOf(int ch,int fromIndex)从指定位置往回查找,返回找到的最大的字符下标位置即返回满足下面条件的最大值:(this.charAt(k)=ch)&(k=fromIndex)返回-1:如果当前字符串不含该字符,2023/11/7,33,从当前字符串中抽取子字符串,方法 substringsubstring(i
17、nt beginIndex)返回新的字符串:当前字符串的子串该子串从指定的位置开始,并一直到当前字符串结束为止substring(int beginIndex,int endIndex)返回新的字符串:当前字符串的子串该子串从指定的位置(beginIndex)开始,到指定的位置(endIndex-1)结束,2023/11/7,34,实例,“unhappy”.substring(2)返回Harbison.substring(3)返回“emptiness”.substring(9)返回emptiness.substring(10)返回?hamburger.substring(4,8)返回smile
18、s.substring(1,5)返回,happy bison(空串)StringIndexOutOfBoundsException urge mile,2023/11/7,35,字符串(String)拼接,方法 concat拼接两个字符串,并返回一个新字符串源字符串不会被修改s1.concat(s2)返回字符串s1和s2拼接的结果示例:String s1=ABC;String s2=XYZ;s1=s1.concat(s2);/s1=s1+s2;,2023/11/7,36,类String的成员方法valueOf,静态(static)成员方法valueOf将参数的值转化成相应的字符串valueOf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 04 数组 字符串 向量 哈希表
链接地址:https://www.31ppt.com/p-6510049.html