Переменные в Java: что это такое и как они используются

Переменные в Java: что это такое и как они используются

22 ноября 2022 г.

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


  1. Переменные экземпляра или поля экземпляра: это переменные, объявленные внутри класса без ключевого слова static, но вне метода, конструктора или блока кода. Они могут быть объявлены в любом месте внутри класса. Вы можете объявить их с модификатором доступа или без него, например (public, private, protected или default (без ключевого слова)).

public class MyClass {

  //instance field 1
  private String instanceField1;

  public MyClass(){} //Constructor

  //instance field 2
  public int anotherInstanceField2;

  public void setInstanceField(String parameterVariable) {...} //instance method

  //instance field 3
  boolean instanceField3;

  public static void main(String[] args) {
    System.out.println("field 1 value: " + instanceField1); // = null
    System.out.println("field 2 value: " + anotherInstanceField2); // = 0
    System.out.println("field 3 value: " + instanceField3); // = 0
  }
}

Если полю экземпляра не присваивается значение во время объявления, ему присваивается значение по умолчанию, равное нулю, если это примитивный тип, например (int, boolean, long, float,..), или null, если это не примитивный тип, например (String , Целое, AnyClass,..)

Они называются полями или переменными экземпляра, потому что они принадлежат экземпляру любого объекта, созданного из класса, в котором они объявлены.

public Main {

  public static void main(String[] args) {
    MyClass obj1 = new MyClass();
    MyClass obj2 = new MyClass();

    //Now we can access every 'public' field declared in the MyClass class
    // from the newly created object 'obj'

    obj1.anotherInstanceField2 = 11;
    obj2.anotherInstanceField2 = 33;

    System.out.println(obj1.anotherInstanceField2); // prints '11'
    System.out.println(obj2.anotherInstanceField2); // prints '33'
  }
}

Таким образом, каждое поле экземпляра уникально для своего объекта, как видно из приведенного выше фрагмента. obj1 и obj2 имеют уникальные значения, присвоенные их соответствующим полям экземпляра.

  1. Поля класса или статические поля: это поля, объявленные с ключевым словом static. Они объявляются внутри класса, но вне метода, конструктора или блока кода. Их также можно объявлять в любой позиции внутри класса с модификатором доступа или без него, например (public, private, protected или default (без ключевого слова)).

public class MyClass {

  //static field
  public static String staticField;

  public MyClass(){} //Constructor

}

class Main {

  public static void main(String[] args) {

    MyClass obj = new MyClass();

    obj.staticField //will throw Not defined Error

    //Now we cannot access the static field declared in MyClass class from the
     // newly created object 'obj' because static fields are not attached to any
    // object. They belong solely to the class they are declared and can only be
    // accessed from their class.

    MyClass.staticField = "I am a static field";
    System.out.println(MyClass.staticField); // prints 'I am a static field'
  }
}

Доступ к статическим полям возможен только через их классы, а не из какого-либо объекта, как показано в приведенном выше фрагменте.

  1. Параметры или переменные-аргументы: это переменные, объявленные внутри конструкции метода, между открытыми '(' и закрытыми ')'. фигурные скобки сигнатуры метода. Они используются для передачи значений или объектов в метод.

public class MyClass {

  //instance field
  public String instanceField;

  public MyClass(){} //Constructor

  //instance method with a parameter variable
   public void setInstanceField(String parameterVariable) {
      instanceField = parameterVariable;
   }
}

class Main {

  public static void main(String[] args) {

    MyClass obj = new MyClass();

    obj.setInstanceField("From a paramater variable");

    System.out.println(obj.instanceField); // prints 'From a paramater variable'
  }
}

  1. Локальные переменные. Это переменные, объявленные внутри метода или любого блока кода, например внутри блока операторов if, цикла for, цикла while, блока операторов switch и т. д.

public Main {

  public static void main(String[] args) {
    MyClass obj1 = new MyClass(); // 'obj1' is local reference variable

    int id = 1; // 'name' is a local variable here.

    if (id > 1) {
        String tempName = "Austin"; // 'tempName' is a local reference variable
     }
  }
}

Вы заметите использование «ссылки» с некоторыми переменными, в то время как локальная переменная «id» не упоминалась как ссылочная переменная.

Любая переменная, не являющаяся примитивной, является ссылочной.

Например, obj1 — это переменная типа 'MyClass', tempName — это переменная типа 'String'. и оба типа не являются примитивными, в то время как id является переменной типа 'int', которая, следовательно, является примитивным типом данных, а не ссылочной переменной.

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

Здоровья…🥂✨


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE