数组

一维数组的概念及表示

对比于集合来学习;用于存储相同数据类型的集合;这些元素都被当做对象被创建。一个班级要存储学生的成绩,每个学生都需要存储到数组中
数组:相同类型元素的集合(前俩是静态,后一个是动态)

  •   	int[] 变量名={元素,元素,元素..}
    
  •       int 变量名[]={元素,元素,元素..}
    
  •        int [] 变量名 =new int[size]  //注意,此时是中括号内表示大小
    
  • 给数组赋值直接 ;int a[]=new int[]{元素,元素,元素,元素,。。}

输出

数组是一种引用类型;单独输出会输出引用地址。

1.用增强for循环依次输出才会输出值

int a []={1,2,3,4,8,6,7}
for(int i=0;i<a.length;i++){
	System.out.print(a[i]+"  ");
}

2.用一个变量存储数组,通过输出变量名输出

int a [] = {2,3,5,6,3,9};
for(int a_:a) {
			System.out.println(a_+" ");
		}

3.用 Arrays包里的toString()方法

import java.util.Arrays;
int a[]={1,2,3,4,5,6,8,8};
System.out.println(Arrays.toString(a));//将引用地址该为字符串输出的形式

数组的特点

  • 必须存储相同类型的值
  • 数组的长度一旦固定,不可更改
  • 数组必须通过下标来获取值
  • 下标从0开始到数组长度减1 for循环刚刚好 <a.length
  • shuzu可以存储重复元素

数组的默认值和数据类型的定义有关

  • String数组,默认值未null
  • char数组 ,moren shi 空格
  • int数组,默认是 0
    float [ ] a= {12.1f,13.6f};//float类型的数组赋值要+ f

二维数组的表示及输出

1.int a [][]={{1,2,3},{,4,5,6},{7,8},{…}…}
2.表示: 嵌套for循环来输出数组,借助变量a_和b来便利
3.多维数组在内存中的存放位置是 3排,每排还是数组
4.可以将其中的一排赋值给新数组,他的长度于元素个数有关。
5.二维数组的每个元素的长度并不要求相同

package 数组2;

public class home3 {

	public static void main(String[] args) {
		int a [][]= {{1},{2,3},{4,5,6}};
		for(int[] a_:a) {//嵌套for循环来输出数组,借助变量a_和b来便利
			for(int b:a_) {
				System.out.println(b+" ");
			}
		}
	}

}

普通for循环输出

package 多维数组;
//多为数组的遍历
public class Test2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] [] scores= {
				{82,90,91},
				{68,72,64},
				{95,91,89},
				{67,52,60},
				{79,81,85},
		};
		double average=0;
		double sum=0;
		for(int i=0;i<scores.length;i++) {
			for(int j=0;j<scores[i].length;j++) {
				sum+=scores[i][j];
			}
		}
		average =sum/15;
		System.out.println(average);

	}

}

二维数组的排序

package 多维数组;

import java.util.Arrays;

public class Test4 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int [] []a={{11,15,32,21},{2,3},{4,5,6}};
		int count=0;
		for(int i=0;i<a.length;i++) {
			for(int j=0;j<a[i].length;j++) {
				count++;
			}
		}
		int [] b=new int[count];
		int index=0;
		for(int i=0;i<a.length;i++) {
			for(int j=0;j<a[i].length;j++) {
				b[index++]=a[i][j];
			}
		}
		Arrays.sort(b);
		System.out.println(Arrays.toString(b));

	}

}

数组的扩容

1.定义更大的数组
2.把原来的内容赋值到新数组
3.原来的数组名指向新数组

package 数组.扩容;

-

public class Default {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int []data= {23,54,67,78,34,89};
		//定义更大的数组
		int [] newData=new int[data.length*2];
		//把原来的内容赋值到新数组;多余的空位用0补齐
		for(int i=0;i<data.length;i++) {
			newData[i]=data[i];
			
		}
		//让原来的数组名指向新的数组
		data= newData;

	}

}
  • 数组一般只用于查找,很少用于删除插入

数组的删除

package 数组.删除;

import java.util.Arrays;

//定义一个方法,删除指定元素
public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a=delete(data[]={4,5,8,2,96,5,5,7},5);
		System.out.println(Arrays.toString(data));

	}
	public int delete(int data [],int i){
		//1.定义较小的数组
		int [] newDate=new int [data.length-1];
		//2.把0,1复制到新的数组中,在i+1开始到 data.length
		for(int t=0;t<i ;t++) {
			newDate[t]=data[t];
			
		}
		for(int t=i+1;t<data.length;t++) {
			newDate[t-1]=data[t];
		}
		//4.返回新的数组
		return newData;
	
		
		
	}

}

命令行参数

命令行参数是String[ ]数组类型
命令行由JVM接受用户传给main方法
如何解析命令行参数需要由程序自己实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值