〔004〕Базовые массивы и методы Java

▷ Статический массив инициализации

  • 数组: — контейнер, используемый для хранения пакета 同种类型 данных
  • 静态化数组:Это предварительное заполнение элементов массива и знание того, какие значения имеет массив.
  • 格式: определение 数据类型[] 数组名 также можно записать как 数据类型 数组名[]
  • 注意:Какой тип массива может хранить только какие типы данных?
package tiny.geeker;

public class Test {
    
    
    public static void main(String[] args) {
    
    
        // 定义整数类型的数组
        int[] arr = {
    
    1, 20, 32, 41, 54};

        // 定义字符串类型的数组
        String[] names = {
    
    "飞兔小哥", "博客专家", "天猫精灵测评官"};
    }
}

Статический массив инициализации

▷ Три способа статической инициализации определений массива

  • метод первый: 数组类型[] 数组名 = new 数组类型{元素一, 元素二, 元素三}
  • Способ второй: 数组类型[] 数组名 = {元素一, 元素二, 元素三}
  • Способ третий: 数组类型 数组名[] = {元素一, 元素二, 元素三}
package tiny.geeker;

public class Test {
    
    
    public static void main(String[] args) {
    
    
        // 定义数组的方式一
        String[] names = new String[]{
    
    "飞兔小哥", "博客专家", "天猫精灵测评官"};

        // 定义数组的方式二
        int[] age = {
    
    20, 25, 32};

        // 定义数组的方式三
        double height[] = new double[]{
    
    172.4, 168.9, 184.9};
    }
}

Три способа определения массивов

▷ Доступ к массиву

  • Формат: 数组名[索引], где индекс начинается с 0
package tiny.geeker;

public class Test {
    
    
    public static void main(String[] args) {
    
    
        String[] names = new String[]{
    
    "飞兔小哥", "博客专家", "天猫精灵测评官"};
        System.out.println(names[0]);
        System.out.println(names[1]);
        System.out.println(names[2]);
    }
}

доступ к массиву

▷Длина массива

  • Формат: 数组名.length, с помощью этой программы вы можете получить количество элементов в массиве
package tiny.geeker;

public class Test {
    
    
    public static void main(String[] args) {
    
    
        String[] names = new String[]{
    
    "飞兔小哥", "博客专家", "天猫精灵测评官"};
        System.out.println(names.length);
    }
}

длина массива

▷ Принцип хранения массива

  • Переменная массива хранит массив по адресу 内存中的地址, массив представляет собой ссылочный тип данных, а адрес переменной указывает на конечные данные
  • Точно так же, как имя массива является номером дома, вы можете найти свой дом только по номеру дома.

Принцип хранения

Принцип хранения

▷ Обход массивов

  • 遍历: Доступ к элементам массива один за другим, которые можно пройти с помощью for цикла
  • Например, если вы не знаете, сколько элементов в массиве, и хотите вычислить сумму элементов,
package tiny.geeker;

public class Test {
    
    
    public static void main(String[] args) {
    
    
        int ages[] = {
    
    10, 20, 30, 40};
        int count = 0;

        for (int i = 0; i < ages.length; i++) {
    
    
            count += ages[i];
        }

        System.out.println(count);
    }
}

Обход массива

▷ Динамическая инициализация массивов

  • 动态化数组:То есть при определении массива не сохраняются конкретные значения элементов, а определяется только тип данных, хранящихся в массиве, и длина массива.
  • Подходит для бизнес-сценариев, где конкретные значения элементов поначалу неопределенны и известно только количество элементов.
  • Формат: 数据类型[] 数组名 = new 数据类型[长度]
package tiny.geeker;

public class Test {
    
    
    public static void main(String[] args) {
    
    
        String[] names = new String[3];

        names[0] = "飞兔小哥";
        names[1] = "博客专家";
        names[2] = "天猫精灵测评官";

        System.out.println(names[0]);
        System.out.println(names[1]);
        System.out.println(names[2]);
    }
}

Динамически инициализировать массив

▷ Найти максимальное значение массива

  • Например, задан массив целых чисел, найти в нем максимальное значение.
  • Он заключается в том, чтобы пройти по массиву, определить, превышает ли каждое значение предыдущее значение, и присвоить большее значение переменной.
package tiny.geeker;

public class Test {
    
    
    public static void main(String[] args) {
    
    
        int age[] = {
    
    10, 20, 40, 30};
        int max = age[0]; // 定义最开始的值

        for (int i = 0; i < age.length; i++) {
    
    
            if (age[i] > max) max = age[i];
        }

        System.out.println("最大值为:" + max);
    }
}

Найдите лучшее соотношение цены и качества

▷ Обращение массива

  • Например, если задан целочисленный массив {10, 20, 40, 30}, преобразуйте его в {30, 40, 20, 10}
  • Принцип состоит в том, чтобы сначала поменять местами первый элемент и последний элемент, затем поменять местами второй элемент и предпоследний элемент, а затем продолжить.
  • Вы можете определить две переменныеi和j, где i значение по умолчанию перемещается вправо от первого элемента, j По умолчанию последний элемент перемещается влево, и позиции двух элементов можно каждый раз менять местами

Обращение массива

▷ инструменты отладки

  • При написании программы вы можете видеть, что редактор очень интуитивно выдает вам подсказки об ошибках.
  • Но если вы хотите увидеть изменения значений в процессе работы, вам необходимо воспользоваться инструментом debug редактора
  • Сначала вам нужно установить точку останова на 行号, затем щелкнуть правой кнопкой мыши и выбрать debug для запуска, нажать кнопку «Выполнить», и вы сможете см. в редакторе. Изменения в массиве очень заметны

инструменты отладки

инструменты отладки

