Java数组(五)
创始人
2024-01-27 00:41:59

数组

    • 1、数组的使用
    • 2、数组赋值机制
    • 3、排序与查找
    • 4、二维数组

数组是多个相同类型数据的组合,数组是引用类型。

1、数组的使用

使用方式1 - 动态初始化:

数组的定义:数据类型 数组名[] = new 数据类型[大小];

数组的使用:数组名[下标/索引];

int temp[] = new int[5]; // 定义
temp[0] = 66; // 根据元素下标赋值
System.out.println(temp[0]); // 输出 66

使用方式2 - 动态初始化:

先声明数组:数据类型 数组名[];

再创建数组:数组名 = new 数据类型[大小];

double temp[]; // 先声明
temp = new double[5]; // 再创建

使用方式3 - 静态初始化:

初始化数组:数据类型 数组名[] = {元素值,元素值...};

int temp[] = {2,4,6,99,5,888,1};

数组使用注意事项和细节:

1:数组是多个相同类型数据的组合,用于实现对这些数据的统一管理。
2:数组中的元素可以是任何数据类型,包括基本类型和引用类型,但是不能混用。
3: 数组创建后,如果没有赋值,则会自动生成默认值:int 0、short 0、byte 0、long 0、float 0.0、double 0.0、char \u0000、boolean false、String null
4:声明数组时,[]放在数据类型后面或放在变量名后面都可以,无差别。
5:使用数组的步骤:①声明数组并开辟空间(new)、②给数组各个元素赋值、③使用数组。
6:数组的下标从0开始
7:数组下标不能越界
8:数组属于引用类型,数组型数据是对象(object)


 

2、数组赋值机制

基本数据类型赋值,这个值就是具体的数据,而且互不影响。数组在默认情况下是引用传递,赋的值是地址。

数组拷贝:

// 将arr1的元素拷贝到arr2数组,要求数据空间是独立的
int[] arr1 = {10,20,30};		
// 创建一个新的数组arr2,开辟新的数据空间
int[] arr2 = new int[arr1.length];
// 遍历arr1,把每个元素拷贝到arr2对应的元素位置
for(int i = 0;i < arr1.length;i++){arr2[i] = arr1[i];
}

数组翻转:

// 第一种方式:
// 每次交换时,对应的下标是 arr[i] <=> arr[arr.length - 1 - i]
int temp = 0; 
int[] arr = {11,22,33,44,55,66};
for(int i = 0;i < arr.length / 2;i++){temp = arr[arr.length - 1 - i];arr[arr.length - 1 - i] = arr[i];arr[i] = temp;
}
// 第二种方式:
int[] arr = {11,22,33,44,55,66};
int[] arr2 = new int[arr.length];
for(int i = arr.length - 1,j = 0;i >= 0; i--,j++){arr2[j] = arr[i];
}
// 让arr指向arr2数据空间,此时arr原来的数据空间就没有变量引用,会被当做垃圾销毁掉
arr = arr2;

数组扩容:

//实现简单的数组扩容,并给扩容的元素赋值
int[] arr = {1,2,3};
int[] arrNew = new int[arr.length + 1];
for(int i = 0; i < arr.length; i++){arrNew[i] = arr[i];
}
arr[arrNew.length - 1] = 4; // 把4赋给arrNew最后一个元素
arr = arrNew; // 让arr指向arrNew

数组缩减:与数组扩容原理一样,不再赘述。
 

3、排序与查找

排序是将多个数据,按照指定的顺序进行排列的过程。

排序分为内部排序法外部排序法

1:内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序。包括(交换式排序法、选择式排序法和插入式排序法)。
2:外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。包括(合并排序法和直接合并排序法)。

冒泡排序法(Bubble Sorting): 通过对待排序序列从后向前,依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下的气泡一样逐渐向上冒。

// 冒泡排序法示例:
int[] arr = {24,69,80,57,13,-1,-66};
int temp = 0;
for(int i = 0;i < arr.length - 1;i++){for(int j = 0; j < arr.length - 1 - i ;j++){if(arr[j] > arr[j + 1]){temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}
}

在Java中,常用的查找有两种:顺序查找二分查找
 

4、二维数组

什么是二维数组: 元素为一维数组的数组就称为二维数组。

使用方式一 - 动态初始化:

语法:数据类型[][] 数组名 = new 数据类型[大小][大小];

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

使用方式二 - 动态初始化:

先声明:数据类型 数组名[][];

再定义:数组名 = new 数据类型[大小][大小];

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

使用方法三 - 列数不确定:

// 创建二维数组,但是只指定一维数组的个数
int[][] arr = new int[3][];
// 遍历arr的所有一维数组
for(int i = 0; i < arr.length; i++){// 给每个一维数组开辟空间,如果没有给一维数组开辟空间,那么arr[i]就是nullarr[i] = new int[i + 1];// 遍历一维数组,并给一维数组的每个元素赋值for(int j = 0; j < arr[i].length; j++){arr[i][j] = i + 1;}
}
// 遍历输出二维数组的值
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("");
}

使用方法4 - 静态初始化:

语法:数据类型 数组名[][] = {{值1,值2...},{值1,值2...},{值1,值2...}};

int[][] arr = {{1,2,3},{6,8,0},{88,99,44}};

二维数组的使用细节:

1:一维数组的声明方式:int[] xint x[]
2:二维数组的声明方式:int[][] yint[] y[]int y[][]
3:二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同。

上一篇:如何形容水泡?

下一篇:只爱刘的诗

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
电脑c盘满了怎么办 如何深度清... 如果电脑在使用一段时间后,C盘莫名其妙满了,磁盘变成红色,那么大多数都是因为自己使用上的问题,不接受...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...