Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Локальные переменные

Читайте также:
  1. Дилеммы ориентации и эталонные переменные
  2. Знакопеременные ряды
  3. И ЛОКАЛЬНЫЕ ТИПЫ ВЫШИВКИ
  4. Линии уровня. Локальные экстремумы.
  5. ЛОКАЛЬНЫЕ ГНОЙНО-СЕПТИЧЕСКИЕ ЗАБОЛЕВАНИЯ
  6. Локальные классы, как и все локальные переменные, известны только в блоке, в котором они определены. Они могут быть безымянными (anonymous classes).
  7. Локальные факторы
  8. Переменные «расстояния», возраста, пола и религии
  9. Поля класса при объявлении обнуляются, локальные переменные автоматически не инициализируются.

Кодировка:

1. Java ориентирован на Unicode

a. Первые 128 символов почти идентичны набору ASCII

b. Символы Unicode задаются с помощью escape-последовательностей
\u262f, \uu2042, \uuu203d

c. Java чувствителен к регистру!

Исходный код разделяется на:

Пробелы

· ASCII-символ SP, \u0020, дес. код 32

· ASCII-символ HT, \u0009, дес. код 9

· ASCII-символ FF, \u000c, дес. код 12

· ASCII-символ LF, символ новой строки

· ASCII-символ CR, возврат каретки

· символ CR, за которым сразу следует символ LF

Комментарии

Лексемы:

1)Идентификаторы

2)Служебные слова class, public, const, goto

3)Литералы

4)Разделители { } [ ] ();.,

5)Операторы = > <!?: == && ||

 

// Комментарий Символы после // и до конца текущей строки игнорируются

/* Комментарий */ Все символы, заключенные между /* и */, игнорируются

 

/** Комментарий */ Комментарии документирования - Начинаются с /**, заканчиваются */

В строках начальные символы * и пробелы перед ними игнорируются

Допускают использование HTML-тэгов, кроме заголовков

Специальные тэги
@see, @param, @deprecated

 

Типы данных:

1) Ссылочные. К ссылочным типам относятся типы классов (в т.ч. массивов) и интерфейсов

Переменная ссылочного типа способна содержать ссылку на объект, относящийся к этому типу.Ссылочный литерал null

 

· Предназначены для работы с объектами

· Переменные содержат ссылки на объекты

· Ссылка – это не указатель!

· Тип переменной определяет контракт доступа к объекту

2) Примитивные (простые) Булевский (логический) тип

boolean – допускает хранение значений true или false

Целочисленные типы

char – 16-битовый символ Unicode

byte – 8-битовое целое число со знаком

short – 16-битовое целое число со знаком

int – 32-битовое целое число со знаком

long – 64-битовое целое число со знаком

Вещественные типы

float – 32-битовое число с плавающей точкой (IEEE 754-1985)

double – 64-битовое число с плавающей точкой (IEEE 754-1985)

·

· Предназначены для работы со значениями естественных, простых типов

· Переменные содержат непосредственно значения

Литералы:

1. Булевы
true false

2. Символьные
'a' '\n' '\\' '\377' '\u0064'

3. Целочисленные
29 035 0x1D 0X1d 0xffffL

4. По умолчанию имеют тип int

5. Числовые с плавающей запятой
1..1 1e1 1e-4D 1e+5f

6. По умолчанию имеют тип double

7. Строковые
"Это строковый литерал" ""

Модификаторы объявления класса:

1. public
Признак общедоступности класса

2. abstract
Признак абстрактности класса

3. final
Завершенность класса (класс не допускает наследования)

4. strictfp
Повышенные требования к операциям с плавающей точкой

Поля класса:

Объявление поля:

[модификаторы] <тип> {<имя> [= <инициализирующее выражение>]};

double sum = 2.5 + 3.7;

public double val = sum + 2 * Math.sqrt(2);

Если поле явно не инициализируются, ему присваивается значение по умолчанию его типа (0, false или null)

 

Модификаторы полей: модификаторы доступа

static поле статично (принадлежит контексту класса)

final поле не может изменять свое значение после инициализации

transient поле не сериализуется (влияет только на механизмы сериализации)

volatile усиливает требования к работе с полем в многопоточных программах

 

n Методы: Объявление метода:

[модификаторы] <тип> <сигнатура> [throws исключения] {<тело>}

class Primes {

static int nextPrime(int current) {

<Вычисление простого числа в теле метода>

}

}

Модификаторы методов:

Модификаторы доступа

Abstract абстрактность метода (тело при этом не описывается)

Static статичность метода (метод принадлежит контексту класса)

Final завершенность метода (метод не может быть переопределен при наследовании)

Synchronized синхронизированность метода (особенности вызова метода в многопоточных приложениях)

Native «нативность» метода (тело метода не описывается, при вызове вызывается метод из native-библиотеки)

