JavaRush /Java Blog /Random-IT /Pausa caffè #154. Tre tipi di loop in Java. JDK 19: nuove...

Pausa caffè #154. Tre tipi di loop in Java. JDK 19: nuove funzionalità Java 19 in arrivo a settembre

Pubblicato nel gruppo Random-IT

Tre tipi di loop in Java

Fonte: Medium Dopo aver letto questo post, imparerai diversi modi di eseguire il looping in Java. Pausa caffè #154.  Tre tipi di loop in Java.  JDK 19: nuove funzionalità Java 19 in arrivo a settembre - 1Un Loop è progettato per eseguire un blocco di codice finché una condizione non diventa vera. In Java esistono tre tipi di loop:
  • Mentre
  • fare durante
  • per

Mentre il ciclo

Il ciclo while si ripete finché la condizione booleana specificata non risulta vera. Come mostrato nel diagramma seguente, l'istruzione verrà eseguita finché il test della condizione non restituisce vero. Pausa caffè #154.  Tre tipi di loop in Java.  JDK 19: nuove funzionalità Java 19 in arrivo a settembre - 2

Sintassi


while (condition true) {
       // Блок codeа
}

Esempio

Qui il ciclo while verrà eseguito finché la condizione non sarà vera per x inferiore a 3.

public class WhileLoop {
     static int x = 1;
     public static void main(String[] args) {
         while(x < 3) {
             System.out.println("x = "+x);
             x++;
         }
     }
}
Conclusione:
x = 1 x = 2

ciclo "fai-mentre".

Un ciclo do- while è simile a un ciclo while con una piccola differenza. Il ciclo do- while viene sempre eseguito una volta prima di testare la condizione. Pausa caffè #154.  Tre tipi di loop in Java.  JDK 19: nuove funzionalità Java 19 in arrivo a settembre - 3

Sintassi


do {
     //  Блок codeа
   } while(condition);

Esempio

In questo esempio, puoi vedere che l'istruzione do o il blocco di codice viene sempre eseguito una volta prima di verificare se la condizione è vera o falsa.

static int x = 5;
        public static void main(String[] args) {
            do {
                System.out.println("x = "+x);
                x++;
            } while(x < 3);
        }
Conclusione
x = 5

per ciclo

Il ciclo for è molto diverso dai cicli while e do- while. In una riga di istruzione definiamo inizializzazione, condizione (vero o falso), incremento/decremento. Pausa caffè #154.  Tre tipi di loop in Java.  JDK 19: nuove funzionalità Java 19 in arrivo a settembre - 4

Sintassi


For (initialization; condition; increment/decrement) {
    // Блок codeа
}

Esempio


public static void main(String[] args) {
     for(int i = 0 ; i < 2 ; i++) {
         System.out.println("i = " + i);
     }
}
Conclusione:
io=0 io=1
Inizializzazione: int i = 0 è la condizione di inizializzazione del ciclo. Condizione: verifica se la condizione per l'esecuzione del blocco o del codice all'interno del ciclo for è vera. Se la condizione è falsa, il ciclo terminerà. Incremento/decremento: aggiorna la variabile per l'iterazione successiva.

Esteso per loop (for-each)

Esiste un'altra versione del ciclo for che è più compatta e leggibile di un semplice ciclo for. Si chiama ciclo for esteso (o ciclo for-each) e viene utilizzato per scorrere raccolte e array. È disponibile per qualsiasi oggetto che implementa l'interfaccia Iterable.

Esempio


class Main
{
    public static void main(String[] args)
    {
        int[] A = { 1, 2, 3, 4, 5 };
 
        for (int i: A) {
            System.out.println(i);
        }
    }
}
Conclusione:
1 2 3 4 5

JDK 19: nuove funzionalità Java 19 in arrivo a settembre

