java定义数组范围_Java数组的定义和使用

java定义数组范围_Java数组的定义和使用为什么需要数组?问题:我们要计算30个学生的平均分如果没有数组,我们的代码是这样的intscore1=32;intscore2=56;intscore3=78;//……此处省略26个变量intscore30=88;doubleaverage=(score1+score2+……+score30)/30;缺陷很明显了吧?首先要定义的变量太多,假如我们需要存…

大家好,欢迎来到IT知识分享网。

为什么需要数组?

问题:我们要计算30个学生的平均分

如果没有数组,我们的代码是这样的

int score1 = 32;

int score2 = 56;

int score3 = 78;

//……此处省略26个变量

int score30 = 88;

double average = (score1 + score2 + …… + score30) / 30;

缺陷很明显了吧?首先要定义的变量太多,假如我们需要存10000个学生的成绩呢?定义10000个变量?这显然不可能,也不利于数据的处理。

那么我们的数组来啦!

了解数组

1.数据的组合

2.在内存中开辟一连串的空间

3.同一数据类型的情况

79846b41a29ce5fbea46cf263b32f074.png

数组要素

1.标识符:数组名称,称为标识符,用于区分不同的数组

2.数组元素:数组中存放的数据,叫做数组元素。

3.数组下标:在数组中,为了正确地得到数组的元素,需要对它们进行编号,这样计算机才能根据编号去存取,这个编号就称为数组下标。数组下标从0开始

e70d76ea65d5d09c735163863079e717.png

4.元素类型:存储在数组中的数组元素应该是同一数据类型

数组的基本特点

其长度是确定的,数组一但被创建,它的大小是不可以改变的

其元素必须是相同类型的,不允许混合类型

数组中的元素可以是任何数据类型,包括基本类型和引用类型

数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量

数组本身就是对象,Java中对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组本身就是在堆中的

433b9818a413eeec3987c913ce9c7f27.png

cfbc5bfb59f259c0e02112e7bda97ce6.png

这个并不够详细,只是放出来给大家瞄一眼

定义数组的语法

动态初始化

1.声明数组

数据类型[]数组名; 数据类型 数组名[];//不推荐

数组名可以是任意合法的变量名。

声明数组就是告诉计算机该数组中数据的类型是什么。

虽然声明了数组,但并不会为数组元素分配空间。

2.分配空间

数组名 = new 数据类型[数组长度];

或者

数据类型[] 数组名 = new 数据类型[数组长度]

3.赋值

分配空间后就可以向数组里放数据了

语法:数组名[下标值];

int[] scores = new int[5];//成绩数组

int sum = 0;//成绩总和

Scanner input = new Scanner(System.in);

System.out.println(“请输入5位同学的成绩:”);

for (int i = 1; i <= scores.length; i++){//scores.length 数组长度

scores[i] = input.nextInt();

sum = sum + scores[i];//成绩累加

}

//计算并输出平均分

System.out.println(“学员的平均分是:” + (double)sum/scores.length);

这是数组长度:数组名.length

那么数组的最大下标是?数组长度-1

【注意】数组的下标是从0开始的

练习一:依次输入五句话,然后将它逆序输出

String[] str = new String[5];//定义一个String类型长度为5数组

Scanner input = new Scanner(System.in);

System.out.println(“请输入5句话”);

for (int i = 0;i < str.length;i++){

System.out.print(“第” + (i+1) + “句话:”);

str[i] = input.next();

}

System.out.println(“逆序输出为”);

for (int i = str.length-1;i >= 0;i–){//从最大下标开始输出,到下标为0时结束

System.out.println(str[i]);

}

9233214be05493e0cc3a6beffbf328f5.png

练习二:从键盘输入10个整数,合法值为1、2、3,其他的都是非法数字。统计合法数字和非法数字的个数

int[] nums = new int[10];//长度为10

int[] count = new int[4];//存放3个合法数字和非法数字

Scanner input = new Scanner(System.in);

System.out.println(“请输入10个整数:”);

