[El camino para convertirse en rey de Java] Capítulo 8: Java SE (Definición y uso de matrices 1)

24c9839dbc914e478fafb4ffe1094f4d.gif

 

contenido

 

Primero, el uso básico de matrices

1. ¿Qué es una matriz?

2. Definir la matriz 

3. El uso de arreglos

Imprime la matriz: 

En segundo lugar, la matriz como parámetro del método.

1. Uso básico

3. Preguntas de práctica de matriz

1. Intercambiar los valores de dos variables

2. Escriba un método que tome cada elemento de la matriz * 2 

3. Simula la función tostring

4. Encuentra el elemento más grande en la matriz 

5. Encuentra el elemento especificado en la matriz (búsqueda secuencial) 

6. Encuentra el elemento especificado en la matriz (búsqueda binaria) 

 Resumir:

Estoy con usted.


 

Primero, el uso básico de matrices

1. ¿Qué es una matriz?

Matriz: una colección que almacena un conjunto de datos del mismo tipo de datos.

2. Definir la matriz 

int[] : matriz de tipo int 

double[] : matriz de tipo doble

Las variables se pueden definir por tipos, tales como:

int[] array, array es una variable de este tipo, que es una variable que almacena un conjunto de los mismos datos.

Hay tres formas de definir una matriz:

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16  

El primero:

int[] matriz = {1,2,3,4,5,6}; define una matriz e inicialízala 

Aunque nuevo no está escrito, en realidad es un objeto

Precauciones:

int[10] array = {1,2,3,4,5,6}; La ortografía es incorrecta, int[] es un tipo y no se pueden agregar números entre corchetes, lo que equivale a destruir su tipo aquí.

 

El segundo:

int[] matriz2 = new int[3];

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16 La matriz de definición no está inicializada

El tercero:

int[] array3 = new int[]{1,2,3,4,5,6};

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16

definir e inicializar 

El más utilizado de los tres es el primero.

3. El uso de arreglos

Obtener la longitud de la matriz:

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16

En Java, puede encontrar directamente la longitud de la matriz actual a través del nombre de la matriz matriz.longitud

Acceder a los elementos de la matriz:

marca de agua, type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS-WqvuKAjQ==,size_19,color_FFFFFF,t_70,g_se,x_16

acceder al elemento en el índice 4 de la matriz 

Acceder a elementos de matriz fuera de los límites:

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16 Error directo fuera de los límites del lenguaje Java

Cambiar elementos de matriz:

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16  

 A través de los corchetes en el nombre de la matriz, no solo puede acceder al contenido del subíndice, sino también escribir algunos datos en el subíndice. 

Imprime la matriz: 

El primero: (bucle for)

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16

 El segundo: (mejorado para bucle, para cada bucle)

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16

 La diferencia entre for loop y for each loop:

El bucle for puede obtener el subíndice,

El bucle for each no puede obtener el subíndice, se usa más en la colección

El tercer tipo: con la ayuda de la clase de herramientas de matrices de operaciones de Java Arrays

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16

En segundo lugar, la matriz como parámetro del método.

1. Uso básico

Una breve introducción a JVM

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16

 

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16 Almacenamiento de variables locales en memoria:

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16

 

La referencia no apunta a la escritura del objeto:

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16

esta referencia no apunta a ningún objeto

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16

¿Puede una referencia apuntar a varios objetos al mismo tiempo? 

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16

Para este código, solo puede apuntar a un objeto y almacenar la dirección de un objeto. Al final solo se guarda la dirección del último objeto 

 

El proceso de pasar una matriz como parámetro a un método:

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16

Resuelve el resultado de la impresión:

Las dos primeras soluciones:

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16 

fun2 imprime el resultado:

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16 

Ejemplo de análisis: qué representa la siguiente figura 

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16 

Representa la referencia de matriz2, que apunta al objeto al que apunta la referencia de matriz1.

La siguiente figura representa el significado del ejemplo anterior:

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16

Precauciones:

Es incorrecto decir que una referencia apunta a una referencia, una referencia solo puede apuntar a un objeto

¿La referencia tiene que estar en la pila?

No necesariamente, si una variable está en la pila está determinada por la naturaleza de su variable.Si es una variable local, debe estar en la pila. Si no, por ejemplo, las variables de miembro de instancia no están necesariamente en la pila.

3. Preguntas de práctica de matriz

1. Intercambiar los valores de dos variables

public class TestDemo {
    public static void swap(int[] array){
        int tmp = array[0];
        array[0] = array[1];
        array[1] = tmp;

    }
    public static void main(String[] args) {
        int[] array = {10,20};
        System.out.println("交换前: "+array[0]+" "+array[1]);
        swap(array);
        System.out.println("交换后: "+array[0]+" "+array[1]);
    }

imprimir resultado:

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16

2. Escriba un método que tome cada elemento de la matriz * 2 

 /**
     * 在原来的数组上扩大2倍
     * @param array
     */
    public static void enlarge(int[] array){
        for (int i = 0; i <array.length ; i++) {
            array[i] = array[i]*2;
        }

    }

    public static void main(String[] args) {
        int[] array = {1,2,3,4,5,6,7};
        enlarge(array);
        System.out.println(Arrays.toString(array));
    }

imprimir resultado:

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16

Ponga el valor de la matriz original por 2 veces en una nueva matriz

/**
     * 把原来数组扩大2倍的值放在一个新的数组中
     * @param array
     * @return
     */
    public static int[] func(int[] array) {
        int[] ret = new int[array.length];
        for (int i = 0; i < array.length; i++) {
            ret[i] = array[i] * 2;
        }
        return ret;
    }

    public static void main(String[] args) {
        int[] array = {1,2,3,4,5,6,7};
       int[] ret =  func(array);
        System.out.println(Arrays.toString(ret));
    }

 

3. Simula la función tostring

public static String myToString(int[] array){
        String str = "[";

        for (int i = 0; i <array.length ; i++) {
            str = str+array[i];
            if(i != array.length-1){
                str+= ",";
            }
        }
        str= str + "]";
        return str;
    }

    public static void main(String[] args) {
        int[] array = {1,2,3,4,5,6,7};
       String str =  myToString(array);
        System.out.println(str);
    }

imprimir resultado:

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16

4. Encuentra el elemento más grande en la matriz 

    public static int maxNum(int[] array){
        if(array == null) return -1;
        if (array.length == 0) return -1;
        int max = array[0];
        for (int i = 1; i <array.length ; i++) {
            if(max < array[i]){
                max = array[i];

            }
        }
        return max;
    }

    public static void main(String[] args) {
        int[] array = {12,8,14,26,5,7,8};
        int max = maxNum(array);
        System.out.println(max);
    }

imprimir resultado:

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16

5. Encuentra el elemento especificado en la matriz (búsqueda secuencial) 

   public static int findNum(int[] array,int key){
        for (int i = 0; i <array.length ; i++) {
            if(array[i] == key){
                return i;
            }
        }
        return -1;
    }

    public static void main(String[] args) {
        int[] array = {2,4,5,6,11,7,8,9};
        System.out.println(findNum(array, 7));

    }

imprimir resultado:

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16

6. Encuentra el elemento especificado en la matriz (búsqueda binaria) 

 

二分查找的必要条件是必须有序的数列
    public static int binarySearch(int[] array,int key){
        int left = 0;
        int right = array.length-1;
        while(left <= right){
            int mid = (left+right)/2;
            if(array[mid] > key){
                right = mid - 1;
            }else if(array[mid] < key){
                left = left + 1;
            }else{
                return mid;
            }

        }
        return -1;
    }

    public static void main(String[] args) {
        int[] array = {12,14,15,16,18,23};
        System.out.println(binarySearch(array, 15));
    }

imprimir resultado:

marca de agua, tipo_d3F5LXplbmhlaQ, sombra_50, texto_Q1NETiBAS-WqvuKAjQ==, tamaño_20, color_FFFFFF, t_70, g_se, x_16

 Resumir:

Este artículo presenta brevemente qué es una matriz, cómo escribir una matriz, cómo imprimir una matriz y el uso simple de una matriz. Profundice su comprensión de las matrices a través de ejemplos simples. Lo anterior es el contenido de hoy. Si tiene alguna pregunta, puede enviarme un mensaje privado en cualquier momento. Corregiré activamente cualquier problema en el artículo. También espero que todos puedan dominar el conocimiento que desean más rápido, ¡trabajemos juntos! ! ! ! !

estoy contigo._ _ _ _ _

10a5ec8cb52948ffb13fdd41c39d0066.gif

 

 

Supongo que te gusta

Origin blog.csdn.net/m0_64397675/article/details/123271586
Recomendado
Clasificación