Fonte: Infoworld Ecco un elenco delle nuove funzionalità che appariranno nella prossima versione di JDK. La sua uscita è prevista per il 20 settembre 2022. Java Development Kit 19, una versione di supporto a breve termine prevista per settembre, ha raggiunto la fase di release candidate. Ci sono sette funzionalità a cui prestare attenzione: parallelismo strutturato, modelli di record, anteprima di API esterne e di memoria e supporto per l'architettura del set di istruzioni Linux/RISC-V open source (ISA). Poiché le nuove funzionalità sono già congelate per JDK 19, altre funzionalità pianificate, come generici e oggetti di valore, verranno rinviate a una versione successiva della piattaforma. In genere una nuova versione di Java viene rilasciata ogni sei mesi. La release candidate JDK 19 è stata pubblicata l'11 agosto, dopo due rilasci graduali a giugno e luglio. La seconda release candidate è prevista per il 25 agosto. Le prime build di JDK 19 possono essere scaricate da jdk.java.net/19 . Le funzionalità di JDK 19 includono:
  • Parallelismo strutturato (durante la fase di incubazione). È progettato per semplificare la programmazione multi-thread utilizzando l'API di concorrenza strutturata. Questo parallelismo tratta più attività in esecuzione su thread diversi come una singola unità di lavoro. Di conseguenza, ciò semplificherà la gestione e la cancellazione degli errori e anche l'affidabilità sarà migliorata.

  • Anteprima dei modelli di record (per l'analisi dei valori dei record). I modelli di record e i modelli di tipo possono ora essere nidificati, fornendo una forma dichiarativa, potente e componibile di navigazione e manipolazione dei dati. La nuova funzionalità include l'estensione della corrispondenza dei modelli per esprimere query di dati composte più complesse senza modificare la sintassi o la semantica dei modelli di tipo.

    Questa innovazione si basa sul pattern matching, ad esempio, introdotto in JDK 16 nel marzo 2021. Le versioni future potrebbero richiedere l'estensione dei modelli di record con funzionalità quali modelli di array e modelli vararg.

    I modelli di post fanno parte del progetto Amber , che mira a esplorare e sviluppare piccole funzionalità Java orientate alle prestazioni.

  • Versioni di anteprima delle funzioni API esterne e di memoria . La nuova versione introdurrà un'API che consentirà ai programmi Java di interagire con codice e dati al di fuori del runtime Java. Chiamando in modo efficiente funzioni di terze parti (ovvero codice esterno alla JVM) e accedendo in modo sicuro alla memoria esterna (memoria non gestita dalla JVM), l'API consentirà ai programmi Java di chiamare librerie native ed elaborare dati nativi senza gli inconvenienti di Java. Interfaccia nativa (JNI).

    L'API esterna e quella di memoria combinano due API di incubazione precedenti: l'API di accesso alla memoria esterna e l'API del linker esterno. La funzione esterna e l'API di memoria sono state precedentemente incubate in JDK 17 e reincubate in JDK 18.

  • Anteprima dei thread virtuali. Questa funzionalità introduce thread leggeri che riducono notevolmente lo sforzo di scrittura, manutenzione e monitoraggio di applicazioni parallele ad alte prestazioni. Lo scopo dell'innovazione è fornire la possibilità di scalare le applicazioni server scritte in un semplice stile thread per richiesta. La funzionalità prende di mira il codice che utilizza l'API Thread java.lang per inserire thread virtuali con modifiche minime e per risolvere problemi, eseguire il debug e profilare i thread virtuali utilizzando gli strumenti JDK esistenti.

  • Terza anteprima della corrispondenza dei modelli per espressioni e istruzioni switch. Estende la corrispondenza dei modelli a switch, che consentirà di testare un'espressione rispetto a una serie di modelli, ciascuno con un effetto specifico, in modo che le query complesse incentrate sui dati possano essere espresse in modo conciso e sicuro.

    Questa funzionalità era stata precedentemente presentata in anteprima in JDK 17 e JDK 18. La terza anteprima aggiunge miglioramenti, inclusa la sostituzione dei modelli protected When con clausole nei blocchi switch. Inoltre, la semantica di runtime del modello di commutazione quando il valore dell'espressione del selettore è null ora supporta la semantica di commutazione legacy.

    L'innovazione amplierà l'espressività e l'applicabilità delle espressioni e degli operatori di commutazione consentendo la comparsa di modelli nelle etichette delle maiuscole. Darà inoltre agli sviluppatori la possibilità di allentare l'animosità storica nei confronti dei null e degli switch quando necessario, migliorerà la sicurezza delle istruzioni switch e garantirà che le istruzioni switch e le istruzioni esistenti continuino a essere compilate senza modifiche ed eseguite con la stessa semantica.

  • Quarta incubazione del vettore API . Esprimerà calcoli vettoriali che vengono compilati in modo affidabile in fase di esecuzione in istruzioni vettoriali ottimali su architetture di processori supportate. Ciò fornirà prestazioni migliori rispetto ai calcoli scalari equivalenti. Gli sviluppatori che utilizzano l'API acquisiscono la capacità di scrivere algoritmi vettoriali complessi in Java utilizzando l'autovettoriatore di HotSpot, ma con un modello personalizzato che rende la vettorizzazione più prevedibile e affidabile. L'API Vector è stata precedentemente incubata in JDK 16, JDK 17 e JDK 19.

    L'API Vector estenderà le operazioni lineari integrali bit per bit, comprese operazioni come il conteggio del numero di bit, l'inversione dell'ordine dei bit e la compressione e l'espansione dei bit.

  • Il port Linux/RISC-V Java otterrà il supporto del set di istruzioni hardware già supportato da un'ampia gamma di toolkit linguistici. Il port Linux/RISC-V ora supporterà la configurazione RV64GV RISC-V, un ISA a 64 bit per uso generale che include istruzioni vettoriali.

    Il port supporterà anche le seguenti opzioni della macchina virtuale HotSpot: interprete di modelli, compilatore C1 JIT (client), compilatore C2 JIT (server) e tutti i principali garbage collector attuali, inclusi ZGC e Shenandoah.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION