Heim > Java > javaLernprogramm > Hauptteil

Detaillierte Erläuterung der Arrays in der Java-Zusammenfassung

WBOY
Freigeben: 2022-04-25 16:08:22
nach vorne
1994 Leute haben es durchsucht

Dieser Artikel vermittelt Ihnen relevantes Wissen über Java, in dem hauptsächlich Probleme im Zusammenhang mit Arrays vorgestellt werden, darunter Benennungsregeln, automatische Typinferenz, statische und dynamische Initialisierung, andere Möglichkeiten zum Schreiben mehrdimensionaler Arrays, häufige Fehler usw. Nehmen wir ein Schauen Sie sich den Inhalt unten an. Ich hoffe, er ist für alle hilfreich.

Detaillierte Erläuterung der Arrays in der Java-Zusammenfassung

Empfohlenes Lernen: „Java-Video-Tutorial

Index: Benennungsregeln, automatische Typinferenz, statische und dynamische Initialisierung, andere Möglichkeiten zum Schreiben mehrdimensionaler Arrays, häufige falsche Schreibweisen, Array-Indizes aus Grenzen, Standardwertprobleme, Array-Längenproblem, Array-Speicheranalyse

Richtiges Schreiben:

1. Schrittklassifizierung : (Das folgende int kann durch char String double usw. ersetzt werden)
① Eins -Schritt-Schreiben:

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};//只有定义时的[]可以乱动
Nach dem Login kopieren

Automatische Typinferenz: Nur anwendbar beim Ein-Schritt-Schreiben, Sie können = new int [ ] rechts [ ]

weglassen ② Zwei-Schritt-Schreiben:

int ids [] ;   //声明

ids = new int [ ] {1001,1002,1003} ;   //初始化

/**********错误示范***错误示范***错误示范***错误示范************/

int ids [];
ids [] = new int {1001,1002,1003};//分两步时,左边不加[]


int ids [];
ids = {1001,1002,1003};//分两步时,没有类型推断
Nach dem Login kopieren

2. Statusklassifizierung: Statisch und dynamisch müssen eine der beiden auswählen und dürfen {} nicht zur Länge hinzufügen. Geben Sie {} ohne Länge an

两个[ ]均为空
String [] name = new String [] {"张三","李四"} ;
//也可写为String [] name = {"张三","李四"};
Nach dem Login kopieren

mehrdimensionales Array RrreerReee

Standardwerte: Dynamic [i] [j] hat einen Standardwert, static {} hat keinen Standardwert (detaillierte Erklärung am Ende)

后面的[ ]必须带数字规定长度,并且不能{}赋值

String [ ] name ;
name = new String [2] ;
//可以合为一步写String name [] = new String [2];

/**********错误示范****错误示范****错误示范********/
int ids [3][4] = XXXXXXXXX;
int ids [3][ ] = XXXXXXXXX;
int ids [ ][4] = XXXXXXXXX;
Nach dem Login kopieren

Fehlerfall :

Array-Subskript außerhalb der Grenzen:

arr[1][1] existiert während der statischen Initialisierung nicht. Geben Sie einen Wert an, damit die Kompilierung erfolgreich sein kann, aber ein Fehler gemeldet wird Zugriff. Der Array-Bereich dieser statischen Initialisierung ist auf arr[0][0] arr[0][1] bis arr[1][0] beschränktDetailliertes Speicherverständnis: (ausführliche Erklärung am Ende)

String cod [][] = new String [3][ ];//Nur Zeilen sind definiert, die Anzahl der Spalten ist unbekannt

System.out.println(cod[1][1]);//Spalten sind nicht definiert, Es werden keine Standardwerte angegeben. Ausführungsfehler

Richtige Schreibweise: einen Schritt hinzufügen cod[1]=new String [234....]; Spaltenspeicher zuweisen, mit dem Standardwert null

Häufige falsche Schreibweise


① int [ ] arr1 = new int [ ];

③ int [ ] arr3 = new int [5] {1,2,3,4,5}; //Dynamic kann nicht {}

Sobald das Array ist bestimmt (Deklaration + Initialisierung), die Länge ist fest und kann nicht geändert werden

Die Speicherzuordnung des Arrays ist fortlaufend, das System muss dem Array einen festen Platz zuweisen Array kann nur die ersten 99 Leerzeichen verwenden, dann ändert arr[100] andere Inhalte und erzeugt einen Fehler

Ein Beispiel veranschaulicht das Array-Längenproblem:

Zweidimensionale Array-Durchquerung, zweischichtige for-Schleife :

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 [][]{};写法

不过我个人不习惯。。。
Nach dem Login kopieren
Laufendes Ergebnis:

arr.length ist die Länge der ersten Dimensionarr[i]. length ist die zweite Dimension, Länge der i-ten Reihe

arr[i][j] .length ist die Länge der dritten Dimension der i-ten Zeile und der j-Spalte. Array-Speicheranalyse:

Nehmen Sie als Beispiel ein zweidimensionales Array, das in innere und äußere Schichten unterteilt ist. Die äußere Schicht hat die Form arr[0] arr[1], und die innere Schicht ist der vollständige Ausdruck von arr[1][2]. Für eine äußere Schicht arr[1] ist es ein ein- dimensionales Array. Es wird in zwei Situationen unterteilt: „initialisiert“ und „nicht initialisiert“:

Beispiel 1:

int arr0 [][] = {{1,2},{3,4},{5,6}};//正确:静态、自动类型推断
int arr1 [][] = new int [3][2];
int arr2 [][] = new int [3][ ];//正确:动态、可省列数[]
int arr3 [][][] = new int [3][ ][ ];//正确:动态、可省后两个[]
Nach dem Login kopieren

Zu diesem Zeitpunkt ist nur die Anzahl der äußeren Zeilen bekannt, aber die innere Ebene ist nicht initialisiert und es gibt keine Adresse wird zugewiesen, daher ist das Ergebnis null Die Ebene von arr[1] ist ein eindimensionales Array. I ist der erste Buchstabe von int, und auf @ folgt die Adresse. Beispiel 2:

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].......
//都会报错
Nach dem Login kopieren
. Da das String-Array vollständig definiert ist, wird Platz zugewiesen und arr1 zeigt an die Adresse von arr1[0][0] (die erste Adresse des gesamten Arrays)

两个[[表示里面有二维数组,java.lang.String;是包名

例3:

float arr1[][] = new float  [3][5];
System.out.println(arr1[0]);
//结果:[F@15db9742
Nach dem Login kopieren

外层元素初始化值为:地址值

内层元素初始化值为:与一维数组初始化情况相同

一维数组初始化:

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视频教程

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Arrays in der Java-Zusammenfassung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!