Это введение в переменные и типы данных Java. Мы будем изучать основы разработки Java, как показано в этом видео: Java для начинающих — переменные и типы данных [2]

Различные типы переменных

В Java обычно есть 2 разных типа переменных. Ссылочные и примитивные типы. Каждая из этих переменных ведет себя по-разному в Java, и важно понимать их.

Примитивные типы данных

Примитивные типы данных — это простые типы, такие как целые числа, десятичные числа, отдельные символы и переменные true/false. Проверьте следующее изображение

long longNum = 1_000_000_000_000L;  // Represents a long whole number (64 bits)
int intNum = 2_000_000_000;         // Represents a whole number (32 bits)
short shortNum = 31_000;            // Represents a Short number (16 bits)
byte byteNum = 126;                 // Represents a Byte (8 bits)

float floatNum = 1.355F;            // Represents a Float (decimal) number (32 bit)
double doubleNum = 1.42576D;        // Represents a Double number (64 bit)

char charVar = 'a';                 // Represents a character - (8 Bits)
boolean bool = false;               // Represents a true/false variable
                                    // (8 Bits, due to computers limitations)

Более подробные сведения об этих типах переменных можно найти здесь: Примитивные типы данных (Учебные руководства по Java™ › Изучение языка Java › Основы языка) (oracle.com)

При использовании примитивных типов эти типы являются неизменяемыми и не могут вызываться по ссылке. Давайте посмотрим на быстрый пример:

public class Main {
    public static void main(String[] args) {
        int var1 = 5;
        int var2 = var1;
        System.out.println("var1: " + var1 + " var2: " + var2);
        var2 = 10;
        System.out.println("var1: " + var1 + " var2: " + var2);
    }
}

Следующий фрагмент кода выведет это:

var1: 5 var2: 5
var1: 5 var2: 10

Process finished with exit code 0

Вы можете видеть это, несмотря на то, что var2 было установлено на var1 . Изменение значения var2 не приведет к обновлению значения var1. В отличие от ссылочных типов.

Тип ссылки

Ссылочные типы немного отличаются. Обычно они представляют собой сложные объекты, такие как простое лицо. Имя, возраст и дата рождения. Ссылочные типы обычно объявляются с помощью ключевого слова new.

При обращении к ссылочному типу java назначит объекту адрес памяти, и каждая ссылка будет указывать на эту ссылку. Итак, когда мы создаем новый объект. Мы можем манипулировать этим объектом, чтобы изменить его везде и всегда.

Point point = new Point(1, 2);
Point point2 = new Point(3, 5);

Вы можете увидеть новое ключевое слово в обоих из них.

Давайте рассмотрим пример, почему ссылочные типы меняются во всех экземплярах.

import java.awt.*;

public class Main {

    public static void main(String[] args) {
        Point point = new Point(1, 2);
        Point point2 = point;
        System.out.println("point: " + point.toString() + " point2: " + point2.toString());
        point2.setLocation(3, 4);
        System.out.println("point: " + point.toString() + " point2: " + point2.toString());
    }

}

Результат для этого следующий:

point: java.awt.Point[x=1,y=2] point2: java.awt.Point[x=1,y=2]
point: java.awt.Point[x=3,y=4] point2: java.awt.Point[x=3,y=4]

Process finished with exit code 0

Мы видим, что установка point2 местоположения на 3, 4 также обновит местоположение исходной точки. Это связано с тем, что new Point(1, 2); назначается адрес памяти. point также назначается адрес памяти, который указывает на адрес памяти new Point(1, 2);. point2 Также назначается адрес памяти, указывающий на new Point(1, 2);

По большому счету, именно поэтому мы должны быть осторожны при изменении ссылочных типов. Если вы хотите отделить их. Обычно вы создаете новый объект Point для каждого из них.

Спасибо за прочтение!

Пожалуйста, найдите бесплатный PDF: 2. Переменные — CodeWasp.pdf

Подпишитесь на наш YouTube-канал: https://www.youtube.com/@CodeWaspTutorials

Присоединяйтесь к нашему Discord: https://discord.gg/59TDdZTsam