nullnull第6章 数 组6.1 一维数组
6.2 一维数组引用举例
6.3 二维数组
6.4 二维数组的引用null 6.1 一 维 数 组6.1.1 一维数组的声明
数组在其他语言是相同数据类型的元素的集合;而Java中,数组是独立的对象,有自身的方法,不是变量的集合
数组的声明:
类型标识符 数组名[ ];或 类型标识符[ ] 数组名;
int intArray [ ]; --([ ]不是指长度可变)
int[ ] intArray; int abc[ ]; double[ ] example2;
数组的长度不是在声明时指定,而是在创建时由所开辟的内存单元数目确定null数组的创建(3步)
数组的声明
创建数组空间
当数组元素为对象时,使用之前必须对数组元素进行创建和初始化。
创建方法:
先声明后创建 int intArray [ ] ;
intArray = new int [10] ;
在声明的同时创建
int intArray [ ] = new int [10] ;
直接赋值
int[ ] intArray = { 1, 2, 3, 4, 5 } ;
null6.1.2 一维数组的初始化
声明数组仅为数组指定数组名和数组元素的类型,并没有为元素分配实际的存储空间。
因为Java的数组声明中并未指出数组元素的个数,在Java中指明元素个数放在初始化进行。初始化后,其长度(即可存放的元素个数)就不可再改变。Java数组的初始化可以通过直接指定初值的方式来完成,也可以用new操作符来完成。null 1.直接指定初值的方式
在声明一个数组的同时将数组元素的初值依次写入赋值号后的一对花括号内,给这个数组的所有数组元素赋上初始值。这样,Java编译器可通过初值的个数确定数组元素的个数,为它分配足够的存储空间并将这些值写入相应的存储单元。例如:
int[ ] a1={23,-9,38,8,65};
Java中的数组下标从0开始。
null图6.1 数组a1的初始化null 2.用关键字new初始化数组
只为数组分配存储空间而不对数组元素赋初值。用关键字new来初始化数组有两种方式:
(1) 先声明数组,再初始化数组。格式如下:
类型标识符 数组名[ ];
数组名=new 类型标识符[数组长度];
第一条语句是数组的声明,第二条语句是初始化。两条语句中的数组名、类型标识符必须一致。数组长度通常是整型常量,用以指明数组元素的个数。null图6.2 用new关键字对数组a初始化int a[ ];
a=new int[9];null (2) 在声明数组的同时用new关键字初始化数组。
类型标识符 数组名[ ]=new 类型标识符[数组长度];
或
类型标识符[ ] 数组名=new 类型标识符[数组长度];
例如:
int[ ] a=new int[10];null6.1.3 一维数组的引用
一维数组元素的引用格式如下:
数组名[数组下标]
数组下标的取值范围是0~(数组长度-1),下标值可以是整数型常量或整数型变量表达式。例如,在有了“int[ ] a=new int[10];”声明语句后,下面的两条赋值语句是合法的:
a[3]=25; a[3+6]=90;
a[10]=8;是错误的。null6.2 一维数组引用举例6.2.1 测定数组的长度
在Java语言中,数组也是一种对象。数组经初始化后就确定了它的长度,对于每个已分配了存储空间的数组,Java用一个数据成员length来存储这个数组的长度值。
【示例程序c6_1.java】 数组的声明、初始化和其长度的测定。
public class c6_1
{
public static void main(String arg[ ])
{null int i;
double a1[ ];//[ ]放在变量后面声明
char[ ] a2; //[ ]放在变量前面声明
a1=new double[8];//为a1分配8个double型元素的存储空间(64字节)
a2=new char[8]; //为a2分配8个char型元素的存储空间(16字节)
int a3[ ]=new int[8];//在声明数组时初始化数组, 为a3分配32字节
byte[ ] a4=new byte[8]; //在声明数组时初始化数组,为a4分配8字节
char a5[ ]={'A','B','C','D','E','F','H','I'};//直接指定初值方式
//下面各句测定各数组的长度null System.out.println("a1.length="+a1.length);
System.out.println("a2.length="+a2.length);
System.out.println("a3.length="+a3.length);
System.out.println("a4.length="+a4.length);
System.out.println("a5.length="+a5.length);
//以下各句引用数组中的每一个元素,为各元素赋值
for(i=0;i<8;i++)
{ a1[i]=100.0+i;
a3[i]=i;
a2[i]=(char)(i+97);//将整型转换为字符型
} null //下面各句打印各数组元素
System.out.println("\ta1\ta2\ta3\ta4\ta5");
System.out.println("\tdouble\tchar\tint\tbyte\tchar");
for(i=0;i<8;i++)
System.out.println("\t"+a1[i]+"\t"+a2[i]+"\t"+
a3[i]+"\t"+a4[i]+"\t"+a5[i]);
}
} null该程序的运行结果如下:
a1.length=8
a2.length=8
a3.length=8
a4.length=8
a5.length=8null a1 a2 a3 a4 a5
double char int byte char
100.0 a 0 0 A
101.0 b 1 0 B
102.0 c 2 0 C
103.0 d 3 0 D
104.0 e 4 0 E
105.0 f 5 0 F
106.0 g 6 0 H
107.0 h 7 0 Inull6.2.2 数组下标的灵活使用
数组作为一组变量的代表者其下标可以使用变量。实际上,我们在示例程序c6_1.java中已经用到了数组下标的这一特性。 【示例程序c6_2.java】 用数组求解Fibonacci数列的前20项,即使用数组下标表达式求解数学上的迭代问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
。nullpublic class c6_2
{
public static void main(String[ ] args)
{ int i;
int f[ ]=new int[20];//创建数组f,使其可存储20个整型数据
f[0]=1;f[1]=1;
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1];//数组元素的下标使用循环变量
for(i=0;i<20;i++)
{ if(i%5==0)System.out.println("\n");
System.out.print("\t"+f[i]);
}
}
}null运行结果是:
1 1 2 3 5
8 13 21 34 55
89 144 233 377 610
987 1597 2584 4181 6765null 查找的关键问题是如何快速地找到待查的内容。相当多的数据是以数组的形式组织与存放的。以数组的形式组织和存放数据的数据结构被称为顺序表。对于顺序表的查找,人们已经发明了许多种算法,典型的有顺序查找和二分(折半、对分)查找。
顺序查找是将待查值与顺序表(数组)中的每个元素逐一比较,直至查找成功或到达数组的最后一个元素还未找到。这种查找的效率相对较低。null 二分查找是在一个有序表(数据是按其值由小到大或由大到小依次存放的,这里我们以值由小到大排列为例)中,每次都与中间的那个元素比较,若相等则查找成功;否则,调整查找范围,若中间那个元素的值小于待查值,则在表的后一半中查找;若中间那个元素的值大于待查值,则在表的前一半中查找;如此循环,每次只与一半中的一个元素比较,可使查找效率大大提高。null 【示例程序c6_3.java】 设数组中的数值是由小到大存放的,编写二分查找程序。
import java.io.*;
class FindSearch
{ int binarySearch(int arr[ ],int searchValue)
{ int low=0;// low是第一个数组元素的下标
int high=arr.length-1;// high是最后一个数组元素的下标
int mid=(low+high)/2; // mid是中间那个数组元素的下标
while(low<=high && arr[mid]!=searchValue)
{ if( arr[mid]
high) mid=-1;
return mid;// mid是数组元素下标,若为-1则表示不存在要查的元素
}
}
public class c6_3
{
public static void main(String[ ] args)throws IOExceptionnull{ BufferedReader keyin=new BufferedReader(new InputStreamReader(System.in));
int i,k,search,mid;
String c1;
int arr[ ]={2,4,7,18,25,34,56,68,89};
System.out.println("打印原始数据");
for(i=0;i
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
输入状态System.in、标准输出状态System.out和标准错误状态System.err。在Java内输入一个字符串需使用readLine( )方法。要使用readLine( )方法,必须从InputStreamReader内建立BufferedReader对象。InputStreamReader用来建立一个使用预设字符编码的InputStreamReader对象。InputStreamReader(System.in)表示InputStreamReader对象是由System.in建立的。BufferedReader用来建立一个固定内存大小的字符输入缓冲流。null图6.3 二分查找的比较与下标调整过程null6.2.3 数组间相互赋值
Java语言允许类型相同,而长度不同的两个数组互相赋值。赋值的结果是两个数组名指向同一数组。
【示例程序c6_4.java】 编程实现两个数组间相互赋值。
public class c6_4
{
public static void main(String arg[ ])
{ int i;
int[ ] a1={2,5,8,25,36};
int a3[ ]={90,3,9};
System.out.println("a1.length="+a1.length);null System.out.println("a3.length="+a3.length);
a3=a1; //赋值的结果是a3指向a1指向的数组
System.out.print("a1:");
for(i=0;ii;k--)
if( arr[k]i)
{ t=arr1[i]; //在外循环实施交换,可减少交换次数
arr1[i]=arr1[k];
arr1[k]=t;
}// if(k>i)结束
}//外循环for(i……)结束
}//成员方法sort定义毕
}
public class c6_9 extends SelectSort
{
public static void main(String[ ] args)
{ null int arr[ ]={78,70,2,5,-98,7,10,-1};
int len=arr.length;
SelectSort.sort(arr);//数组名作为成员方法的实参
System.out.print("选择法排序的结果:");
System.out.println("length="+arr.length);
for(int i=0;imax) max=arr1[i][k];
}
return max;
}
}
public class c6_12
{null public static void main(String[ ] args)
{ int maxx;
int arr[ ][ ]={{1,3,7,6},{78,0,42,5},{-98,7,10,-1}};
Maxvalue p1=new Maxvalue( );
maxx=p1.maxvl(arr);
System.out.println("max="+maxx);
}
}
运行结果:
max=78null【示例程序c6_13.java】 两个矩阵相加。
class AddClass
{ void add(int arA[ ][ ],int arB[ ][ ],int arC[ ][ ])
{ int i,k,len1;
int len=arA.length;
for(i=0;i
本文档为【JAVA数组】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。