数组
目标
掌握一维数组创建和使用的方法
掌握二维数组创建和使用的方法
掌握数组遍历
掌握填充和替换数组元素
掌握数组排序
掌握数组复制
掌握查询数组方法
一维数组的声明与创建
1.声明一维数组
语法格式: 数组元素类型 数组名字[ ]
数组元素类型 [ ]数组名字
int arr[ ];
String str[ ];
2.一维数组创建
语法格式:数组名字 []=new 数组元素类型[数组元素个数]
arr=new int[5];
arr[0] | arr[1] | arr[2] | arr[3] | arr[4] |
1. 声明同时创建数组
语法格式:数组元素类型数组名[]=new 数组元素类型[数组元素的个数]
int arr[ ]=new int[16];
项目一:一维数组的初始化
语法格式:int arr[ ]=new int[]{1,3,5,7,9};
静态初始化:
publicclass p1 {
publicstaticvoid main(String[] args) {
int s[]=newint[]{1,3,5,7,9,11,13};
for(int i=0;i<s.length;i++)
{
System.out.println("s["+i+"]="+s[i]);
}
}
}
动态初始化
publicclass p2 {
publicstaticvoidmain(String[] args) {
int s[]=newint[10];
for(int i=0;i<10;i++)
{
s[i]=2*i+1;
}
for(int j=0;j<s.length;j++)
{
System.out.println("s["+j+"]="+s[j]);
}
}
}
数组创建过程:声明数组在栈内存创建变量s,并不开辟空间。
缺省初始化
publicclass p2 {
publicstaticvoidmain(String[] args) {
int s[]=newint[10];
for(int j=0;j<s.length;j++)
{
System.out.println("s["+j+"]="+s[j]);
}
}
}
明确:
数组如果没有初始化:int 类型数组默认为0;
Boolean类型默认为:FALSE
Float类型默认为:0.0
项目二:二维数组的创建与初始化
1. 声明二维数组
语法格式:
数组元素类型 数组名[][];
或者 数组元素类型 [][] 数组名;
intmyarr[][];
2. 创建二维数组
myarr=new int [2][4];
3. 另一种创建的方式
a=new int[2];
a[0]=new int[4];
a[1]=new int[4];
a[2]=new int[4];
4. Java中的多维数组每一维的长度可以不同
int a[][];
a=new int[3][];
a[0]=new int[4];
a[1]=newint[3];
a[2]=newint[2];
a[0][0] | a[0][1] | a[0][3] | a[0][3] |
a[1][0] | a[1][1] | a[1][2] |
|
a[2][0] | a[2][1] |
|
初始化:
例如:
inta[][]=new int {{1,2,3},{4,5},{6}};
例如:创建后再赋值
int a[][]=new int[2][2];
a[0][0]=1;
a[0][1]=2;
a[1][0]=3;
a[1][1]=4;
publicclass p3 {
publicstaticvoidmain(String[] args) {
int a[][]=newint[3][4];
for(int i=0;i<3;i++)
{
for(intj=0;j<4;j++)
{
a[i][j]=i+j;
}
}
//*************************************
for(int k=0;k<3;k++)
{
for(intl=0;l<4;l++)
{
System.out.println(a[k][l]);
}
}
}
}
项目三:数组复制
v Java类库中提供了一个静态方法“.arraycopy”实现数组元素的拷贝。
格式:
System.arraycopy(source,n1,dest,n2,n3);
其中:
source:源数组名
n1:源数组下标起始位
dest:目标数组名
n2:目标数组下标起始位
n3:复制元素的个数
public class k4_5
{
public static void main (String[]args)
{
int a []=new int []{1,2,3,4,5,6};
int b []=new int []{10,9,8,7,6,5,4,3,2,1};
System.arraycopy(a,0,b,0,3);
for (int i=0;i<b.length;i++)
{
System.out.println(b[i]);
}
}
}
项目四:数组元素排序
v Java.util包中专门有一个数组类“Arrays”用于排序、排序后查找等操作。
使用:
int a []={6,8,24,1,2};
Array.sotr(a);
使用时必须引用: import java.util.Arrays
import java.util.Arrays;//引用
public class k4_6
{
public static void main (Stringargs[])
{
int a []={6,1,34,27,31,-1,94};
Arrays.sort(a);
for (inti=0;i<a.length;i++)
{
System.out.print(a[i]+"\t");
}
}
}
项目五:Java中常用的包
v java.applet:包含一些用于创建Java小应用程序的类。
v java.awt:包含一些用于编写与平台无关的图形界面(GUI)应用程序的类。
v java.io:包含一些用作输入输出(I/O)处理的类。
v java.lang:包含一些Java语言的基本类与核心类,如String、Math、Integer、System和Runtime,提供常用的功能,这个包中的所有类是被隐式导入的。
v java.net:包含用于建立网络连接的类,与java.io同时使用完成与网络有关的读写。
v java.util:包含一些实用工具类和数据结构类。
项目六:使用数组打印9*9乘法表
public class t4 {
public staticvoid main(String[] args) {
// TODO 自动生成方法存根
inta[][]=new int[9][]; //9行 n(可变)列
//将计算结果放入数组中
for(int i=0;i<a.length;i++)//外层循环控制行 9 0-8
{
a[i]=new int[i+1]; //声明了每行的列数 a[1]=new int[2]
//内层循环控制列 n 可变
for(int j=0;j<a[i].length;j++)
{
a[i][j]=(i+1)*(j+1);
}
}
//打印输出
for(int i=0;i<a.length;i++)
{
for(int j=0;j<a[i].length;j++)
{
System.out.print((j+1)+"*"+(i+1)+"="+a[i][j]+"\t");
}
System.out.println()
}
}
结果:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81