Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
34
Добавлен:
27.03.2015
Размер:
225.79 Кб
Скачать

Структура java-файла

(классы без внутренних классов и блоков-инициализаторов)

[ package packageName; ]

 

[ import packageOrClassNameToImport;

 

… ]

 

[ accessSpecifier ] class ClassName[ typeParameters ]

// класс

[ extendsOrImplements ] {

 

[ accessSpecifier ] dataType variableName [ = initialValue ] [ , …];

// поле

...

 

[accessSpecifier ] [ typeParameters ] ClassName ( [ argumentsList ] ) {

//конструктор

operatorsList

}

[ accessSpecifier ] [ typeParameters ] retValueDataType

methodName ( [ argumentsList ] ) [ throwsList ] { //метод operatorsList

}

}

[…]

//еще классы и/или интерфейсы

Лексика языка Java

Тексты программ рассматриваются компилятором как последовательность UNICODE-символов в формате UTF-8 (форматы ASCII и Latin-1 являются допустимыми подмножествами UTF-8).

Где угодно можно записать Unicode-символ в таком представлении: \uxxxx, где x – шестнадцатеричная цифра (например, \u0020 – символ пробела).

Идентификатор в языке Java - это последовательность букв (не обязательно латинских), цифр (цифра не может быть первым символом), подчеркиваний ( _ ) и любых валютных символов Unicode (например $, €, £, ¥ …). Идентификаторы «чувствительны» к регистру символов, т.е. long и Long – это разные слова.

Способы записи литералов (123, "строка", 0xfffe, 3.14159, 1e-13, '\t', …) в основном унаследованы из С/С++.

Знаки операций, операторы и комментарии в основном унаследованы от С/С++.

Специальные идентификаторы (зарезервированные слова)

abstract

double

int

strictfp *(1.2)

assert ** (1.4)

else

interface

super

boolean

extends

long

switch

break

false

native

synchronized

byte

final

new

this

case

finally

null

throw

catch

float

package

throws

char

for

private

transient

class

goto ***

protected

true

const ***

if

public

try

continue

implements

return

void

default

import

short

volatile

do

instanceof

static

while

Начнем с operatorsList: Типы данных (1)

Java – язык со строгой типизацией.

Типы данных: примитивные и ссылочные.

Примитивных типов данных в языке Java 8 (нет unsigned):

Тип

Содержит

Размер

Диапазон

boolean

true/false

1 бит

char

символ Unicode

16 бит

от \u0000 до \uFFFF

byte

целое со знаком

8 бит

от –128 до 127

short

целое со знаком

16 бит

от –32768 до 32767

int

целое со знаком

32 бит

от –2147483648 до 2147483647

long

целое со знаком

64 бит

от –9223372036854775808 до

 

 

 

9223372036854775807

float

вещественное

32 бит

от +–1.4Е – 45 до +–3.4023285Е38

double

вещественное

64 бит

от +–4.9Е – 324 до +–1.79769331348623157Е308

Типы данных (2)

Преобразования примитивных типов

 

N

- невозможно;

 

 

 

 

 

 

 

E - требуется явное (explicit) указание типа;

 

 

 

A

- автоматически (automatic);

 

 

 

 

 

A* - автоматически но с возможной потерей младших разрядов

из:

в:

boolean

byte

short

char

int

long

float

double

boolean

 

-

N

N

N

N

N

N

N

byte

 

N

-

A

E

A

A

A

A

short

 

N

E

-

E

A

A

A

A

char

 

N

E

E

-

A

A

A

A

int

 

N

E

E

E

-

A

A*

A

long

 

N

E

E

E

E

-

A*

A*

float

 

N

E

E

E

E

E

-

A

double

 

N

E

E

E

E

E

E

-

Типы данных (3)

Ссылочные типы данных:

объекты (экземпляры классов); массивы (примитивных или ссылочных типов).

Указателей, с которыми можно явно манипулировать, в языке Java нет. Тем не менее, в байт-коде любой экземпляр класса представлен указателем (ссылкой). Операция . в языке Java по существу эквивалентна операции -> в C/C++:

System.out.println( "Hello, World!" );

Здесь имена System и out надо понимать как указатели на объекты, автоматически создаваемые виртуальной машиной при запуске программы на выполнение.

Типы данных (4)

Не существует возможности создавать глобальные переменные или глобальные функции:

Все переменные могут быть либо полями классов, либо локальными переменными методов.

Любая функция может быть объявлена только как метод какого-либо класса.

В языке Java отсутствуют структуры (struct) и объединения (union).

Нет спецификатора typedef, позволяющего давать символические имена производным типам данных и использовать эти имена впоследствии.

Операции (1)

В основном унаследованы от С/С++

P A Операция Тип(ы) операнда(ов)

Действие

15 L .

[ ] …

( )

++ – –

14 R ++ – –

+ –

~

!

объект . член класса

доступ к полю или методу объекта

массив [ целое ] …

доступ к элементу массива

метод ( список аргументов )

вызов метода

переменная

постфиксный инкремент декремент

переменная

префиксный инкремент декремент

число / переменная

унарный плюс минус

целое

битовое дополнение

булево

логическое отрицание

Операции (2)

P

A

Операция

Тип(ы) операнда(ов)

Действие

13

R

new

класс( список

создание объекта

 

 

 

аргументов)

 

 

 

(type)

любой тип

приведение к указанному типу

12

L

* / %

число число

умножение деление остаток

11

L

+

число число

сложение вычитание

 

 

+

строка любой тип

конкатенация строк

10

L

<<

целое целое

сдвиг влево

 

 

>>

целое целое

сдвиг вправо с размножением знака

 

 

>>>

целое целое

сдвиг вправо с дополнением нулем

Операции (3)

P

A

Операция

Тип(ы) операнда(ов)

Действие

9

L

<

<=

число число

меньше / меньше или равно

 

 

>

>=

число число

больше / больше или равно

 

 

instanceof

ссылка тип

сравнение типов

8

L

= =

 

примитив примитив

сравнение на идентичность

 

 

! =

 

примитив примитив

сравнение на неидентичность

 

 

= =

 

ссылка ссылка

сравнение на идентичность

 

 

! =

 

ссылка ссылка

сравнение на неидентичность

Соседние файлы в папке Презентации по Java