Strictfp повышенные требования к операциям с плавающей точкой

Особенности методов:

1)Для нестатических методов вызов через ссылку на объект или в контексте объекта
reference.method();
methodReturningReference().method();

 

2)Для статических методов вызов через имя типа, через ссылку на объект или в контексте класса
ClassName.staticMethod();
reference.staticMethod();
staticMethodReturningReference().method();

 

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

На время выполнения метода управление передается в тело метода

Возвращается одно значение простого или объектного типа
return someValue;

Аргументы передаются по значению, т.е. значения параметров копируются в стек:

для примитивных типов копируются сами значения

для ссылочных типов копируется значение ссылки

Перегруженными являются методы с одинаковыми именами и различными сигнатурами

 

Создание объектов:

Создание ссылки и создание объекта – различные операции. Используется оператор new, он возвращает ссылку на объект. После оператора указывается имя конструктора и его параметры

Body sun;

sun = new Body();

sun.idNum = Body.nextID++;

sun.name = "Sun";

sun.orbits = null;

Body earth = new Body();

earth.idNum = Body.nextID++;

earth.name = "Earth";

earth.orbits = sun;

Конструкторы: Память для объекта выделяет оператор new. Конструкторы предназначены для формирования начального состояния объекта. Правила написания конструктора сходны с правилами написания методов. Имя конструктора совпадает с именем класса. Для конструкторов разрешено использование только модификаторов доступа.При написании конструктор не имеет возвращаемого типа оператор возврата return прекращает выполнение текущего конструктора. Конструкторы могут быть перегружены. Конструкторы могут вызывать друг друга с помощью ключевого слова this в первой строке конструктора.

· Если в классе явно не описан ни один конструктор, автоматически создается т.н. конструктор по умолчанию, не имеющий параметров

o Если в классе описан хотя бы один конструктор, то автоматически конструктор по умолчанию не создается

o Также конструктором по умолчанию называют конструктор, не имеющий параметров

class Body {

public long idNum;

public String name = "No Name";

public Body orbits = null;

private static long nextID = 0;

Body() {

idNum = nextID++;

}

Body(String name, Body orbits) {

this();

this.name = name;

this.orbits = orbits;

}

}

Деструкторы?: В ряде языков деструкторы выполняют действия, обратные действию конструкторов: освобождают память, занимаемую объектом, и «деинициализируют» объект (освобождают ресурсы, очищают связи, изменяют состояние связанных объектов)

Если после вызова деструктора где-то осталась ссылка (указатель) на объект, ее использование приведет к возникновению ошибки

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

Процесс сборки мусора можно инициировать принудительно

Для явного удаления объекта следует утратить все ссылки на этот объект и инициировать сбор мусора Взаимодействие со сборщиком осуществляется через системные классы java.lang.System и java.lang.Runtime

 

Блоки инициализации: Если некоторые действия по инициализации должны выполняться в любом варианте создания объекта, удобнее использовать блоки инициализации. Тело блока инициализации заключается в фигурные скобки и располагается на одном уровне с полями и методами. При создании объекта сначала выполняются инициализирующие выражения полей и блоки инициализации (в порядке их описания в теле класса), а потом тело конструктора

class Body {

public long idNum;

public String name = "No Name";

public Body orbits = null;

private static long nextID = 0;

{

idNum = nextID++;

}

Body(String name, Body orbits) {

this.name = name;

this.orbits = orbits;

}

}

Статическаяинициализация:

class Primes {

static int[] knownPrimes = new int[4];

static {

knownPrimes[0] = 2;

for (int i=1; i<knownPrimes.length; i++)

knownPrimes[i] = nextPrime(i);

}

//nextPrime() declaration etc.

}

· Статический блок инициализации выполняет инициализацию контекста класса

· Вызов статического блока инициализации происходит в процессе загрузки класса в виртуальную машину

Модификаторы доступа:

private Доступ только в контексте класса (package, default, none) Доступ для самого класса и классов в том же пакете

protected Доступ в пределах самого класса, классов-наследников и классов пакета

public Доступ есть всегда, когда доступен сам класс

Точка входа программы:

· С параметрами-аргументами

· Без возвращаемого значения

· Метод

· Статический

· Доступный

class Echo {

public static void main(String[] args) {

for (int i = 0; i < args.length; i++)

System.out.println(args[i] + " ");

System.out.println();

}

}




Дата добавления: 2015-09-11; просмотров: 78 | Поможем написать вашу работу | Нарушение авторских прав

Объявление, инициализация, заполнение | Встроенный в язык механизм проверки и обработки | Особый синтаксис описания обработчиков исключений | Виды наследования | Super(...) | Виды наследования | Лекция №4 | OutputStreamWriter | Лекция №5 | Параметризованные фабричные методы |


lektsii.net - Лекции.Нет - 2014-2025 год. (0.021 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав