[Java入门笔记]Java语言基础(五):数组
简介
数组可用用于存储存储多个数据,Java的数组要求所有的数组元素具有一种相同的数据类型。一旦数组初始化完成,数组在内存中的空间被固定下来,长度不可改变,即使把数组的元素清空,所占用的空间依然被保留。
生活案例:博物架
每一个物品架都是相同类型的物品,长度不变,即使把物品下架,物品架依然不会改变。
定义数组
使用数组4步走:
1、声明数组
Java中支持两种格式的数组定义格式:
类型[] 变量名; 类型 变量名[];
例:
int[] a;int b[]; //两种方法都行,不过建议使用第一种。
声明数组也就相当于上面例子中购买了一个定制的物品架(数组)到博物馆中,但是还没有确定物品架的大小(数组的大小),也还没有往物品架上放东西(数组元素)。
2、分配空间
分配空间也就是对数组进行初始化,初始化分为两种方式:
第一种:静态初始化
静态初始化的语法格式如下:
数据类型[] 变量名 = new 数据类型[]{数据1, 数据2,数据3,......};
例:
int[] a = new int[]{4,2,64,12,3}; //将这些数存放在数组中,数组的大小(长度)为花括号中元素的数量,该例子中大小为5String[] b = new String[]{"张三", "李四", "王五"}; //所有数据的类型必须为定义的数据类型int[] c = {2,5,7}; //也可以使用这样的简写方式
这就如同购买一个定制的物品架回来,同时将展示品放到物品架中一起购买回来,而物品架的大小就有多少物品就就有多大。
第二种:动态初始化
动态初始化是只指定数组的大小,由系统为每个元素指定初始值得一种方式。语法格式如下:
数据类型[] 变量名 = new 数据类型[大小];
在这个格式中, 需要为其指定一个整数类型的数组大小,指定后,将确定数据的长度,数组能够存放多少元素。同时为所有元素指定一个默认初始值。
例:
int[] a = new int[5]; //定义一个数组,长度为5,也就是说,能够存放5个int类型的数据,同时,默认5个值初始化为0
初始化时默认值按以下规定设置:
byte,short,int、long默认为0;
float、double默认为0.0;
char默认为'\u0000';
boolean默认为false;
其他引用类型默认为null;
3、赋值
尽管你已经初始化好了数组,但是我们还是可以通过通过赋值的方式改变里面的数据。那么已经初始化好了数组,确定了数组的大小,我们该如何为没一个数组元素赋值呢?
数组中还有一个下标的概念,数组初始化的时候,会为每个元素分配一个下标,就和物品展示架上的编号一样,我们可以通过下标为每个元素重新赋值。
数组的下标从0开始,也就是说,第一个元素的下标为0,至于为什么要从0开始,我们后面再探讨一下,我们先看看赋值的例子:
int[] a = new int[3]; //定义一个长度为3的int类型数组,里面3个元素值已默认为0;a[0] = 4; //设置第一个元素值为4a[1] = 5; //设置第二个元素值为5a[2] = 7; //设置第三个元素值为7
为什么数组下标从0开始?
首先我们需要知道的是,程序是在电脑内存中运行的,当我们的程序开始处理数据时,会在内存中开辟一个小小的空间用来存储数据,在代码中也就是定义一个变量,如:
int a = 5;
定义一个int类型变量,值为五,而在内存中表示为,在内存中分配一小块内存,命名为a,里面存的值为5。
而我们是如通过a这样一个变量名得到内存中的值得呢?是因为每一小块内存都会有一个地址,就如同我们居住的家有一个地址一样,通过这个地址,通过这个地址,就能知道里面住的是谁。
二数组在内存中是以相连的位置存储的,方便对数组的操作,我们看一个例子:
int[] b = new int[3]; //定义一个int类型的数组,长度为3,里面的元素默认值为0
此时内存中是这样的:
数组中获得数据也是如此,如何知道b数组每个元素的数据呢?首先我们知道通过b这个数组在内存中的哪个位置,因为数组在内存中是一个相连的内存空间,所以b[0]的位置就等于b+0,而b[1]的位置就为b+1,b[2]=b+2,......以此类推,知道了数组所有元素的位置。而数组中第一个元素正好是在数组中开头的位置,用b[0]表示,则刚好是b表示的位置,而用1表示第一个元素的位置,则需要表示为a+1-1。
4、处理数据
在前面的内容中,我们已经定义了数组,初始化了数组,赋了值,那么如何使用数据呢,其实前面已经分析过,我们通过数组下标来为数组赋值,也通过数组下标得到每个数组元素的值。
int[] a = new int[3]; a[0] = 3; a[1] = 4; a[2] = 5; System.out.println(a[1]); //得到数组的第二个位置的值,将它输出//我们也可以通过循环遍历数组中每个元素for(int i = 0; i < a.length; i++){ System.out.println(a[i]); //循环打印出数组中每个元素}
在上面的例子中,循环打印的时候,我们看到,使用了a.length,通过 数组变量名.length 可以得到数组的长度,所以上面我们通过a.length得到数组的长度为3,循环3次,打印出数组的元素。
不应该访问不存在的下标
上面我们知道,我们控制数组是通过 变量名[下标] 来为变量赋值或者得到值,而如果访问超过了数组长度的下标时,则会出现异常。
int[] a = new int[2]; a[5] = 2; //a数组长度只有2个长度,而我们通过下标5访问第6个元素,实际a数组不存在这个位置,则会出现异常。
二维数组或多维数组
上面我们讲的都是在数组中存储一种基本数据类型或引用数据类型,而我们也可以在数组中存储数组:
上面我们在一个数组元素中存储了另外一个数组元素,里面那个数组存储了一种数据类型int的值,我们称这样的数组为二维数组。
二维数组的定义,初始化和赋值
数据类型[ ] [ ] 数组名 = new 数据类型[长度1][长度2] ;
长度1为外面一层数组的长度,长度2位里面一层的长度。
定义和初始化上图中的形式,我们可以这样:
int[][] a = new int[3][3]; a[0][0] = 2; //访问时前面一个方括号的数字表示外面一层数组的元素下标,第二个方括号的数字表示里面一层的数组的下标a[0][1] = 3; a[0][2] = 4; a[1][0] = 5; a[1][1] = 3; a[1][2] = 9; a[2][0] = 90; a[2][1] = 70; a[2][2] = 85;
我们也可以将二维数组定义成这样一种格式:
int[][] a = new int[3][]; //在定义初始化时设置外面一层长度为3,不设置里面一层的长度,
a[0] = new int[2]; //初始化里面每一层,设置长度a[1] = new int[1];
a[2] = new int[3];
a[0][0] = 3; //为每一个元素赋值a[0][1] = 4;
a[1][0] = 9;
a[2][0] = 90;
a[2][1] = 70;
a[2][2] = 85;
而三维数组就是数组里面的数组里面存放的是数组~~~~~以此类推可以有n多维数组,不过一般人使用的不多 ~~~^_^~~~
以上就是[Java入门笔记]Java语言基础(五):数组的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Kaedah menggunakan gelung foreach untuk mengalih keluar elemen pendua daripada tatasusunan PHP adalah seperti berikut: melintasi tatasusunan, dan jika elemen itu sudah wujud dan kedudukan semasa bukan kejadian pertama, padamkannya. Contohnya, jika terdapat rekod pendua dalam hasil pertanyaan pangkalan data, anda boleh menggunakan kaedah ini untuk mengalih keluarnya dan mendapatkan hasil tanpa rekod pendua.

Kaedah untuk tatasusunan penyalinan dalam dalam PHP termasuk: Pengekodan dan penyahkodan JSON menggunakan json_decode dan json_encode. Gunakan peta_tatasusunan dan klon untuk membuat salinan kunci dan nilai yang mendalam. Gunakan bersiri dan menyahsiri untuk bersiri dan menyahsiri.

Perbandingan prestasi kaedah membalik nilai kunci tatasusunan PHP menunjukkan bahawa fungsi array_flip() berprestasi lebih baik daripada gelung for dalam tatasusunan besar (lebih daripada 1 juta elemen) dan mengambil masa yang lebih singkat. Kaedah gelung untuk membalikkan nilai kunci secara manual mengambil masa yang agak lama.

Pengisihan tatasusunan berbilang dimensi boleh dibahagikan kepada pengisihan lajur tunggal dan pengisihan bersarang. Pengisihan lajur tunggal boleh menggunakan fungsi array_multisort() untuk mengisih mengikut lajur pengisihan bersarang memerlukan fungsi rekursif untuk merentasi tatasusunan dan mengisihnya. Kes praktikal termasuk pengisihan mengikut nama produk dan pengisihan kompaun mengikut volum jualan dan harga.

Fungsi array_group_by PHP boleh mengumpulkan elemen dalam tatasusunan berdasarkan kekunci atau fungsi penutupan, mengembalikan tatasusunan bersekutu dengan kuncinya ialah nama kumpulan dan nilainya ialah tatasusunan elemen kepunyaan kumpulan.

Amalan terbaik untuk melaksanakan salinan dalam tatasusunan dalam PHP ialah menggunakan json_decode(json_encode($arr)) untuk menukar tatasusunan kepada rentetan JSON dan kemudian menukarnya kembali kepada tatasusunan. Gunakan unserialize(serialize($arr)) untuk mensiri tatasusunan kepada rentetan dan kemudian menyahsirikannya kepada tatasusunan baharu. Gunakan RecursiveIteratorIterator untuk melintasi tatasusunan berbilang dimensi secara rekursif.

Fungsi array_group() PHP boleh digunakan untuk mengumpulkan tatasusunan dengan kunci yang ditentukan untuk mencari elemen pendua. Fungsi ini berfungsi melalui langkah berikut: Gunakan key_callback untuk menentukan kunci kumpulan. Secara pilihan, gunakan value_callback untuk menentukan nilai kumpulan. Kira elemen terkumpul dan kenal pasti pendua. Oleh itu, fungsi array_group() sangat berguna untuk mencari dan memproses elemen pendua.

Kerumitan algoritma penyahduplikasi tatasusunan PHP: array_unique(): O(n) array_flip()+array_keys(): O(n) foreach gelung: O(n^2)