for (int i = 0; i < nums.length;i++){

nums[i] = input.nextInt();

switch (nums[i]){

case 1:

count[0]++;//记录1的个数

break;

case 2:

count[1]++;//记录2的个数

break;

case 3:

count[2]++;//记录3的个数

break;

default:

count[3]++;//记录非法数字个数

}

}

//遍历合法数字和非法数字

for (int i = 0;i < count.length;i++){

if(i == count.length-1){

System.out.println(“非法数字的个数:” + count[3]);

}else{

System.out.println(“数字” + (i+1) + “的个数为:” + count[0]);

}

}

c1b9dd4cba52e13abaa71ae17d88e66b.png

定义一个数组的另一种方式(静态初始化:创建 + 赋值)

数据类型[] 数组名 = {值1,值2,值3,……,值n};

int[] scores = {44,54,67,34,65};

练习三:假设有一个长度为5的数组 int[] array = {1,3,-1,5,-2};

现在要创建一个新数组newArray[],要求把原来数组中元素逆序放进新数组,并且如果原数组小于0的数,在新数组中按0存放。

int[] array = {1,3,-1,5,-2};//长度为5的数组

//遍历原数组,这里用的是foreach循环

System.out.println(“原数组为:”);

for (int i : array) {

System.out.print(i + “\t”);

}

int[] newArray = new int[array.length];//新数组

int index = 0;//用于给新数组赋值

//把原数组的值逆向放到新数组全靠这块代码

for (int i = array.length-1; i >= 0 ;i–){

//原数组值小于0,在新数组里就等于0,这里用continue是因为 整型数组默认值是0

if (array[i] < 0){

continue;//跳过这次循环

}

newArray[array.length-1-i] = array[i];//array.length-1-i:逆序放在在新数组中的元素下标

}

System.out.println(“\n逆序并处理后的数组为:”);

for (int i : newArray) {

System.out.print(i + “\t”);

}

这里使用了一个foreach循环

/*

for(类型 变量名 : 数组或者集合对象){ //这种循环适合遍历

System.out.println(变量名);

}

*/

for (int i : newArray) {

System.out.print(i + “\t”);

}

数据类型默认值:因为数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式隐式赋值

int(0)double(0.0)char(\u0000)String(null)boolea(false)

基本类型没有默认值

引用类型有默认值

数组下标越界

下标的合法区间:[0 ~ length-1],如果越界就会报错;

int[] array = new int[5];

array[5] = 10;//下标越界

**ArrayIndexOutOfBoundsException**:数组下标越界异常

多维数组

/*

array[0] 1,2

array[1] 2,3

*/

int[][] array = {
{1,2},{5,2}};//这是一个二维数组

System.out.println(array[0][1]);//取到的是1

//遍历这个数组中的所有值

for (int i = 0; i < array.length; i++){

for (int j = 0; j < array[i].length; j++){

System.out.println(array[i][j]);

}

}

可以理解为:数组中存放的还是数组。这个东西比较灵活,可以自己敲代码尝试三维、四维,就跟嵌套似的

40a95d3726fcb51cb54ee5a178e3a049.png

Arrays 类

数组的工具类java.util.Arrays

数组本身没什么方法给我们用,所以提供了一个工具类供我们使用,从而对数据对象进行一些基本的操作

查看JDK帮助文档 链接:https://pan.baidu.com/s/16cGBmZcGMKW0NckaXDXTDQ 提取码:wssb

Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而”不用”使用对象来调用(注意:是”不用”而不是”不能”)

常用功能:

给数组赋值:通过fill方法

对数组排序:通过sort方法,按升序

比较数组:通过equals方法比较数组中的元素是否相等

查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作

int[] array = {1,2,3,4,5564,462,5377,34};

System.out.println(array);//[I@1b6d3586 现在看不懂没关系

//打印数组元素Arrays.toString

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

//数组进行排序:升序

Arrays.sort(array);

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

//数组填充

Arrays.fill(array, 0);

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

标签:Java,定义,int,System,数组,println,array,out

来源: https://blog.csdn.net/weixin_45277249/article/details/111307521

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/15761.html

(0)
上一篇 2024-02-14 17:15
下一篇 2024-02-15 08:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信