java数组下标的数据类型6_JAVA基础(6)-数组

数组:

1、概念

一组相同类型的数据的组合,数组也是一种引用类型。

数组的特点:一经创建,长度不可变。

2、名称

数组名称不是固定的,与存放的数据的类型有关。

如:  存放一组int类型的数据,数组名称   int[ ]

存放一组字符串数据,数组名称   String[ ]

存放一组Scanner类型的数据,数组名称   Scanner[ ]

存放一组字符类型的数据,数组名称   char[ ]

3、元素的概念

数组中的每个数据,都是这个数值的元素。

4、数组的声明与初始化

声明:元素类型[]  变量名;

元素类型   变量名[];       (不建议此写法)

变量初始化的时机:2种

(1)声明时直接初始化

(2)先声明,再初始化(使用前初始化)

数组的变量初始化:3种情况

(1)静态初始化

String[] names = {"A","B"};

int[] nums = {};

(2)动态初始化

--规定数组长度的写法

int[] ages = new int[length];  //length数组初始的长度

动态初始化的数组其实有默认元素:

整数类型:默认是0

浮点数类型:默认0.0

字符类型:默认'\u0000'

布尔类型:默认false

引用数据类型:默认值null

--不规定长度的写法

int[] ages = new int[]{};

double[] counts = new double[]{1.2,3.14};

5、数组的长度、下标

即数组元素的个数

表示方式:变量名.length;

下标从0开始,最后一个元素的下标为:length-1;

下标范围:0~length-1

6、数组元素的访问

通过下标进行查看

语法:变量名[index];        //index要访问的数组元素下标

数组元素的遍历(从头到尾依次查看)

for(int i=0;i

System.out.println(变量命[i]);

}

7、数组间的赋值、元素的覆盖(赋值,替换)

语法:变量名[index] = value;

就是指数组中变量之间的赋值。通过一个变量对数组的元素进行修改,那么与之相关的变量对应的数组的元素也会发生变化。

如:

int[] a = {1,2,3};

int[] b = a;

通过修改b数组中的元素值,a对应的数组也跟着改变

8、数组下标越界异常

异常的提示内容:java.lang.ArrayIndexOutOfBoundsException

出现的原因:访问数组元素时的下标超出了范围

正确范围:0~length-1

错误下标:

变量名[-1]

变量名[length]

练习代码:

public static voidmain(String[] args){int[] scores = {1,2,10,100};

System.out.println(fs[5]);/*数组下标越界异常,编译器检查不出来此异常

运行时才会出现,出现的结果造成了程序的中断结束。*/System.out.println("over");

}

9、引用类型Arrays

Arrays类型是数组的工具类。此类提供了很多对数组操作的功能方法

如:

String info = Arrays.toString(数组名);

Arrays.toString():此方法是将数组的元素拼接成String字符串.

拼接后的格式如下:

"[元素1,元素2,.....元素length-1]"

练习代码:

public static voidmain(String[] args){int[] scores = {1,2,10,100};

System.out.println(Arrays.toString(scores));

}

10、数组的复制

系统复制法:

System.arraycopy(src,start1,des,start2,length);

src:源数组,即被复制的数组名

start1:源数组复制的开始下标

des:目标数组,即复制到的数组名

start2:目标数组复制的开始下标

length:复制的长度

工具类提供的复制方法:

元素类型[] 变量名=Arrays.copyOf(src,newLength);

src:源数组

newLength:新数组的长度

功能解释:从src的下标为0的元素开始复制,复制到长度为newLength的新数组中,新数组存放元素的开始位置为0

练习代码:

public static voidmain(String[] args){int[] nums = {99,100,98,99,100};/*创建一个数组num2,存储元素

1000,99,100,98,99,100*/

int[] num2 = new int[6];

num2[0] = 1000;

System.arraycopy(nums,0,num2,1,nums.length);

System.out.println("num2:"+Arrays.toString(num2));int[] num1 = Arrays.copyOf(nums,5);

System.out.println(Arrays.toString(num1));/*创建一个int类型的num2,长度为10,前五个元素

为num1的内容。*/

int[] num2 = Arrays.copyOf(num1,10);

System.out.println(Arrays.toString(num2));

}

练习题:创建一个长度为n [50,100]的字符数组,随机存储n个小写的英文字母,然后统计每个字母出现的次数。

public static voidmain(String[] args) {int[] num = new int[26];int n = (int)(Math.random()*51+50);char[] strs = new char[n];for (int i = 0; i < strs.length; i++) {

strs[i]= (char) (Math.random()*26+97);for(int j=97;j<=122;j++){if((char)j==strs[i]){

num[j-97]++;

}

}

System.out.print(strs[i]+" ");if((i+1)%10==0)

System.out.println();

}

System.out.println("\n总共生成"+n+"个字母,其中:");for (int i = 0; i < num.length; i++) {

System.out.print((char)(i+97)+"出现了"+num[i]+"次 ");if((i+1)%5==0){

System.out.println();

}

}

}

二维数组

二维数组的初始化:

静态初始化

如:int[][] a = {{1},{1,2},{2,3,4}};

动态初始化:

(1)等长式初始化

int[][] a = new int[3][2];

表示a有三个元素,每个元素都是2个长度的数组。

(2)只规定高维数组的长度

int[][] a = new int[3][];

表示a有三个元素,但是都是null,null在使用时,需要新建数组对象(长度任意)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值