【Java学习】2.JAVA语言学习2:数组

1 数组

数组:用于存储数据,将相同类型的若干数据组织起来,即数组是若干相同类型数据的集合。每一个数据成为一个元素,每个元素可以通过一个索引(下标)来访问。

如果数组只声明,没有初始化,则这个数组相当于没有定义。

数组的声明和创建:

int[] arr=new int[4]

数组有默认的初始化值:
基本数据类型:byte, short, int, long是0; float, double是0.0;char是‘\u0000’;Boolean是false。
引用数据类型:null。

new创建的对象放在堆里,局部变量、形参是放在栈里。

数组的特点:

(1)长度是确定的。数组一旦被创建,大小是不可变的。
(2)数组元素必须是相同类型,不能是混合类型。
(3)数组类型可以是任何数据类型。
(4)数组是有索引的,索引从0开始到length-1结束。
(5)数组变量属于引用类型,数组也是对象。数组中的每个元素相当于该对象的成员变量。JAVA中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中存储的。

数组的初始化

静态初始化:除了用new关键字来产生数组外,还可以直接在定义数组的同时就为数组元素分配空间并赋值。

int[] arr={1,2,3,4,5};
int[]  arr=new int[]{1,2,3,4,5};

动态初始化:数组定义与为数组元素分配空间并赋值的操作分开进行。

int[] arr = new int[3];
arr[0]=1;

默认初始化:数组一经分配空i教案,其中每个元素也被按照实例变量同样的方式被隐式初始化。

int[] arr={1,2,3,4,5}
for(int i=2;i<arr.length-1;i++){
    arr[i]=arr[i+1];
}
arr[length-1]=0;

Arrays类

Arrays.sort(arr); //排序

Arrays.binarySearch(arr,2);//二分查找,找到元素2的索引

int[] newArr = Arrays.copyOf(arr,4);//复制数组的前四个元素

int[] newArr1 = Arrays.copyOfRange(arr,1,4);//索引值范围1到4复制数组arr,左包含,右不包含

Arrays.equals(arr1,arr2);//比较两个数组中每个元素是否相同,返回布尔值
arr1==arr2;//比较左右两侧的值是否相等,这里是比较地址,一定不同

Arrays.fill(arr,10);//将arr中的每个元素填充为10

Arrays.toString(arr);//将数组转换为一个字符串

数组的复制

除了Arrays.copyOf方法,还有System.arraycopy方法。(深拷贝)

System.arraycopy(arr,0,arrCopy,0,arr.length);

二维数组

int[][] arr; 定义了一个数组,名字叫arr。
             堆空间中每个“格子”中放入的数据都是int[]类型的。

以上即为二位数组,实际上本质上都是一维数组。

int[][] arr = new int[3][]; //本质上定义了一个一维数组,长度为3,其中每个元素都是一维数组

int[] a1={1,2,3};
arr[0]=a1;
arr[1]=new int[]{2,3,4};
arr[2]=new int[]{4,5,6};

for(int i=0;i<3;i++){
	for(int j=0;j<arr[i].length;j++){
		System.out.println(arr[i]a[j]);
	}
	System.out.println();
}

for(int[] a:arr){
	for(int b:a){
		System.out.println(b);
	}
	System.out.println();
}

二维数组初始化:
静态初始化:

int[][] arr={{1,2},{3,4},{5,6,7}};
int[][] arr=new int[][]{{1,2},{3,4},{5,6,7}};

动态初始化:

int[][] arr=new int[3][2];
//本质上定义一个一维数组,长度为3.
//每个元素是一个长度为2的数组。这里的2只针对初始而言,重新赋值一个更长的数组也可以。
arr[0]=new int[]{1,2};
arr[1]=new int[]{1,33};
arr[2]=new int[]{4,5};

默认初始化:

int[][] arr=new int[3][2];
//定义一个一维数组,长度为3。
//每个元素初始化为0构成的数组,每个元素是一个长度为2的数组。

2 main方法

main方法是程序的入口,在同一类中,如果有多个方法,虚拟机就会识别main方法,从这个方法作为程序的而主入口。

public static void main(String[] args){}

String[] args 实参是什么?
通过System.out.println(args.length)得到结果为0,可知args是String数组,相当于String[] args=new String[0]。所以默认情况下,虚拟机在调用main方法的时候是传入了一个长度为0的数组。可以手动输入传入参数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值