Inhaltsverzeichnis
2. Arrays und Container
3. Erstellung und Initialisierung von Arrays
4. Arrays und Generics
Heim Java javaLernprogramm Zusammenfassung der Beispiele für Java-Array-Code

Zusammenfassung der Beispiele für Java-Array-Code

Mar 14, 2017 am 11:54 AM


Zusammenfassung:

Dieser Artikel erläutert hauptsächlich das Wissen über Array in Java Arrays werden unter fünf Aspekten ausführlich besprochen: Arrays und Container, Array-Erstellung und -Initialisierung, Arrays und Generika, Arrays und VariablenparameterListen sowie die praktischen Funktionen der Arrays-Werkzeugklassen Beschreibung und Zusammenfassung.


1. Wichtige PunkteÜbersicht

  • Arrays und Container

  • Erstellung und Erstellung Initialisierung von Arrays

  • Arrays und Generika

  • Arrays und Variablenparameterlisten

  • Arrays-Tool-Klasse Zusammenfassung praktischer Funktionen


2. Arrays und Container

In Java sind sowohl Arrays als auch Container Sie kann Objekte enthalten. Was ist also der Unterschied zwischen Arrays und Containern? Wenn wir Objekte speichern müssen, unter welchen Umständen sollten wir Arrays und unter welchen Umständen Containern Vorrang einräumen?


In der ersten Version von Java waren Arrays mit fester Größe unbedingt erforderlich, nicht nur, weil Java-Designer sich dafür entschieden, primitive Typen in Java einzubeziehen und einige leistungsbasierte Überlegungen anzustellen, sondern auch wegen der ersten Version bietet nur sehr wenig Unterstützung für Container. Daher ist es in frühen Versionen von Java immer sinnvoll, sich für die Einbeziehung von Arrays zu entscheiden, insbesondere im Hinblick auf die folgenden drei Aspekte:

  • Effizienz

    In Java, Arrays sind die effizienteste Möglichkeit, ObjektsequenzenReferenzen zu speichern und wahlfrei darauf zuzugreifen. Ein Array ist eine einfache lineare Sequenz, die den Zugriff auf Elemente sehr schnell ermöglicht. Der Preis für diese Geschwindigkeit besteht jedoch darin, dass die Größe des Array-Objekts fest ist und während seiner Lebensdauer nicht geändert werden kann. Da ArrayList die automatische Zuweisung von Speicherplatz realisieren kann und flexibler ist, sollten wir normalerweise ArrayList dem Array vorziehen, aber diese Flexibilität bringt einen Mehraufwand mit sich. Daher ist ArrayList viel weniger effizient als Arrays.

  • Typ

    Vor JDK 1.5 führte Java keine Generika ein. Daher behandeln Containerklassen vor Generika Objekte bei der Handhabung so, als hätten sie keinen bestimmten Typ, d. h. diese Objekte werden als Objekt behandelt. Der Grund, warum Arrays besser sind als Container vor Generika, liegt darin, dass Sie ein Array erstellen können, das einen bestimmten Typ enthält. Dies bedeutet, dass Sie durch die Typprüfung zur Kompilierungszeit verhindern können, dass falsche Typen eingefügt und ungeeignete Typen extrahiert werden. Natürlich verhindert Java, dass Sie sowohl zur Kompilierungszeit als auch zur Laufzeit unangemessene Nachrichten an Objekte senden. Daher ist es nicht so, dass diese Methode weniger sicher ist, aber sie ist eleganter, wenn beim Kompilieren auf Fehler hingewiesen werden kann.

  • Die Möglichkeit, Basistypen zu speichern

     Arrays können Basistypen enthalten, Container vor Generika jedoch nicht.

    Nach JDK 1.5 führte Java Generika und automatische Verpackungsmechanismen ein (Generika können die Produktion typsicherer Container sicherstellen, und automatische Verpackungsmechanismen ermöglichen es Containern, Basistypen aufzunehmen). was dazu führt, dass die heutigen Container Arrays in jeder Hinsicht außer der Leistung in den Schatten stellen. Darüber hinaus stellen Generika eine große Bedrohung für Arrays dar, und normalerweise lassen sich beide nicht gut kombinieren (Arrays mit parametrisierten Typen können nicht instanziiert werden).

    Wenn wir daher mit neueren Java-Versionen programmieren, sollte Container gegenüber Arrays bevorzugen. Wir sollten unser Programm so umgestalten, dass es nur dann Arrays verwendet, wenn nachgewiesen wurde, dass die Leistung ein Problem darstellt und der Wechsel zu Arrays die Leistung verbessert.


3. Erstellung und Initialisierung von Arrays

1 Array-Grundlagen

  • Die Array-ID ist nur ein Referenz: Dieses Objekt wird zum Speichern von Referenzen auf andere Objekte oder Werte von Basistypen verwendet.

  • Objektarrays speichern Referenzen und Basistypen Arrays direkt Basistypwerte speichern;

  • „[ ]“-Syntax ist die einzige Möglichkeit, auf Array-Objekte zuzugreifen


2. Erstellen und Initialisieren

  • wird implizit als Teil der Array-Initialisierung erstellt

String[] strs = { ... };    
// 创建方式 1 --- 花括号内对象的个数就是数组大小System.out.println(strs.length);    
// 输出 0
Nach dem Login kopieren
String[] strs = new String[5];  
//创建方式 2String[] ss = new String[]{ ... };   
//创建方式 3
Nach dem Login kopieren

3. Mehrdimensionales Array

Das Wesentliche eines mehrdimensionalen Arrays: Die Elemente des Arrays sind immer noch Arrays

// 创建方式 1int[][] a = { 
{ 1, 2, 3, }, 
{ 4, 5, 6, }, 
}; 

// 创建方式 2int[][][] a = new int[2][2][4];//粗糙数组:每个向量具有任意长度Random rand = new Random(47); 

// 3-D array with varied-length vectors: int[][][] a = new int[rand.nextInt(7)][][]; 

for(int i = 0; i < a.length; i++) { 
    a[i] = new int[rand.nextInt(5)][]; 
    for(int j = 0; j < a[i].length; j++) 
        a[i][j] = new int[rand.nextInt(5)]; 
}
Nach dem Login kopieren

4. Arrays und Generics

  • Arrays und Generics können nicht gut kombiniert werden, das heißt, sie können nicht gut kombiniert werden instanziiert mit Parametrisierung Array vom Typ

T[] first = new T[3];    
// ERROR  A<String>[] arrays = new A<String>[4];    
// ERROR: Cannot create a generic array of A<String>
Nach dem Login kopieren
    kann eine generische Array-Referenz erstellen;
A<String>[] arrays;    
// OK
Nach dem Login kopieren
Arrays sind kovariant
  • Kurz gesagt:

  • Generische Container sind immer eine bessere Wahl als generische Arrays.
Object[] objs = new String[3];      
// OK
Nach dem Login kopieren

5. Arrays und variable ParametertypenDas Konzept der variablen Parametertypen


Java SE5 fügt variable Parametertypen hinzu (Variable Argument Type), in der Form „Type... args“,

kann nur als Methodenparameter

verwendet werden.

Die Liste der variablen Parameter eignet sich für Situationen, in denen die Anzahl der Parameter ungewiss ist, der Typ jedoch sicher ist (Java behandelt variable Parameter als Array). Besonderes Augenmerk sollte darauf gelegt werden, dass die Liste der variablen Parameter das letzte Element sein muss (d. h. es wird höchstens ein variabler Parameter unterstützt). Wenn mehr als eine Variablenparameterliste vorhanden ist, darf eine der Variablen nicht das letzte Element sein, sodass nur ein Variablenparameter unterstützt wird. Da die Anzahl der Parameter in der Liste der variablen Parameter ungewiss ist, kann Java nicht unterscheiden, ob der übergebene Parameter zum vorherigen variablen Parameter oder zum folgenden Parameter gehört, wenn dahinter Parameter desselben Typs stehen, und kann daher nur den variablen Parameter platzieren am Ende ein Punkt. Die variable Parameterliste hat die folgenden Eigenschaften:

// 代码示例public class TestVarArgus {  
    public static void dealArray(int... intArray){  
        for (int i : intArray)  
            System.out.print(i +" ");  

        System.out.println();  
    }  

    public static void main(String args[]){  
        dealArray();  
        dealArray(1);  
        dealArray(1, 2, 3);  
    }  
}/* Output:

        1   
        1 2 3   
 *///:~
Nach dem Login kopieren

kann nur am Ende der Methodenparameterliste erscheinen ;
  • befindet sich im Typ Variable und Variablenname kann mit oder ohne Leerzeichen sein;

    Beim Aufruf der Methode mit variablen Parametern kann der Compiler will Der variable Parameter erstellt implizit ein Array, sodass wir auf die Liste der variablen Parameter in Form eines Arrays im Methodenkörper zugreifen können
  • (der Compiler behandelt den variablen Parameter als Array)

    . 2. Kompatibilität von variablen Parametertypen und Arrays


Der Compiler betrachtet den Array-Typ und den variablen Parametertyp als gleich, d >
  • Variable Parameter sind mit Array-Typ-Parametern kompatibel, Array-Typ-Parameter sind jedoch nicht mit variablen Parametern kompatibel

  •  
Tatsächlich benötigen Sie zum Beispiel Code 2 nur eine Methode, die als DealArray(int, int, int) definiert ist, oder eine Methode, die als DealArray(int...) definiert ist. Daher ist es natürlich unmöglich, die Methode dealArray(int[]) mit Array-Typparametern abzugleichen.
public class TestVarArgus {  
    public static void dealArray(int... intArray){  
        for (int i : intArray)  
            System.out.print(i +" ");  

        System.out.println();  
    }  

    //ERROR : Duplicate method dealArray(int[]) in type TestVarArgus 
    public static void dealArray(int[] intArray){    
        for (int i : intArray)  
            System.out.print(i +" ");  

        System.out.println();  
    }  

    public static void main(String args[]){  
        dealArray();   
        dealArray(1);  
        dealArray(1, 2, 3);  
    }  
}
Nach dem Login kopieren

  • Parameter-Matching-Prinzip: Wenn es mit Methoden fester Länge übereinstimmen kann, gibt

    <🎜 Priorität >
  • passend zu dieser Methode; Der Parameter
kann auch in einen variablen Parametertyp umgeschrieben werden: public static void main(String... args) .
// 代码示例 1 : 给参数为可变参数类型的方法传递数组public class TestVarArgus {  
    public static void dealArray(int... intArray){  
        for (int i : intArray)  
            System.out.print(i +" ");  

        System.out.println();  
    }  

    public static void main(String args[]){  
        int[] intArray = {1, 2, 3};  

        dealArray(intArray);  // OK
    }  
}
Nach dem Login kopieren
// 代码示例 2 : 给参数为数组类型的方法传递可变参数public class TestVarArgus {  
    public static void dealArray(int[] intArray){  
        for (int i : intArray)  
            System.out.print(i +" ");  

        System.out.println();  
    }  

    public static void main(String args[]){  
        dealArray(1, 2, 3);     // ERROR
    }  
}
Nach dem Login kopieren


  • Praktische Funktionen der Arrays-ToolklasseArray kopieren

    FunctionIntroductionNote
    System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束若复制对象数组,那么只是复制了对象的引用,而不是对象本身的拷贝(浅复制);该方法不会执行自动包装和自动拆包,所以两个数组必须具有相同的确切类型;须明确自行新建立一个数组对象,作为副本
    copyOf(T[] original, int newLength)复制指定的数组,截取或用 null 填充底层调用的还是 System.arraycopy;返回一个新的数组对象,若新数组的长度超过原数组的长度,则保留数组默认值

     
    注意:

     对于以上两个方法:

    • 若复制对象数组,那么只是复制了对象的引用,而不是对象本身的拷贝;

    • 这两个方法不会执行自动包装和自动拆包,所以两个数组必须具有相同的确切类型。


    2、数组的字符串方式表示

    方法: Arrays.toString(Object[] a) / Arrays.deepToString(Object[] a)

    作用: 返回指定数组内容的字符串表示形式:前者适用于一维数组,或者适用于多维数组


    3、数组的比较

    方法: Arrays.equals(Object[] a, Object[] a2) / deepEquals(Object[] a1, Object[] a2) (多维)

    作用: 比较两个数组:元素类型相同,元素个数相等,对应位置的元素相同;

    注意:

    • 通过对每个元素使用 equals() 作比较来判断;

    • 对于基本类型,使用的是基本类型的包装器类的 equals() 方法(对于 int 类型使用 Integer.equals() 作比较);

    • 使用 equals() 方法比较原则:是不是同一个对象,是不是同一个类型,是不是具有相同的内容。

    int[] a1 = new int[10]; 
    int[] a2 = new int[10]; 
    Arrays.fill(a1, 47); 
    Arrays.fill(a2, 47); 
    print(Arrays.equals(a1, a2));    //true
    Nach dem Login kopieren

    4、数组的排序

      使用内置的排序方法,就可以对任意的基本类型数组排序;也可以对任意的对象数组进行排序,只要该对象实现了 Comparable 接口或具有相关联的 Comparator (独立的实现该接口的类)。

    方法: Arrays.sort(Object[] a) / Arrays.sort(Object[] a, int fromIndex, int toIndex)
       Arrays.sort(T[] a, Comparatorsuper T> c) / Arrays.sort(T[] a, int fromIndex, int toIndex, Comparator c)

    作用: 对数组内元素进行升序排序 (默认)

    String[] sa = Generated.array(new String[20], new RandomGenerator.String(5)); 
    
    // 利用 String 内置的比较器(已实现 Comparable 接口):字典序(大写字母开头的词都放在前面输出,之后才是小写字母开头的词)Arrays.sort(sa);   
    // ... ,WHkjU, YNzbr, bkIna, cQrGs, ....
    // 利用 Comparator 比较 : Collections.reverseOrder() : 现有顺序的逆序Arrays.sort(sa, Collections.reverseOrder()); 
    
    // 利用 Comparator 比较 : String.CASE_INSENSITIVE_ORDER : 忽略大小写将单词一起进行排序Arrays.sort(sa, String.CASE_INSENSITIVE_ORDER);
    Nach dem Login kopieren

      Java 标准类库中的排序算法针对正排序的特殊类型进行了优化 ———— 针对基本类型设计的“快排” 和 针对对象设计的“稳定归并排序”。所以,无需担心排序的性能,除非你可以证明排序部分的确是程序效率的瓶颈。


    5、在已排序的数组中查找

      若数组已经 排好序,就可以使用该方法执行快速查找;若对未排序的数组使用该方法,将产生不可预料的结果。

    方法: binarySearch(Object[] a, Object key) / binarySearch(T[] a, T key, Comparator c)

    作用: 使用 二分搜索来搜索指定数组,以获得指定对象。在进行此调用之前,必须根据元素的自然顺序对数组进升序排序(通过 sort(Object[]) 方法); 使用二分搜索法来搜索指定数组,以获得指定对象。在进行此调用之前,必须根据指定的比较器(通过 sort(T[], Comparator) 方法)对数组进行多态升序排序

    注意:


    6. Array füllen

    Methode: fill(Object[] a, Object val)
    Funktion: kann jede Position nur mit demselben Wert füllen, und bei Objekten wird die Referenz desselben Objekts kopiert, um

    7. Konvertierung zwischen Arrays und Containern

    Methode:

    asList(T… a) Funktion:
    Gibt ein zurück Liste mit fester Größe, die vom angegebenen Array unterstützt wird Hinweis:

      Die resultierende Liste hat eine feste Größe, weil
    • Die zugrunde liegende Darstellung ist das Array und kann daher nicht in der Größe geändert werden. Daher löst der Aufruf der Methode „add/remove“ eine java.lang.UnsupportedOperationException (optionale Operation) aus.

    • Bei
    • Arrays.asList() geht es also wirklich darum: das Ergebnis als Konstruktorargument an eine beliebige Sammlung zu übergeben (oder addAll Methode, Collections.addAll statische Methode), die einen dynamischen Container generieren kann.

    • 7. Zusammenfassung

    Grundsätze:

    • Verwenden Sie lieber Container anstelle von Arrays.

    • Verwenden Sie bei der Erstellung Arrays und variable Parameter Methodenparameter: Durch die Priorisierung der Verwendung variabler Parameter wird das Programm stärker entkoppelt. Erhalten Sie das Doppelte des Ergebnisses bei halbem Programmieraufwand.

    Das obige ist der detaillierte Inhalt vonZusammenfassung der Beispiele für Java-Array-Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Perfekte Zahl in Java Perfekte Zahl in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Zufallszahlengenerator in Java Zufallszahlengenerator in Java Aug 30, 2024 pm 04:27 PM

Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Smith-Nummer in Java Smith-Nummer in Java Aug 30, 2024 pm 04:28 PM

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

