Недавно я использовал Think in Java, которую я смотрел, когда уходил с работы. Я чувствовал, что это сильно отличалось от того, что я смотрел его. Давайте поговорим о отношениях между объектами и ссылками в Java, а также о концепции внутренних классов.
1. Все на Java - это объект
Что такое объект оператора в Java? Ответ - это цитата, которая похожа на указатель в C или C ++.
Если у вас есть ссылка, вы должны связать его с объектом в настоящее время, в противном случае ссылка не будет оставлена на ваш контроль, как вы думаете. Например, вы создаете ссылку на строку:
Строка S;
Это не связано с каким -либо объектом в настоящее время. Если в настоящее время вы выполняете некоторые операции, такие как вызов некоторых методов строки, определенно будут проблемы (кроме некоторых основных типов, потому что, когда вы их определяете, они будут присвоены первоначальному значению), поэтому вы должны связать деньги с объектом при его использовании:
String s = new String ();
или
String S = «Меня зовут Аджун»;
Просто сделай это так.
2. Как общаться с объектами
В Java объект обычно создается через новое, чтобы связать с ссылками, такими как:
String s = new String ("меня зовут Ajun"); Это не только создает объект для ассоциации ссылок, но и инициализирует его для коллег, но и создает наш собственный тип объекта.
3. Место хранения
(1) стек: Как правило, стек сохраняет ссылки и основные переменные типа. Стек в основном выделяет и выпускает память, перемещая указатель стека вверх и вниз.
Основные переменные типа не подходят для нового творения, потому что они занимают меньше памяти.
(2) Куча: используется для хранения Java -объектов. Когда программа выполняет новую, кучу выделяет пространство на этот объект. Помните, что куча использует больше времени для распределения и отпускания памяти, чем стек для хранения и выпуска памяти. Вот почему основные переменные типа должны храниться в стеке, поскольку используются переменные базового типа наиболее часто, часто хранят и выпускайте память, а при использовании большего количества производительности можно представить.
4. Внутренний класс
(1) Основные знания внутренних категорий:
Как правило, классы, определенные внутри классов Java, становятся внутренними классами, можно разделить на: классы, определенные вне тела метода, классы, определенные внутри метода, и статические внутренние классы (только определены вне метода), анонимные внутренние классы Описание:
Определите класс вне метода:
Доступ к переменным элемента класса (статический, нестатический) можно получить. Чтобы убедиться, что переменные члена класса могут быть правильно упомянуты, вы должны сначала создать создание объекта внешнего класса, прежде чем создавать разрешения на доступ к объекту во внутреннем классе. Вы можете относиться к нему как к переменной -члену класса, поэтому вы поймете это гораздо больше.
Классы, определенные в теле метода;
Доступ к переменным элемента класса (статический, нестатический) можно получить. Чтобы убедиться, что переменные элемента в классе можно было правильно ссылаться, вы должны сначала создать создание объекта внешнего класса, прежде чем создавать объект внутреннего класса не может иметь права доступа, и просто рассматривать его как локальную переменную метода.
Статический внутренний класс:
Доступ к любому анонимному внутреннему классу только путем доступа к статическим переменным члена класса:
Доступ к переменным элемента класса (статический, нестатический) можно получить. Чтобы убедиться, что переменные элемента в классе можно было правильно ссылаться, необходимо создать экземпляр объекта внешнего класса, прежде чем не может иметь экстремирование объекта внутреннего класса (2). Роль внутреннего класса может очень хорошо скрыть класс. Как правило, класс не разрешает частную защиту доступа по умолчанию.
Внутренние классы могут реализовать множественное наследование, создавая характеристики, которые Java не может наследовать больше (3), примеры
пакет com.ajun.test.innerclass.example; / ** * Фруктовый контент * @author Administrator * *// Public Interface Contents {String value (); } пакет com.ajun.test.innerclass.example; / ** * Фруктовый пункт назначения * @author Administrator * */ public interface destination {// string string readlabel (); } пакет com.ajun.test.innerclass.example; открытый класс товары {частная строка des = "is ruit !!"; // Метод внешний контент частного класса реализует содержание {частная строка name = "apple"+des; @Override public String value () {return name; }} // Внешний частный класс Gdestination реализует назначение {Private String Label; Private Gdestination (String Label) {this.label = label; } @Override public String readlabel () {return label; }} // анонимный внутренний класс публичный пункт назначения getDestination (final String label) {return new destination () {@override public String readlabel () {return label; }}; } public destination dest (String s) {return new Gdestination (ы); } public Contents content () {return new Content (); } public destination dest2 (String s) {class Gdestination реализует назначение {private String label; Private Gdestination (String Label) {this.label = label; } @Override public String readlabel () {return label; }} вернуть новое Gdestination (S); }} пакет com.ajun.test.innerclass.example; открытый тест класса {public static void main (string [] a) {Govel GS = new Goals (); Содержание C = gs.content (); Пункт назначения D = Gs.dest ("Пекин"); System.out.println (c.value ()); System.out.println (D.ReadLabel ()); Пункт назначения D1 = Gs.GetDestination ("Shanghai"); System.out.println (d1.readlabel ()); System.out.println (gs.dest2 ("tianjin"). Readlabel ()); }}Контент и Gdestination хорошо скрыты. Призыв на улицу, вы не знаете, какой класс называется, чтобы этот класс имеет множественные функции наследования.
Выход;
Apple - это ruit !! Пекин Шанхай Тяньцзинь