🚀 Привет, будущие разработчики! JavaStartZero - это твой главный ресурс для обучения программированию на Java с нуля. Здесь мы разбираемся в основах, концепциях и инструментах, которые помогут тебе стать успешным Java-разработчиком. 💻
👨💻 Автор канала, Java-разработчик с 6-летним стажем. Решил стать наставником для новых специалистов и помочь им максимально быстро и с минимумом камней преткновения стать настоящими Java middle-разработчиками с нуля.
✅ На нашем канале ты найдешь:
🔹 Пошаговые уроки с практическими задачами и решениями;
🔸 Объяснение ключевых концепций Java, таких как ООП, исключения, коллекции и многопоточность;
🔹 Примеры кода для лучшего понимания материала;
🔸 Рекомендации по лучшим практикам и стилю кодирования;
🔹 Обзоры полезных библиотек, фреймворков и инструментов;
🔸 Интерактивные вебинары и обсуждения с экспертами;
🔹 Советы по развитию карьеры и поиску работы в сфере Java-разработки.
🌐 Присоединяйся к JavaStartZero и вместе с опытным наставником освоим мир Java-разработки, превратив тебя из начинающего в опытного специалиста! 🎓
👨💻 Автор канала, Java-разработчик с 6-летним стажем. Решил стать наставником для новых специалистов и помочь им максимально быстро и с минимумом камней преткновения стать настоящими Java middle-разработчиками с нуля.
✅ На нашем канале ты найдешь:
🔹 Пошаговые уроки с практическими задачами и решениями;
🔸 Объяснение ключевых концепций Java, таких как ООП, исключения, коллекции и многопоточность;
🔹 Примеры кода для лучшего понимания материала;
🔸 Рекомендации по лучшим практикам и стилю кодирования;
🔹 Обзоры полезных библиотек, фреймворков и инструментов;
🔸 Интерактивные вебинары и обсуждения с экспертами;
🔹 Советы по развитию карьеры и поиску работы в сфере Java-разработки.
🌐 Присоединяйся к JavaStartZero и вместе с опытным наставником освоим мир Java-разработки, превратив тебя из начинающего в опытного специалиста! 🎓
🎉 Добро пожаловать на JavaStartZero! 🎉
Привет, будущие Java-разработчики! Меня зовут Михаил, и я рад приветствовать вас на этом канале, где мы вместе начнем наше увлекательное путешествие в мир Java-разработки с нуля. С моим 6-летним опытом работы, я хочу стать вашим наставником и помочь вам избежать типичных ошибок и трудностей на пути к становлению опытными middle-разработчиками.
В этом первом посте хочу поделиться с вами планом нашего обучения:
1️⃣ Тема 1: Введение в Java, установка и настройка окружения, основы синтаксиса;
2️⃣ Тема 2: Основы объектно-ориентированного программирования (ООП);
3️⃣ Тема 3: Исключения, обработка ошибок и отладка;
4️⃣ Тема 4: Коллекции, обобщения и работа с данными;
5️⃣ Тема 5: Многопоточность и синхронизация;
6️⃣ Тема 6: Работа с сетью, базами данных и веб-сервисами;
7️⃣ Тема 7: Тестирование, логирование и документация кода;
8️⃣ Тема 8: Изучение популярных библиотек и фреймворков;
9️⃣ Тема 9: Разработка небольшого проекта с использованием полученных знаний;
🔟 Тема 10: Подготовка к собеседованиям, составление резюме и поиск работы.
Каждую неделю мы будем публиковать уроки, примеры кода, задачи для самостоятельной практики и полезные ссылки. Также будут проводиться интерактивные вебинары, где вы сможете задавать вопросы и обсуждать темы с экспертами.
Не забудьте подписаться на канал, чтобы не пропустить новые материалы! Удачи вам на пути к освоению Java, и до скорой встречи! 🚀
P.S. Если у вас возникнут вопросы или предложения, не стесняйтесь писать в комментариях - я всегда рад помочь! 😊
Привет, будущие Java-разработчики! Меня зовут Михаил, и я рад приветствовать вас на этом канале, где мы вместе начнем наше увлекательное путешествие в мир Java-разработки с нуля. С моим 6-летним опытом работы, я хочу стать вашим наставником и помочь вам избежать типичных ошибок и трудностей на пути к становлению опытными middle-разработчиками.
В этом первом посте хочу поделиться с вами планом нашего обучения:
1️⃣ Тема 1: Введение в Java, установка и настройка окружения, основы синтаксиса;
2️⃣ Тема 2: Основы объектно-ориентированного программирования (ООП);
3️⃣ Тема 3: Исключения, обработка ошибок и отладка;
4️⃣ Тема 4: Коллекции, обобщения и работа с данными;
5️⃣ Тема 5: Многопоточность и синхронизация;
6️⃣ Тема 6: Работа с сетью, базами данных и веб-сервисами;
7️⃣ Тема 7: Тестирование, логирование и документация кода;
8️⃣ Тема 8: Изучение популярных библиотек и фреймворков;
9️⃣ Тема 9: Разработка небольшого проекта с использованием полученных знаний;
🔟 Тема 10: Подготовка к собеседованиям, составление резюме и поиск работы.
Каждую неделю мы будем публиковать уроки, примеры кода, задачи для самостоятельной практики и полезные ссылки. Также будут проводиться интерактивные вебинары, где вы сможете задавать вопросы и обсуждать темы с экспертами.
Не забудьте подписаться на канал, чтобы не пропустить новые материалы! Удачи вам на пути к освоению Java, и до скорой встречи! 🚀
P.S. Если у вас возникнут вопросы или предложения, не стесняйтесь писать в комментариях - я всегда рад помочь! 😊
Здравствуйте, друзья! Сегодня начинаем наше путешествие в мир Java, и первый шаг на этом пути - установка необходимых инструментов и настройка рабочего окружения. В этом посте мы разберем:
Установка JDK (Java Development Kit);
Выбор и установка среды разработки (IDE);
Создание и запуск первой Java-программы.
🔧 Установка JDK:
Для начала, вам потребуется установить JDK (Java Development Kit) на ваш компьютер. Вы можете скачать его с официального сайта Oracle: https://www.oracle.com/java/technologies/javase-jdk16-downloads.html
Выберите подходящую для вашей операционной системы версию и следуйте инструкциям по установке.
Установка JDK (Java Development Kit);
Выбор и установка среды разработки (IDE);
Создание и запуск первой Java-программы.
🔧 Установка JDK:
Для начала, вам потребуется установить JDK (Java Development Kit) на ваш компьютер. Вы можете скачать его с официального сайта Oracle: https://www.oracle.com/java/technologies/javase-jdk16-downloads.html
Выберите подходящую для вашей операционной системы версию и следуйте инструкциям по установке.
Oracle
Download the Latest Java LTS Free
Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.
🛠 Выбор и установка среды разработки (IDE):
Существует множество сред разработки для Java. Ниже приведены три популярных варианта:
IntelliJ IDEA: https://www.jetbrains.com/idea/
Eclipse: https://www.eclipse.org/downloads/
NetBeans: https://netbeans.apache.org/download/
Мы рекомендуем начать с IntelliJ IDEA Community Edition, так как она бесплатна и предоставляет широкий спектр функций для комфортной разработки на Java. Скачайте и установите среду разработки, следуя инструкциям на сайте.
Существует множество сред разработки для Java. Ниже приведены три популярных варианта:
IntelliJ IDEA: https://www.jetbrains.com/idea/
Eclipse: https://www.eclipse.org/downloads/
NetBeans: https://netbeans.apache.org/download/
Мы рекомендуем начать с IntelliJ IDEA Community Edition, так как она бесплатна и предоставляет широкий спектр функций для комфортной разработки на Java. Скачайте и установите среду разработки, следуя инструкциям на сайте.
JetBrains
The Java and Kotlin IDE for You and Your Agents
IntelliJ IDEA, a JetBrains IDE, brings AI agents and professional Java and Kotlin development together, helping you build faster and ship with confidence.
🚀 Создание и запуск первой Java-программы:
Запустите IntelliJ IDEA и выберите "Create New Project".
В окне "New Project" выберите "Java" и убедитесь, что в поле "Project SDK" выбрана установленная ранее версия JDK. Нажмите "Next".
Оставьте галочку на "Create project from template" и выберите "Command Line App", нажмите "Next".
Введите название проекта, например, "MyFirstJavaApp" и выберите расположение проекта на вашем компьютере. Нажмите "Finish".
Теперь у вас есть базовый шаблон Java-программы. Откройте файл Main.java, и вы увидите код "Hello, World!" программы:
🎉 Поздравляем! Вы только что создали и запустили свою первую Java-программу. В следующих постах мы погрузимся в основы синтаксиса Java и начнем изучать объектно-ориентированное программирование. Удачи на пути к становлению Java-разработчиком, и до скорого!
Запустите IntelliJ IDEA и выберите "Create New Project".
В окне "New Project" выберите "Java" и убедитесь, что в поле "Project SDK" выбрана установленная ранее версия JDK. Нажмите "Next".
Оставьте галочку на "Create project from template" и выберите "Command Line App", нажмите "Next".
Введите название проекта, например, "MyFirstJavaApp" и выберите расположение проекта на вашем компьютере. Нажмите "Finish".
Теперь у вас есть базовый шаблон Java-программы. Откройте файл Main.java, и вы увидите код "Hello, World!" программы:
public class Main {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
Чтобы запустить программу, нажмите на зеленый треугольник слева от строки public static void main, а затем выберите "Run 'Main.main()'". В нижней части окна среды разработки отобразится результат выполнения программы: Hello, World!🎉 Поздравляем! Вы только что создали и запустили свою первую Java-программу. В следующих постах мы погрузимся в основы синтаксиса Java и начнем изучать объектно-ориентированное программирование. Удачи на пути к становлению Java-разработчиком, и до скорого!
Глава: Основы программирования на Java.
Тема: Структура программы.
Основным строительным блоком программы на языке Java являются инструкции (statement). Каждая инструкция выполняет некоторое действие, например, вызовы методов, объявление переменных и присвоение им значений. После завершения инструкции в Java ставится точка с запятой (;). Данный знак указывает компилятору на конец инструкции. Например:
Кроме отдельных инструкций распространенной конструкцией является блок кода. Блок кода содержит набор инструкций, он заключается в фигурные скобки, а инструкции помещаются между открывающей и закрывающей фигурными скобками:
Тема: Структура программы.
Основным строительным блоком программы на языке Java являются инструкции (statement). Каждая инструкция выполняет некоторое действие, например, вызовы методов, объявление переменных и присвоение им значений. После завершения инструкции в Java ставится точка с запятой (;). Данный знак указывает компилятору на конец инструкции. Например:
System.out.println("Hello Java!");
Данная строка представляет вызов метода System.out.println, который выводит на консоль строку "Hello Java!". В данном случае вызов метода является инструкцией и поэтому завершается точкой с запятой.Кроме отдельных инструкций распространенной конструкцией является блок кода. Блок кода содержит набор инструкций, он заключается в фигурные скобки, а инструкции помещаются между открывающей и закрывающей фигурными скобками:
{
System.out.println("Hello!");
System.out.println("Welcome to Java!");
}
В этом блоке кода две инструкции, которые выводят на консоль определенную строку.Тема: Выполнение программы. Метод main
Java является объектно-ориентированным языком, поэтому всю программу можно представить как набор взаимодействующих между собой классов и объектов. В первой главе при создании первого приложения программа была определена следующим образом:
То есть основу нашей программы составляет класс Program. При определении класса вначале идет модификатор доступа public, который указывает, что данный класс будет доступен всем, то есть мы сможем его запустить из командной строки. Далее идет ключевое слово class, а затем название класса. После названия класса идет блок кода, в котором расположено содержимое класса.
Java является объектно-ориентированным языком, поэтому всю программу можно представить как набор взаимодействующих между собой классов и объектов. В первой главе при создании первого приложения программа была определена следующим образом:
public class Program{
public static void main (String args[]){
System.out.println("Hello Java!");
}
}
То есть основу нашей программы составляет класс Program. При определении класса вначале идет модификатор доступа public, который указывает, что данный класс будет доступен всем, то есть мы сможем его запустить из командной строки. Далее идет ключевое слово class, а затем название класса. После названия класса идет блок кода, в котором расположено содержимое класса.
Входной точкой в программу на языке Java является метод main, который определен в классе Program. Именно с него начинается выполнение программы. Он обязательно должен присутствовать в программе. При этом его заголовок может быть только таким:
При запуске приложения виртуальная машина Java ищет в главном классе программы метод main с подобным заголовком, и после его обнаружения запускает его.
Вначале заголовка метода идет модификатор public, который указывает, что метод будет доступен извне. Слово static указывает, что метод main - статический, а слово void - что он не возвращает никакого значения. Далее в скобках у нас идут параметры метода - String args[] - это массив args, который хранит значения типа String, то есть строки. При запуске программы через этот массив мы можем передать в программу различные данные.
После заголовка метода идет его блок, который содержит набор выполняемых инструкций.
public static void main (String args[])
При запуске приложения виртуальная машина Java ищет в главном классе программы метод main с подобным заголовком, и после его обнаружения запускает его.
Вначале заголовка метода идет модификатор public, который указывает, что метод будет доступен извне. Слово static указывает, что метод main - статический, а слово void - что он не возвращает никакого значения. Далее в скобках у нас идут параметры метода - String args[] - это массив args, который хранит значения типа String, то есть строки. При запуске программы через этот массив мы можем передать в программу различные данные.
После заголовка метода идет его блок, который содержит набор выполняемых инструкций.
Тема: Переменные и константы
Для хранения данных в программе
предназначены переменные. Переменная представляет именованную область
памяти, которая хранит значение определенного типа. Каждая переменная
имеет тип, имя и значение. Тип определяет, какую информацию может
хранить переменная или диапазон допустимых значений.
Переменные объявляются следующим образом:
Например, определим переменную, которая будет называться x и будет иметь тип int:
В этом выражении мы объявляем переменную x типа int. То есть x будет хранить некоторое число не больше 4 байт.
В качестве имени переменной может выступать любое произвольное название, которое удовлетворяет следующим требованиям:
- имя может содержать любые алфавитно-цифровые символы, а также знак
подчеркивания, при этом первый символ в имени не должен быть цифрой
- в имени не должно быть знаков пунктуации и пробелов
- имя не может быть ключевым словом языка Java
Для хранения данных в программе
предназначены переменные. Переменная представляет именованную область
памяти, которая хранит значение определенного типа. Каждая переменная
имеет тип, имя и значение. Тип определяет, какую информацию может
хранить переменная или диапазон допустимых значений.
Переменные объявляются следующим образом:
тип_данных имя_переменной;
Например, определим переменную, которая будет называться x и будет иметь тип int:
int x;
В этом выражении мы объявляем переменную x типа int. То есть x будет хранить некоторое число не больше 4 байт.
В качестве имени переменной может выступать любое произвольное название, которое удовлетворяет следующим требованиям:
- имя может содержать любые алфавитно-цифровые символы, а также знак
подчеркивания, при этом первый символ в имени не должен быть цифрой
- в имени не должно быть знаков пунктуации и пробелов
- имя не может быть ключевым словом языка Java
Кроме того, при объявлении и последующем использовании надо учитывать, что Java - регистрозависимый язык, поэтому следующие объявления int num; и int NUM; будут представлять две разных переменных.
Объявив переменную, мы можем присвоить ей значение:
Также можно присвоить значение переменной при ее объявлении. Этот процесс называется инициализацией:
Если мы не присвоим переменной значение до ее использования, то мы можем получить ошибку, например, в следующем случае:
Через запятую можно объявить сразу несколько переменных одного типа:
Отличительной особенностью переменных является то, что мы можем в процессе работы программы изменять их значение:
Объявив переменную, мы можем присвоить ей значение:
int x; // объявление переменной
x = 10; // присвоение значения
System.out.println(x); // 10
Также можно присвоить значение переменной при ее объявлении. Этот процесс называется инициализацией:
int x = 10; // объявление и инициализация переменной
System.out.println(x); // 10
Если мы не присвоим переменной значение до ее использования, то мы можем получить ошибку, например, в следующем случае:
int x;
System.out.println(x);
Через запятую можно объявить сразу несколько переменных одного типа:
int x, y;
x = 10;
y = 25;
System.out.println(x); // 10
System.out.println(y); // 25
Отличительной особенностью переменных является то, что мы можем в процессе работы программы изменять их значение:
int x = 10;
System.out.println(x); // 10
x = 25;
System.out.println(x); // 25
Ключевое слово var:
Начиная с Java 10 в язык было добавлено ключевое слово var, которое также позволяет определять переменную:
Слово var ставится вместо типа данных, а сам тип переменной выводится из того значения, которое ей присваивается. Например, переменной x присваивается число 10, значит, переменная будет представлять тип int.
Но если переменная объявляется с помощью var, то мы обязательно должны инициализировать ее, то есть предоставить ей начальное значение, иначе мы получим ошибку, как, например, в следующем случае:
Константы:
Кроме переменных, в Java для хранения данных можно использовать константы. В отличие от переменных константам можно присвоить значение только один раз. Константа объявляется также, как и переменная, только вначале идет ключевое слово final:
Как правило, константы имеют имена в верхнем регистре.
Константы позволяют задать такие переменные, которые не должны больше изменяться. Например, если у нас есть переменная для хранения числа pi, то мы можем объявить ее константой, так как ее значение постоянно.
Начиная с Java 10 в язык было добавлено ключевое слово var, которое также позволяет определять переменную:
var x = 10;
System.out.println(x); // 10
Слово var ставится вместо типа данных, а сам тип переменной выводится из того значения, которое ей присваивается. Например, переменной x присваивается число 10, значит, переменная будет представлять тип int.
Но если переменная объявляется с помощью var, то мы обязательно должны инициализировать ее, то есть предоставить ей начальное значение, иначе мы получим ошибку, как, например, в следующем случае:
var x; // ! Ошибка, переменная не инициализирована
x = 10;
Константы:
Кроме переменных, в Java для хранения данных можно использовать константы. В отличие от переменных константам можно присвоить значение только один раз. Константа объявляется также, как и переменная, только вначале идет ключевое слово final:
final int LIMIT = 5;
System.out.println(LIMIT); // 5
// LIMIT=57; // так мы уже не можем написать, так как LIMIT - константа
Как правило, константы имеют имена в верхнем регистре.
Константы позволяют задать такие переменные, которые не должны больше изменяться. Например, если у нас есть переменная для хранения числа pi, то мы можем объявить ее константой, так как ее значение постоянно.
Тема: Типы данных.
Одной из основных особенностей Java является то, что данный язык является строго типизированным. А это значит, что каждая переменная и константа представляет определенный тип и данный тип строго определен. Тип данных определяет диапазон значений, которые может хранить переменная или константа.
Рассмотрим систему встроенных базовых типов данных, которая используется для создания переменных в Java. А она представлена следующими типами.
- boolean: хранит значение true или false
- byte: хранит целое число от -128 до 127 и занимает 1 байт
- short: хранит целое число от -32768 до 32767 и занимает 2 байта
- int: хранит целое число от -2147483648 до 2147483647 и занимает 4 байта
Одной из основных особенностей Java является то, что данный язык является строго типизированным. А это значит, что каждая переменная и константа представляет определенный тип и данный тип строго определен. Тип данных определяет диапазон значений, которые может хранить переменная или константа.
Рассмотрим систему встроенных базовых типов данных, которая используется для создания переменных в Java. А она представлена следующими типами.
- boolean: хранит значение true или false
boolean isActive = false;
boolean isAlive = true;
- byte: хранит целое число от -128 до 127 и занимает 1 байт
byte a = 3;
byte b = 8;
- short: хранит целое число от -32768 до 32767 и занимает 2 байта
short a = 3;
short b = 8;
- int: хранит целое число от -2147483648 до 2147483647 и занимает 4 байта
int a = 4;
int b = 9;
Тема: Типы данных (продолжение)
- long: хранит целое число от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 и занимает 8 байт
- double: хранит число с плавающей точкой от ±4.9*10-324 до ±1.7976931348623157*10308 и занимает 8 байт
В качестве разделителя целой и дробной части в дробных литералах используется точка.
- float: хранит число с плавающей точкой от -3.4*1038 до 3.4*1038 и занимает 4 байта
- char: хранит одиночный символ в кодировке UTF-16 и занимает 2 байта, поэтому диапазон хранимых значений от 0 до 65535
При этом переменная может принимать только те значения, которые соответствуют ее типу. Если переменная представляет целочисленный тип, то она не может хранить дробные числа.
- long: хранит целое число от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 и занимает 8 байт
long a = 5;
long b = 10;
- double: хранит число с плавающей точкой от ±4.9*10-324 до ±1.7976931348623157*10308 и занимает 8 байт
double x = 8.5;
double y = 2.7;
В качестве разделителя целой и дробной части в дробных литералах используется точка.
- float: хранит число с плавающей точкой от -3.4*1038 до 3.4*1038 и занимает 4 байта
float x = 8.5F;
float y = 2.7F;
- char: хранит одиночный символ в кодировке UTF-16 и занимает 2 байта, поэтому диапазон хранимых значений от 0 до 65535
При этом переменная может принимать только те значения, которые соответствуют ее типу. Если переменная представляет целочисленный тип, то она не может хранить дробные числа.
Тема: Целые числа
Все целочисленные литералы, например, числа 10, 4, -5, воспринимаются как значения типа int, однако мы можем присваивать целочисленные литералы другим целочисленным типам: byte, long, short. В этом случае Java автоматически осуществляет соответствующие преобразования:
Однако если мы захотим присвоить переменной типа long очень большое число, которое выходит за пределы допустимых значений для типа int, то мы столкнемся с ошибкой во время компиляции:
Здесь число 2147483649 является допустимым для типа long, но выходит за предельные значения для типа int. И так как все целочисленные значения по умолчанию расцениваются как значения типа int, то компилятор укажет нам на ошибку. Чтобы решить проблему, надо добавить к числу суффикс l или L, который указывает, что число представляет тип long:
Все целочисленные литералы, например, числа 10, 4, -5, воспринимаются как значения типа int, однако мы можем присваивать целочисленные литералы другим целочисленным типам: byte, long, short. В этом случае Java автоматически осуществляет соответствующие преобразования:
byte a = 1;
short b = 2;
long c = 2121;
Однако если мы захотим присвоить переменной типа long очень большое число, которое выходит за пределы допустимых значений для типа int, то мы столкнемся с ошибкой во время компиляции:
long num = 2147483649;
Здесь число 2147483649 является допустимым для типа long, но выходит за предельные значения для типа int. И так как все целочисленные значения по умолчанию расцениваются как значения типа int, то компилятор укажет нам на ошибку. Чтобы решить проблему, надо добавить к числу суффикс l или L, который указывает, что число представляет тип long:
long num = 2147483649L;
Тема: Целые числа (продолжение)
Как правило, значения для целочисленных переменных задаются в десятичной системе счисления, однако мы можем применять и другие системы счисления. Например:
Для задания шестнадцатеричного значения после символов 0x указывается число в шестнадцатеричном формате. Таким же образом восьмеричное значение указывается после символа 0, а двоичное значение - после символов 0b.
Также целые числа поддерживают разделение разрядов числа с помощью знака подчеркивания:
Как правило, значения для целочисленных переменных задаются в десятичной системе счисления, однако мы можем применять и другие системы счисления. Например:
int num111 = 0x6F; // 16-теричная система, число 111
int num8 = 010; // 8-ричная система, число 8
int num13 = 0b1101; // 2-ичная система, число 13
Для задания шестнадцатеричного значения после символов 0x указывается число в шестнадцатеричном формате. Таким же образом восьмеричное значение указывается после символа 0, а двоичное значение - после символов 0b.
Также целые числа поддерживают разделение разрядов числа с помощью знака подчеркивания:
int x = 123_456;
int y = 234_567__789;
System.out.println(x); // 123456
System.out.println(y); // 234567789
Тема: Числа с плавающей точкой.
При присвоении переменной типа float дробного литерала с плавающей точкой, например, 3.1, 4.5 и т.д., Java автоматически рассматривает этот литерал как значение типа double. И чтобы указать, что данное значение должно рассматриваться как float, нам надо использовать суффикс f:
И хотя в данном случае обе переменных имеют практически одно значения, но эти значения будут по-разному рассматриваться и будут занимать разное место в памяти.
При присвоении переменной типа float дробного литерала с плавающей точкой, например, 3.1, 4.5 и т.д., Java автоматически рассматривает этот литерал как значение типа double. И чтобы указать, что данное значение должно рассматриваться как float, нам надо использовать суффикс f:
float fl = 30.6f;
double db = 30.6;
И хотя в данном случае обе переменных имеют практически одно значения, но эти значения будут по-разному рассматриваться и будут занимать разное место в памяти.
