English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Java

Java Управление потоком

Java Массив

Java Ориентированность на объекты (I)

Java Ориентированность на объекты (II)

Java Ориентированность на объекты (III)

Обработка исключений Java

Java Список (List)

Java Queue (очередь)

Java Map коллекция

Java Set коллекция

Java Вход/Выход (I/O)

Java Reader/Writer

Другие темы Java

Типы переменных Java

В языке Java все переменные должны быть объявлены перед использованием. Основной формат объявления переменной如下:

type identifier [ = value][, identifier [ = value] ...];

Формат: type - тип данных Java. identifier - имя переменной. Можно声明多个 переменных одного типа, разделенных запятыми.

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

int a, b, c; // три целых числа int a, b, c
int d = 3, e = 4, f = 5; // три целых числа d, e, f с начальными значениями
byte z = 22; // переменная z声明并 инициализирована
String s = "w3codebox"; // переменная s声明并 инициализирована
double pi = 3.14159; // переменная double pi
char x = 'x'; // переменная x имеет значение символа 'x'.

Типы переменных, поддерживаемые языком Java:

  •  Классовая переменная: переменная, независимая от метода, с ключевым словом static.

  • Пример переменной: переменная, независимая от метода, без ключевого слова static.

  • Локальная переменная: переменная в методе класса.

Пример

public class Variable{
    static int allClicks = 0; // классовая переменная
 
    String str = "hello world"; // пример переменной
 
    public void method(){
 
        int i = 0; // локальная переменная
 
    }
}

Java локальная переменная

  • Локальные переменные объявлены в методе, конструкторе или блоке;

  • Локальные переменные создаются при выполнении метода, конструктора или блока, и уничтожаются после их выполнения;

  • Модификаторы доступа не могут использоваться для локальных переменных;

  •  Локальные переменные видны только в методе, конструкторе или блоке, в котором они объявлены;

  • Локальные переменные распределяются на стеке.

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

Пример 1

В следующем примере age является локальной переменной. Определена в методе pupAge(), её область видимости ограничена этим методом.

package com.w3codebox.test;
 
public class Test{ 
   public void pupAge(){
      int age = 0;
      age = age + 7;
      System.out.println("小狗的年龄是: " + age);
   }
   
   public static void main(String[] args){
      Test test = new Test();
      test.pupAge();
   }
}

Результат компиляции и выполнения примера приведен выше:

小狗的年龄是: 7

Пример 2

В следующем примере переменная age не была инициализирована, поэтому при компиляции会出现错误:

package com.w3codebox.test;
 
public class Test{ 
   public void pupAge(){
      int age;
      age = age + 7;
      System.out.println("小狗的年龄是 : " + age);
   }
   
   public static void main(String[] args){
      Test test = new Test();
      test.pupAge();
   }
}

Результат компиляции и выполнения примера приведен выше:

Test.java:4:variable number might not have been initialized
age = age + 7;
         ^
1 error

Примерные переменные

  • Примерные переменные объявлены в классе, но вне методов, конструкторов и блоков;

  • После того как объект был создан, значения всех примерных переменных становятся определенными;

  • Примерные переменные создаются при создании объекта и уничтожаются при его уничтожении;

  • Значение примерных переменных должно быть использовано至少 одним методом, конструктором или блоком, чтобы внешние элементы могли получить информацию о примерных переменных через эти методы;

  • Примерные переменные могут быть объявлены до или после их использования;

  • Модификаторы доступа могут использоваться для примерных переменных;

  • Примерные переменные видны для методов, конструкторов или блоков в классе. В общем случае примерные переменные должны быть объявлены как частные. Использование修饰ителей доступа позволяет сделать примерные переменные видимыми для подклассов;

  • Примерные переменные имеют значения по умолчанию. Значение по умолчанию для числовых переменных составляет 0, для логических переменных false, для типов ссылок null. Значение переменной может быть указано при её объявлении или в конструкторе;

  • Примерные переменные могут быть напрямую доступы по имени переменной. Но в статических методах и других классах, следует использовать полное имя: ObejectReference.VariableName.

Пример

Код файла Employee.java:

import java.io.*;
public class Employee{
   // Эта переменная экземпляра видна для подклассов
   public String name;
   // Приватная переменная, видна только в этом классе
   private double salary;
   // Назначение значения name в конструкторе
   public Employee(String empName){
      name = empName;
   }
   // Установка значения salary
   public void setSalary(double empSal){
      salary = empSal;
   }  
   // Вывод информации
   public void printEmp(){
      System.out.println("Имя: " + name);
      System.out.println("Зарплата: " + salary);
   }
 
   public static void main(String[] args){
      Employee empOne = new Employee("w3codebox");
      empOne.setSalary(1000.0);
      empOne.printEmp();
   }
}

Результат компиляции и выполнения примера приведен выше:

$ javac Employee.java 
$ java Employee
Имя: w3codebox
Зарплата: 1000.0

Классовые переменные (статические переменные)

  • Классовые переменные, также называемые статическими переменными, объявляются с помощью ключевого слова static в классе, но должны быть вне методов.

  • Независимо от того, сколько объектов создает класс, класс имеет только одну копию классовых переменных.

  • Статические переменные, кроме как констант, редко используются. Константы - это переменные, объявленные как public/private, final и static, значение которых после инициализации не может быть изменено.

  •  Статические переменные хранятся в статическом хранилище. Часто они объявляются как константы, и редко используются отдельно с ключевым словом static.

  • Статические переменные создаются при первом обращении и уничтожаются в конце программы.

  • Имеют такую же видимость, как и переменные примера. Однако, чтобы переменные были видны пользователям класса, большинство статических переменных объявляются как public.

  •  Значение по умолчанию и переменные примера схожи. Значение по умолчанию для числовых переменных - 0, для логических переменных - false, для ссылочных типов - null. Значение переменной можно определить при ее объявлении или в конструкторе. Кроме того, статические переменные можно инициализировать в статическом блоке.

  • Статические переменные можно определить следующим образом:ClassName.VariableName方式访问。

  • Классовые переменные, объявленные как public static final, должны иметь названия с заглавных букв. Если статические переменные не являются public и final, их имя должно соответствовать именам переменных примера и локальных переменных.

Пример:

Код файла Employee.java:

import java.io.*;
 
public class Employee {
    // salary является статическим частным переменной
    private static double salary;
    // DEPARTMENT является константой
    public static final String DEPARTMENT = "разработчики";
    public static void main(String[] args){
    salary = 10000;
        System.out.println(DEPARTMENT+"Средняя зарплата:"+salary);
    }
}

Результат компиляции и выполнения примера приведен выше:

Средняя зарплата разработчиков: 10000.0

Примечание:Если другой класс хочет получить доступ к этой переменной, он может сделать это так:Employee.DEPARTMENT.

В этой главе мы изучили типы переменных Java, в следующей главе мы рассмотрим использование модификаторов Java.