Fragen zum Java Spring-Interview Fragen zum Java Spring-Interview Aug 30, 2024 pm 04:29 PM

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Brechen oder aus Java 8 Stream foreach zurückkehren? Brechen oder aus Java 8 Stream foreach zurückkehren? Feb 07, 2025 pm 12:09 PM

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist

Zeitstempel für Datum in Java Zeitstempel für Datum in Java Aug 30, 2024 pm 04:28 PM

Anleitung zum TimeStamp to Date in Java. Hier diskutieren wir auch die Einführung und wie man Zeitstempel in Java in ein Datum konvertiert, zusammen mit Beispielen.

Java -Programm, um das Kapselvolumen zu finden Java -Programm, um das Kapselvolumen zu finden Feb 07, 2025 am 11:37 AM

Kapseln sind dreidimensionale geometrische Figuren, die aus einem Zylinder und einer Hemisphäre an beiden Enden bestehen. Das Volumen der Kapsel kann berechnet werden, indem das Volumen des Zylinders und das Volumen der Hemisphäre an beiden Enden hinzugefügt werden. In diesem Tutorial wird erörtert, wie das Volumen einer bestimmten Kapsel in Java mit verschiedenen Methoden berechnet wird. Kapselvolumenformel Die Formel für das Kapselvolumen lautet wie folgt: Kapselvolumen = zylindrisches Volumenvolumen Zwei Hemisphäre Volumen In, R: Der Radius der Hemisphäre. H: Die Höhe des Zylinders (ohne die Hemisphäre). Beispiel 1 eingeben Radius = 5 Einheiten Höhe = 10 Einheiten Ausgabe Volumen = 1570,8 Kubikeinheiten erklären Berechnen Sie das Volumen mithilfe der Formel: Volumen = π × R2 × H (4

See all articles