资源描述:
《ch5 数组引用.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Java元素主要内容引用数组引用引用实质是指针,但是“安全的指针”不能直接利用指针运算对其值进行修改;分配利用new动作完成;回收由垃圾回收机制处理;引用对象的简单回顾:C中日期:intyear,month,day;//独立但如果表示:张三的生日、李四的生日……很快就会混乱对象方式:定义新类型:classMyDate{intyear;intmonth;intday;}引用对象的简单回顾:对象方式:定义新类型:用新类型定义变量:MyDatemyBirthday,yourBirthday;创建对象:基本类型变量的声明内存空间的分配非基本类型变量声明不分配
2、内存,不是数据本身,而是数据的引用例如:引用对象的简单回顾:对象方式:创建对象:例如:MyDatetoday;today=newMyDate();结论:非基本类型变量的声明,形成一个引用类型的变量引用引用类型的赋值:例如:有如下代码片段:intx=7;inty=x;Strings=newString(“Hello”);Stringt=s;引用引用类型的赋值:上述代码执行后,又执行:t=“World”;结果内存图为:数组数组:相同类型的成组数据对象,通过一个名称进行访问可以声明任何类型的数组(基本类型或类类型)chars[];char[]s;MyDat
3、ep[];MyDate[]p;在Java语言中,即使数组是由基本类型构成,或带有其他类类型,数组都是一个对象。声明不创建对象本身,而是创建引用数组变量声明时,不能指定数组的长度数组元素使用new或数组初始化动态分配实际存储空间数组Java中标准的数组定义:char[]str1,str2;char[]——字符数组类型str1,str2——变量名不能指定数组长,在创建生成数组对象时指定char[]str1=newchar[2];MyDate[]dt;//dt==nulldt=newMyDate[4];//生成的数组中,四个单元都是nulldt[0]=ne
4、wMyDate();nullnullnullYear,month,day数组数组初始化:创建数组时,每个元素都将被初始化——安全基本类型使用默认值;类对象使用null初始化的两种等价形式:Stringnames[]={“Georgianna”,“Jen”,“Simon”};下列代码片段Stringnames[];names=newString[3];names[0]=“Georgianna”;names[1]=“Jen”;names[2]=“Simon”;数组多维数组:实质上,Java中不存在多维数组——因为数组可以声明成具有任何类型。所谓多维数组,
5、就是数组的数组例如:int(twoDim[])[]=newint[4][];twoDim[0]=newint[5];twoDim[1]=newint[2];多维数组时,[]不能放在左侧,即newint[][4]是非法的towDimnullnull0000000数组多维数组:由于多维数组中对每个数组元素分别初始化,所以可以形成非矩形数组的数组例如:inttwoDim[][]=newint[4][];twoDim[0]=newint[2];twoDim[1]=newint[4];twoDim[2]=newint[4];twoDim[3]=newint[8]
6、;数组多维数组:对于规则矩形数组,可简化进行初始化:例如:inttwoDim[][]=newint[4][5];数组初始值为null数组界限:所有数组下标都从0开始数组对象具有length属性,用于检验访问边界length属性的声明形式为:publicfinallength;//可以读取,不能修改例如:intlist[]=newint[10];for(inti=0;i7、lements[]=newint[6];elements=newint[10];Java中在System类中提供了特殊的方法拷贝数组:arraycopy()——如果数组是对象型,则拷贝的是引用,而不是对象,即对象本身不变System.arraycopy(from,fromindex,to,toindex,count)数组拷贝示例intmyArray[]={1,2,3,4,5,6};inthold[]={10,9,8,7,6,5,4,3,2,1};System.arraycopy(myArray,0,hold,0,myArray.length);//考虑
8、:结果hold数组中的值是?数组命令行参数:Java程序中main的形式固定为:publics