Rumah >Java >javaTutorial >Penjelasan terperinci tatasusunan dalam ringkasan Java
Artikel ini membawa anda pengetahuan yang berkaitan tentang java, yang terutamanya memperkenalkan isu berkaitan tatasusunan, termasuk peraturan penamaan, inferens jenis automatik, permulaan statik dan dinamik serta aspek lain tatasusunan berbilang dimensi Mari kita ambil lihat kaedah penulisan, kesilapan biasa dalam penulisan, dan lain-lain semoga ianya dapat membantu semua.
Pembelajaran yang disyorkan: "tutorial video java"
Indeks: peraturan penamaan, inferens jenis automatik, pemulaan dinamik statik, berbilang tatasusunan dimensi Cara penulisan lain, ralat biasa, subskrip tatasusunan di luar had, isu nilai lalai, isu panjang tatasusunan, penghuraian memori tatasusunan
1. Klasifikasi langkah : (Int berikut boleh digantikan dengan char String double, dll.)
①Kaedah menulis satu langkah:
int [] ids = new int []{1001,1002,1003};// 声明+初始化 int ids [] = new int []{1001,1002,1003}; // [ ]位置有两种放法 int ids [] = {1001,1002,1003};//自动类型推断,new int []可省 /**********错误示范***错误示范***错误示范***错误示范************/ int ids [] = new [] int{1001,1002,1003};//只有定义时的[]可以乱动
Inferens Jenis Automatik: hanya terpakai dalam penulisan satu langkah, anda boleh meninggalkan int baharu di sebelah kanan [ ]
②Tulisan dua langkah:
int ids [] ; //声明 ids = new int [ ] {1001,1002,1003} ; //初始化 /**********错误示范***错误示范***错误示范***错误示范************/ int ids []; ids [] = new int {1001,1002,1003};//分两步时,左边不加[] int ids []; ids = {1001,1002,1003};//分两步时,没有类型推断
2 Klasifikasi status: statik dan dinamik mesti memilih salah satu daripada dua, jangan tambah {} pada panjang, jangan tambah panjang pada {}<. .> Susunatur berbilang dimensi
两个[ ]均为空 String [] name = new String [] {"张三","李四"} ; //也可写为String [] name = {"张三","李四"};Masalah nilai lalai: dinamik [i][j] mempunyai nilai lalai, statik {} tidak mempunyai nilai lalai (penjelasan terperinci di penghujung)
后面的[ ]必须带数字规定长度,并且不能{}赋值 String [ ] name ; name = new String [2] ; //可以合为一步写String name [] = new String [2]; /**********错误示范****错误示范****错误示范********/ int ids [3][4] = XXXXXXXXX; int ids [3][ ] = XXXXXXXXX; int ids [ ][4] = XXXXXXXXX;Kes ralat:
int arr1 [][] =XXXXXXXXXXX; int [] arr2 []=XXXXXXXXXXX; int [][] arr3 =XXXXXXXXXXX; //都是正确写法 Java主张 int [] arr = new int []{}; 写法 //多维数组同理 int [] arr[][] =XXXXXXXX; int [][] arr[] =XXXXXXXX; 随便瞎基8放都是正确的 Java主张 int [][] arr = new int [][]{};写法 不过我个人不习惯。。。arr[1][1] tidak diberikan semasa nilai permulaan statik, jadi tiada ruang memori diperuntukkan Kompilasi boleh berlalu, tetapi ralat akan dilaporkan semasa mengakses. Julat tatasusunan permulaan statik ini dihadkan kepada arr[0][0] arr[0][1] hingga arr[1][0]
int arr0 [][] = {{1,2},{3,4},{5,6}};//正确:静态、自动类型推断 int arr1 [][] = new int [3][2]; int arr2 [][] = new int [3][ ];//正确:动态、可省列数[] int arr3 [][][] = new int [3][ ][ ];//正确:动态、可省后两个[]
Pemahaman memori mendalam: (penjelasan terperinci pada akhir ) Kod rentetan [][] = Rentetan baharu [3][ ];//Hanya baris ditakrifkan, bilangan lajur tidak diketahui System.out.println(cod[1][1] ]);//Lajur tidak ditakrifkan, tiada Berikan nilai lalai. Ralat berjalan
Kaedah penulisan yang betul: tambah satu langkah cod[1]=new String [234....]; >int arr0 [][] = new int [2][2];//动态初始化,分配内存 //数组内的4个成员全部默认为0,编译运行都不会报错 int arr0 [][] = new int [][]{ {1,2},{3} }; //静态初始化,编译能通过,arr0[1][1]没有默认值(未分配空间) //编译能通过,运行到arr[1][1]会报错 int arr0[][] = new int [3][] ; // 输出arr0[3][0] arr0[3][1] arr0[3][2] arr0[3][3]....... //都会报错
Kesilapan biasa dalam penulisan
① int [ ] arr1 = new int [ ] ; int [3] arr2 = new int [3] ; //Depan [ ] mesti kosong
Setelah tatasusunan ditentukan (diisytiharkan dimulakan), panjang ditetapkan dan panjang tatasusunan
tidak boleh ditukar Peruntukan memori adalah berterusan. Sistem mesti memperuntukkan ruang tetap untuk tatasusunan Jika memori diduduki oleh kandungan lain selepas 100 ruang, maka tatasusunan hanya boleh menggunakan 99 ruang pertama Jika panjang boleh diubah, maka arr[100] akan berubah kandungan lain untuk menjana pepijat
Contoh untuk menggambarkan masalah panjang tatasusunan:
Melintasi tatasusunan dua dimensi, dua lapisan untuk gelung:arr.panjang ialah panjang dimensi pertama
arr[i].panjang ialah panjang dimensi kedua baris ke-iarr[i ][j].panjang ialah panjang dimensi ketiga baris i dan lajur j
Analisis memori tatasusunan:Ambil tatasusunan dua dimensi sebagai contoh, dibahagikan kepada lapisan dalam dan luar. Bentuk arr[0] arr[1] ialah lapisan luar, dan ungkapan lengkap arr[1][2] ialah lapisan dalam
1. Untuk lapisan luar arr[1], ia ialah tatasusunan Satu dimensi terbahagi kepada dua situasi: "dimulakan" dan "tidak dimulakan": Contoh 1:public class Test2 { public static void main(String args[]) { int arr[][] = { {1,2,3},{4,5,6,7},{8,9},{10}}; for(int i = 0 ; i <arr.length ; i++){//arr.length for(int j = 0 ; j<arr[i].length ;j++){//arr[i].length System.out.println(arr[i][j]+" "); } System.out.println(); } //System.out.println(arr[2][2]);报错下标越界 } }
a [Menunjukkan bahawa lapisan dalam arr[1] ialah tatasusunan satu dimensi, I ialah huruf pertama int dan @ diikuti dengan alamat
Contoh 2:
Oleh kerana tatasusunan String ditakrifkan sepenuhnya, Oleh itu, ruang diperuntukkan dan arr1 menunjuk ke alamat arr1[0][0] (alamat pertama daripada keseluruhan tatasusunan)
两个[[表示里面有二维数组,java.lang.String;是包名
例3:
float arr1[][] = new float [3][5]; System.out.println(arr1[0]); //结果:[F@15db9742
外层元素初始化值为:地址值
内层元素初始化值为:与一维数组初始化情况相同
一维数组初始化:
1.数组元素是整形int long short : 0
2.数组元素是浮点型float double : 0.0
3.数组元素是boolean型:false
4.数组元素是引用类型 : null
5.数组元素是char型 :0 或 '\u0000' 而非‘0’
数字0,而不是字符0,对应的ASCII码不一样
'\u0000'是Unicode码第0000号位,是一个空格符,但是不是键盘上的空格
验证如下:
經典例題:
解:b e可以,acdf都不行
推荐学习:《java视频教程》
Atas ialah kandungan terperinci Penjelasan terperinci tatasusunan dalam ringkasan Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!