Чтобы различить этих двух братьев, прежде всего, мы должны знать, что они есть. Во -первых, возьмите переменную участника.
Переменные участника
Давайте изучим что -то:
Атрибуты: внешние характеристики; такие как высота человека и вес
Поведение: что вы можете сделать; Например, у людей есть поведение, такое как разговор, игра в баскетбол и т. Д.
На языке Java самая основная единица - это класс, а классы используются для отражения вещей.
То же самое верно для описания вещей с классами классов:
Атрибут: переменные члена в соответствующем классе
Поведение: функции члена в соответствующем классе
Определение класса на самом деле является членом (переменные члена и функции членов) в классе
Расширение: класс - это абстрактная концепция, а объектом является конкретное существование и воплощение класса. Например: автомобиль в жизни может рассматриваться как класс, который мы называем классом автомобиля. Каждый автомобиль имеет цвет и номер шин (может быть определен как атрибут, то есть переменную члена), и каждый автомобиль может работать (то есть поведение автомобиля, соответствующее общей функции элемента класса). Если мы создаем экземпляр автомобиля, мы произведем объект, такой как Mercedes-Benz и BMW (BMW).
ДЕМО1:
открытый класс Car {Private String Color; // определить цвет автомобиля, глобальная переменная Private int numluntai; // Определите номер автомобильной шины, глобальный переменная Public Car (String Color, int numluntai) {super (); this.color = color; this.numluntai = numluntai; } public void run () {System.out.println (this.numluntai + "Wheels" + this.color + "Автомобиль ездит по дороге"); }} открытый класс classtest {public static void main (string [] args) {car bmw = new Car ("black", 4); // Создание седана объекта с именем bmw bmw.run (); }}Результаты работы:
Черный седан с 4 колесами едет по дороге
Среди них цвет и numluntai называются переменными членами автомобиля. Это свойство может быть использовано для описания свойств класса. В противном случае это должно быть определено как локальная переменная.
Например, я в петле является локальной переменной.
для (int i = 0; i <args.length; i ++) {
......
}
Например, переменная записывается методом члена в качестве локальной переменной.
PublicClass Car {Private String Color; // определить цвет автомобиля, глобальная переменная Private int numluntai; // Определите номер автомобильной шины, глобальный переменная Public Car (String Color, int numluntai) {super (); this.color = color; this.numluntai = numluntai; } public void run () {string carname = "bmw"; // Это локальная система переменной. }} publicClass classtest {public static void main (string [] args) {car bmw = new Car ("black", 4); // Создание седана объекта с именем bmw bmw.run (); }}результат:
Черный седан BMW с 4 колесами ездит по дороге
Разница между переменными члена и локальными переменными
Переменные участника:
① Периоды элементов определены в классе и могут быть доступны на протяжении всего класса.
② Установленные переменные элемента устанавливаются с установлением объекта, исчезают с исчезновением объекта и существуют в памяти кучи, где находится объект.
③ Компания переменных членов имеет значения инициализации по умолчанию.
Локальные переменные:
① Локальные переменные определяются только в локальной области, такие как: внутри функций, в рамках операторов и т. Д., И действительны только в области, к которой они принадлежат.
② Локальные переменные существуют в памяти стека. Когда охват их функции заканчивается, переменное пространство будет автоматически выпущено.
③ Локальные переменные не имеют значений инициализации по умолчанию
Принципы, которые необходимо соблюдать при использовании переменных: принцип близости
Во -первых, ищите в локальном объеме, используйте его, если он есть; Затем найдите в позиции участника.
Я могу быть немного смущен, когда увижу это. Позвольте мне разобраться в примере ниже. Если вы думаете об этом внимательно, это на самом деле очень просто.
Давайте сначала посмотрим на простой код.
Сначала я определил класс человека.
Public Class Person {Private Int Age = 1000; // Определить переменные члена, возраст составляет 1000 public void setage (int age) {возраст = возраст; System.out.println («Возраст внутри метода»+возраст); } public void sayshello () {System.out.println («Мой возраст"+возраст+"."); }}Затем создайте объект в основной функции и выведите его.
Человек p = новый человек (); p.setage (20); p.sayhello ();
Какой результат вывода? Дело не в том, что мы предполагали, что мой возраст 20 лет, но следующее:
// Возраст в рамках метода составляет 20 // мой возраст 1000.
На самом деле легко понять, если вы думаете об этом.
Одним из слов, если есть разные имена, то имя переменной в методе представляет переменную члена; Если есть одинаковые имена, то имя переменной в методе представляет только локальную переменную, и она не имеет отношения с переменной -членом.
Итак, во -первых, когда мы создаем объект P Лица P, переменная элемента была инициализирована при создании объекта. Начальное значение переменной элемента составляет 1000.
Когда мы P.Setage (20), 20 фактически работают только в методе набора, поэтому возраст 20 в методе выводится. После выполнения этого предложения 20 разрушен.
Затем выполните SayHello, и возраст в нем представляет значение переменной элемента, так что она все еще 1000.
Если вы все еще не можете понять это здесь, вы можете написать код самостоятельно, чтобы увидеть результаты вывода и испытать его.
Таким образом, когда используется одно и то же имя, мы хотим, чтобы это имя переменной представляло собой переменную члена. Есть ли какой -нибудь способ?
Тогда мы должны поговорить об этом ключевом слова. Мы изменили класс человека на это:
Public Class Person {Private Int Age = 1000; public void setage (int age) {this.age = age; System.out.println («Возраст внутри метода»+возраст); } public void sayshello () {System.out.println («Мой возраст"+возраст+"."); }}Запустите код еще раз и обнаружите, что результат запуска кода становится следующим:
// Возраст в рамках метода составляет 20 // мой возраст 20.
Это представляет текущий объект.
Это. Здесь конкретно указывает на то, что значение возраста P -объекта (то есть возраст переменной элемента объекта P) составляет 20.
Хотя сущность двух является переменной, при использовании существует значительная разница, и вы можете попасть в ловушку, если вы не будете осторожны. Помните первое: в классе, если переменная может использоваться для описания свойств класса, она определяется как переменная -член, в противном случае ее следует определить как локальная переменная. Если вы не можете понять, напишите больше кода, и вы можете понять это.