Типы данных и переменные в Java

RedDeveloper
02.04.2023 11:32
Типы данных и переменные в Java

Друзья, прочитавшие предыдущую статью, уже узнали, как создать и запустить проект в IDE IntelliJ IDEA. В этой статье мы рассмотрим типы данных и переменные, используемые в Java.

В объектно-ориентированных языках программирования, в общем случае, каждый класс представляет собой тип данных. Эти типы данных используются для фиксации и хранения данных. В Java типы данных делятся на 3 группы.

  • Примитивные типы данных
  • ссылочные типы
  • Нулевой тип

Среди этих типов первые два подразделяются на подгруппы.

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

Примитивные типы имеют определенный размер и не предоставляют дополнительной функциональности.

Ссылочные (непримитивные) типы данных

Все объекты, также известные как ссылочные типы, являются примерами этой группы. Массив, класс, интерфейс - некоторые из этих типов.

Нулевые типы данных

Null - это название, данное состоянию отсутствия какого-либо значения.

Простой пример для типов данных

public class Variables {
    public static void main(String[] args) {//primitive tipler - değişkenler
        int myNumber = 143;
        short myShort = 856;
        long myLong = 9032;
        double myDouble = 5.23;
        float myFloat = 342.3f;
        char myChar = 'y';
        boolean myBoolean = false;
        byte myByte = 127;
        String myName="İlker  Yelekçioğlu";
        System.out.println(myNumber);
        System.out.println(myShort);
        System.out.println(myLong);
        System.out.println(myDouble);
        System.out.println(myFloat);
        System.out.println(myChar);
        System.out.println(myBoolean);
        System.out.println(myByte);
        System.out.println(myName);
    }
}
Kodlar çalıştığında ilgili çıktı görseldeki gibi olur.

Различия между примитивными и непримитивными типами

  • Примитивные типы предоставляются java по умолчанию, а непримитивные типы создаются разработчиком (кроме String).
  • Непримитивные типы могут предоставлять методы для работы со значением, которое они содержат.
  • Примитивные типы всегда должны иметь значение и поэтому имеют значения по умолчанию, а непримитивные типы могут быть нулевыми
  • Примитивные типы хранятся в памяти в области, называемой стеком, в то время как ссылочные части ссылочных типов хранятся в стеке, а реальные объекты, на которые указывают ссылки, хранятся в специальной области, называемой кучей.

Переменные

Переменные - это символические имена, в которых хранятся данные. Они используются для того, чтобы отличать данные друг от друга. Так же как мы различаем людей по именам, мы различаем данные по именам переменных. Каждая переменная имеет тип.

// Genel değişken tanımlama
// type variable = value*;int age = 25;
String organisation="Ilker";
boolean isCool = true;
int x = 2, y = 3, z = 5;
int a, b, c;
a = 1;
b = 9;
c = 11;
// Good
int minutesPerHour = 60;
// OK, but hard to understand its purpose
int m = 60;
  • Когда создается объект, для каждой операции выделяется место в памяти.
  • Когда объект уничтожается, пространство удаляется.
  • Каждой динамической переменной отводится место в каждом объекте.
  • Доступ к динамической переменной зависит от разрешений класса, к которому она принадлежит.
Hesapla h1 = new Hesapla();
h1.karekokal = 5;
Statik Değişkenler:
Sınıf tanımında bildirimi yapılan ve static deyimi olan değişkenlerdir.
Sınıf değişkenleri için şu kurallar geçerlidir:
  • При запуске программы для переменных выделяется место в памяти.
  • Они удаляются в конце программы.
  • Переменные создаются один раз, пока выполняется программа.
  • Доступ к переменной зависит от разрешения класса, к которому она принадлежит.

Правила, которым необходимо следовать при определении имен переменных:

  • Имена переменных должны быть осмысленными и описывать функцию переменной.
  • Имена переменных могут содержать буквы, цифры, знаки подчеркивания (_) и знаки доллара ($).
  • Оно может начинаться только с буквы.
  • Он должен начинаться со строчной буквы и не может содержать пробелов.
  • Оно также может начинаться с $ и _, но обычно это не является предпочтительным.
  • Имена переменных чувствительны к регистру.
  • Слова, зарезервированные для Java, такие как int, boolean... не могут быть именами переменных.
Dinamik Değişkenler:
Dinamik (anlık) değişkenler, sınıf içinde bildirimi yapılan ve static deyimi olmayan değişkenlerdir.
Dinamik değişkenler için şu kurallar geçerlidir:
  • Когда создается объект, для каждой операции выделяется место в памяти.
  • Когда объект уничтожается, пространство удаляется.
  • Каждой динамической переменной отводится место в каждом объекте.
  • Доступ к динамической переменной зависит от разрешений класса, к которому она принадлежит.
Hesapla h1 = new Hesapla();
h1.karekokal = 5;Statik Değişkenler:
Sınıf tanımında bildirimi yapılan ve static deyimi olan değişkenlerdir.
Sınıf değişkenleri için şu kurallar geçerlidir:
  • При запуске программы для переменных выделяется место в памяти.
  • Они удаляются в конце программы.
  • Переменные создаются один раз, пока выполняется программа.
  • Доступ к переменной зависит от разрешения класса, к которому она принадлежит.
static double daireninAlanı;

Определение фиксированной переменной

Java'da C dilindeki gibi sabit öğe yoktur. 
Sabit işlevinin gören bir değişken tanımı yapılabilir.
static final float PI = 3.1416;

Заключительная фраза

final deyimi bir değişken java’da bir sabit (constant) yerine geçer.
final deyimli değişkenler program boyunca değişmeden kalırlar. 
Diğer değişkenlerden ayırmak için değişkenlerin isimlerini büyük harfle yazmak gelenektir.

Концепция области действия переменных

В Java каждая переменная действительна в пределах области видимости, в которой она определена, и не может быть доступна извне. Давайте проанализируем наш пример.

public class FundamentalsDemo1 {   
      public static void main(String[] args) {
        int x = 10; // known to all code within main  
        if (x == 10) { // start new scope
            int y = 20; // known only to this block  
          // double x = 25; error, variable x already defined      
          // x and y both known in here
            System.out.println("x and y : " + x + " " + y);
            x = y * 2;
        }      
      // y = 100; error y not known here
        
        // x still known here
        System.out.println("x is " + x);
    }
}

Приведение типов

Это присвоение значения, определенного в одном типе, переменной, определенной в другом типе. Это происходит двумя способами:

Автоматическое преобразование типов

Присвоение небольшого значения переменной большего типа. byte -> short -> char -> int -> long -> float -> double

public class MyClass {
  public static void main(String[] args) {
    int myInt = 9;
    double myDouble = myInt; // Automatic casting: int to double    System.out.println(myInt);      // Outputs 9
    System.out.println(myDouble);   // Outputs 9.0
  }
}

Ручное преобразование типа

Присвоение большого значения переменной меньшего типа, что может привести к потере значения. double -> float -> long -> int -> char -> short -> byte

public class MyClass {
  public static void main(String[] args) {
    double myDouble = 9.87;
    int myInt = (int) myDouble; // Manual casting: double to int   
   // System.out.println(myDouble);   // Outputs 9.87
    System.out.println(myInt);      // Outputs 9
  }
}

Ключевые слова, используемые в Java

Присвоение большого значения переменной меньшего типа что может привести к потере
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.