通过嵌套型for循环实现遍历二维数组
public class Demo{
public static void main(String[] args){
char arr[][]=new char[4][];
arr[0]=new char[]{'春','眠','不','觉','晓'};
arr[1]=new char[]{'处','处','闻','啼','鸟'};
arr[2]=new char[]{'夜','来','风','雨','声'};
arr[3]=new char[]{'花','落','知','多','少'};
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.print(arr[i][j]);
}
System.out.println();
}
}
}
也可以同样使用foreach循环实现同样功能
public class Demo{
public static void main(String[] args){
char arr[][]=new char[4][];
arr[0]=new char[]{'春','眠','不','觉','晓'};
arr[1]=new char[]{'处','处','闻','啼','鸟'};
arr[2]=new char[]{'夜','来','风','雨','声'};
arr[3]=new char[]{'花','落','知','多','少'};
for(char a[]:arr){
for(char b:a){
System.out.print(b);
}
System.out.println();
}
}
}
结果如下:
春眠不觉晓
处处闻啼鸟
夜来风雨声
花落知多少
填充和批量替换数组元素
1.填充
//一般通过两种方法再完成填充和批量替换数组
Aarrays.fill(arr,int value)
//其中arr表示数组,value表示要填充的值
Arrays.fill(arr,int fromIndex,int tolndex,int value)
//其中fromIndex表示填充的第一个索引(包括)
//tolndex表示填充的最后一个索引(不包括)
例子如下:
public class Demo{
public static void main(String[] args){
int arr[]=new int[5];
Arrays.fill(arr,13);
//实现填充效果
for(int i=0;i
填充的方法之前不能有其他的赋值 *** 作,否则会被覆盖,例如下例所示
public class Demo{
public static void main(String[] args){
int arr[]=new int[5];
arr[0]=7; //填充前对数组进行赋值 *** 作
Arrays.fill(arr,13);//进行填充,结果跟上例相同
for(int i=0;i
结果同一如下:
第0个元素的值是13
第1个元素的值是13
第2个元素的值是13
第3个元素的值是13
第4个元素的值是13
2.批量替换
public class Demo{
public static void main(String[] args){
int arr[]={1,2,3,4,5,6,7,8};
Arrays.fill(arr,2,5,0);//从索引2位置开始替换到索引5之前
//注意不要超出索引范围,否则会出现数组下表越界
for(int i=0;i
结果如下:
第0个元素的值是1
第1个元素的值是2
第2个元素的值是0
第3个元素的值是0
第4个元素的值是0
第5个元素的值是6
第6个元素的值是7
第7个元素的值是8
举一反三:
将手机号码15612543731中的“1254”替换为"*"
public class Demo{
public static void main(String[] args){
int arr[]={1,5,6,1,2,5,4,3,7,3,1};
Arrays.fill(arr,3,7,0);//从索引2位置开始替换到索引5之前
//注意不要超出索引范围,否则会出现数组下表越界
for(int i=0;i
对数组进行排序
使用Arrays.sort(arr)方法,例如:
int arr[]=new int[]{23,42,12,8};
Arrays.sort(arr);
例如对数组a[]排序,代码如下:
public class Demo{
public static void main(String[] args){
int a[]=new int[]{56,14,92,1};
Arrays.sort(a);
for(int tmp:a){
System.out.print(tmp+" ");
}
}
}
运行结果为:
1 14 56 92
利用Java自身提供的API较为简单,相对于选择排序和冒泡排序更为方便。
举一反三:
利用Arrays.sort(arr)方法对带有小数的数组排序
public class Demo{
public static void main(String[] args){
double b[]=new double[]{12.0,85.4,1.1,2.3};
Arrays.sort(b);
for(double tmp:b){
System.out.print(tmp+" ");
}
}
}
运行结果为:
1.1 2.3 12.0 85.4
总结:Arrays.sort(arr)方法虽然好用,但也有它的弊端,那就是默认的排序结果都是升序的,不像冒泡排序和选择排序一样可以主观的调整排序结果
复制数组在学习复制数组语法前,先观察这样一个现象
public class Demo{
public static void main(String[] args){
int a[]={1,2,3};
int b[]=a;
System.out.print("a数组");
for(int temp:a){
System.out.print(temp+" ");
}
System.out.println();
System.out.print("b数组");
for(int temp:b){
System.out.print(temp+" ");
}
}
}
此时,编译器得到的结果是这样的
a数组 1 2 3
b数组 1 2 3
看起来就像是把a数组的值复制给了b,现在我们将b数组第一个值改为77,那么最后的结果是多少呢?
代码如下:
public class Demo{
public static void main(String[] args){
int a[]={1,2,3};
int b[]=a;
b[0]=77;
System.out.print("a数组");
for(int temp:a){
System.out.print(temp+" ");
}
System.out.println();
System.out.print("b数组");
for(int temp:b){
System.out.print(temp+" ");
}
}
}
运行结果:
a数组 77 2 3
b数组 77 2 3
b数组的第一个值变为77了,但是我们发现a数组的第一个变成了77,因为我们创建这个数组时,a是数组变量,后面的值是一个常量,我们将一个变量赋给另一个变量时,它们指向的是同一个常量,也就是说当b中第一个元素改为77时,a用的也是这个常量,随之a的值也会发生改变,从计算角度来说,a跟b指向的是同一块儿的内存区域,所以等号的赋值方法不是解决数组复制的方法。
可以通过copyOf方法解决复制问题
Arrays.copyOf(arr.newlength);
//arr:数组
//newlength:复制后的新的数组长度
public class Demo{
public static void main(String[] args){
int a[]={1,2,3};
int b[]=Arrays.copyOf(a,3);
//通过copyOf方法复制
b[0]=77;
System.out.print("a数组");
for(int temp:a){
System.out.print(temp+" ");
}
System.out.println();
System.out.print("b数组");
for(int temp:b){
System.out.print(temp+" ");
}
}
}
运行结果:
a数组 1 2 3
b数组 77 2 3
b数组的数值更改后并未影响到a数组,copyOf方法为b开辟了一块儿新的内存空间,b和a数组是两个完全独立的常量,所以互不干扰。
注意:如果拷贝的元素个数大于原来数组已有元素个数,会自动补充两个元素,也就是int元素的默认值0;
Arrays.copyOfRange(arr,formlndex,tolndex);
//该方法可指定复制索引区域
formlndex:指定开始复制数组的索引位置(包括)
tolndex:要复制范围的最后索引位置(不包括)
代码实例:
public class Demo{
public static void main(String[] args){
int a[]={1,2,3,4,5,6};
int b[]=Arrays.copyOfRange(a,2,5);
//通过copyOf方法复制
System.out.print("a数组");
for(int temp:a){
System.out.print(temp+" ");
}
System.out.println();
System.out.print("b数组");
for(int temp:b){
System.out.print(temp+" ");
}
}
}
运算结果:
a数组 1 2 3 4 5 6
b数组 3 4 5
好了,今天就到这里了,拜拜bye~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)