▷ Метод

  • 方法:Это грамматическая структура, которая инкапсулирует фрагмент кода в функцию, чтобы ее можно было вызывать повторно.
  • 方法Это может улучшить повторяемость кода, повысить эффективность разработки, а также сделать логику программы более понятной.
  • Формат определения метода: 修饰词 返回值类型 方法名(形参列表) { 代码; return 返回值; }
  • Примечание. Если метод объявляет определенный тип возвращаемого значения, внутренний возврат должен возвращать соответствующий тип данных
package tiny.geeker;

public class Test {
    
    
    public static void main(String[] args) {
    
    
        int count = sum(1, 2);
        System.out.println(count);
    }

    public static int sum(int a, int b) {
    
    
        return a + b;
    }
}

▷ Возвращаемое значение

  • Если определенный метод не возвращает значение, то тип возвращаемого значения необходимо определить какvoid
  • Если определенный метод имеет возвращаемое значение, внутренний возврат должен возвращать соответствующий тип данных.
  • Списков формальных параметров может быть несколько или даже ни одного; если формальных параметров несколько, их необходимо разделить запятыми, а значения инициализации не могут быть заданы.
package tiny.geeker;

public class Test {
    
    
    public static void main(String[] args) {
    
    
    	// 有返回值的方法
        int count = sum(1, 2);
        System.out.println(count);
        
        // 直接调用无返回值的方法
        say();
    }

    public static void say() {
    
    
        System.out.println("我是飞兔小哥");
    }

    public static int sum(int a, int b) {
    
    
        return a + b;
    }
}

▷ Сумма

  • Запрос 1到n的和 имеет возвращаемое значение, то есть итоговую сумму необходимо вывести
  • Из формулы суммирования в начальной школе мы можем знать, что формула для нахождения суммы от 1 до n:(1+n)*n/2
  • Поскольку окончательная сумма является целым числом, тип возвращаемого значения необходимо определить какint
package tiny.geeker;

public class Test {
    
    
    public static void main(String[] args) {
    
    
        int count = sum(100);
        System.out.println(count);
    }

    public static int sum(int n) {
    
    
        return (1 + n) * n / 2;
    }
}

Сумма

▷ Паритет

  • Чтобы определить четность числа, вам нужно только распечатать результат и не нужно возвращать значение.
  • На данный момент тип возвращаемого значения может быть определен какvoid
package tiny.geeker;

public class Test {
    
    
    public static void main(String[] args) {
    
    
        judge(51);
        judge(60);
    }

    public static void judge(int number) {
    
    
        if (number % 2 == 0) {
    
    
            System.out.println(number + "是一个偶数");
        } else {
    
    
            System.out.println(number + "是一个奇数");
        }
    }
}

Паритет

▷Передача параметров

  • 值传递:Это означает, что при передаче фактических параметров в формальные параметры в методе передается копия значения, хранящегося в переменной фактического параметра. Изменение значения параметра в копии не приведет к изменению значения фактического параметра.
  • 引用值传递:При передаче в формальный параметр передается адрес фактического параметра.После изменения значения значение в фактическом параметре будет изменено.Например, массив передается по ссылке.
package tiny.geeker;

public class Test {
    
    
    public static void main(String[] args) {
    
    
        // 值传递
        int a = 20;
        change(a);
        System.out.println(a);
    }

    public static void change(int a) {
    
    
        System.out.println(a);
        a = 520; // 修改值
        System.out.println(a);
    }
}

Передавать по значению

package tiny.geeker;

public class Test {
    
    
    public static void main(String[] args) {
    
    
        // 引用值传递
        int a[] = {
    
    10, 20, 30};
        change(a);
        System.out.println(a[1]);
    }

    public static void change(int[] a) {
    
    
        System.out.println(a[1]);
        a[1] = 520; // 修改值
        System.out.println(a[1]);
    }
}

передать по ссылке

▷ Перегрузка метода

  • 方法重载: — это 名称相同 нескольких методов в классе, но их 形参列表不同 не имеет значения для других вещей, таких как модификаторы и типы возвращаемых значений.
  • 形参列表的不同:Он ссылается на различное количество, тип и порядок формальных параметров и не заботится об именах формальных параметров.
  • Например, создайте NPC в игре и установите объём крови NPC
package tiny.geeker;

public class Test {
    
    
    public static void main(String[] args) {
    
    
        System.out.println(create("飞兔小哥"));
        System.out.println(create("飞兔小哥", 10000));
    }

    public static String create(String name) {
    
    
        return "创建了NPC:" + name;
    }

    public static String create(String name, int blood) {
    
    
        return "创建了NPC:" + name + ",血量为:" + blood;
    }
}

Перегрузка метода

▷Случай: создать код подтверждения

  • Укажите программу, которая будет генерировать проверочный код из n цифр, после чего программа будет случайным образом возвращать строку из n цифр
package tiny.geeker;

import java.util.Random;

public class Test {
    
    
    public static void main(String[] args) {
    
    
        String code = qrcode(5);
        System.out.println(code);
    }

    public static String qrcode(int n) {
    
    
        String code = "";
        Random r = new Random();

        for (int i = 0; i < n; i++) {
    
    
            int type = r.nextInt(3);
            switch (type) {
    
    
                case 0:
                    // 生成小数
                    code += r.nextInt(10);
                    break;
                case 1:
                    // 生成小写字母
                    char ch1 = (char) (r.nextInt(26) + 97);
                    code += ch1;
                    break;
                case 2:
                    // 生成大写字母
                    char ch2 = (char) (r.nextInt(26) + 65);
                    code += ch2;
                    break;
            }
        }
        return code;
    }
}

Создать код подтверждения

рекомендация

отblog.csdn.net/weixin_41635750/article/details/134380609