Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
56_Java.pdf
Скачиваний:
210
Добавлен:
18.02.2016
Размер:
2.39 Mб
Скачать

Скачано с сайта http://ivc.clan.su

Типы данных в Java

Java — строго типизированный язык. Это означает, что тип каждой переменной должен быть объявлен.

Во время компиляции должен быть известен тип каждой переменной и каждого выражения. Компилятор проверяет соответствие типов и предотвращает некорректные операции присваивания.

Используются следующие типы данных: простые типы; ссылочные (или объектные) типы.

Простые типы

Простые типы данных в Java имеют фиксированную разрядность, не зависящую от платформы. Разрядность фиксирована на уровне языка.

В Java определены 8 простых типов данных:

Тип

Содержание

Разрядность (бит)

Значение по умолчанию

boolean

Логическое значение true или false

-

false

byte

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

8

0

char

Unicode-символ

16

‘\u0000’

short

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

16

0

int

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

32

0

long

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

64

0L

float

Число с плавающей точкой

32

0.0F

double

Число с плавающей точкой

64

0.0D

Замечания:

1.В Java, в отличие от C++, нет беззнаковых целых типов.

2.Тип char используется для хранения символов в кодировке Unicode, которая позволяет работать с алфавитами различных языков. Первые 256 символов соответствуют стандарту ASCII.

3.Все простые типы данных по умолчанию инициализируются (см. табл.).

4.В Java существуют специальные классы (классы-оболочки) для простых типов. Они содержатся в пакете java.lang и имеют очевидные имена: Integer, Float, Double, Short, Byte, Character, Boolean. В этих классах определены полезные

методы преобразования типов, например, методы преобразования строк, состоящих из цифр, в числа. В классе Integer, в частности, есть метод

static int parseInt(String s)

преобразующий строку в целое число.

Кроме того, в классах-оболочках имеются поля-константы MAX_VALUE, MIN_VALUE, которые хранят граничные значения диапазона соответствующего типа данных.

5.Приведение типов в Java осуществляется автоматически и с помощью операции явного приведения типов.

Неявное приведение простых типов (преобразование типов)

Можно преобразовать любой тип из последовательности к любому другому, расположенному справа:

byte , short, int, long, float, double;

char, int, long, float, double;

Явное приведение простых типов осуществляется с помощью оператора

(тип) имя_переменной

Внимание! Нельзя выполнять приведение целого типа эквивалентом значения false, а ненулевая величина необходимости можно выполнять следующим образом:

...

boolean boolx; int intx;

...

boolx = intx != 0; intx = boolx ? 1 : 0;

ктипу boolean и наоборот. В Java значение 0 не является

-значения true, в отличие от C++. Преобразования при

Ссылочные (объектные) типы

Объектами в Java являются: экземпляр класса;

массив.

7

Скачано с сайта http://ivc.clan.su

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

Ссылка является своего рода указателем, но с ней нельзя выполнять операции, допустимые в языках С и C++.

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

типы классов;

типы интерфейсов;

типы массивов.

Имя любого класса (интерфейса) в Java может рассматриваться как имя типа данных.

Замечания

Объявление переменной ссылочного типа не создаёт соответствующий объект. Для создания объекта следует использовать оператор new.

Для всех ссылочных типов значение по умолчанию равно null. Слово null в Java используется для

обозначения так называемой нулевой ссылки.

Пример

...

Color c1, с2; // переменные ссылочного типа Color при объявлении // инициализированы значениями null

...

 

 

 

c1

= new Color(100, 100, 100); // создание

1-го объекта типа

Color

с2

= new Color(200, 200, 200); // создание

2-го объекта типа

Color

c1

= с2;

// теперь переменные с1 и с2 хранят ссылку на 2-й объект

...

// Color 1-й объект Color будет удален сборщиком мусора

Строки в Java

Язык Java не имеет простого строкового типа. Для работы со строками используется ссылочный тип String. Класс String содержится в пакете java.lang. Любая строка в Java является объектом и к ней применимы все действия, выполняемые над объектами.

Строку можно создать с помощью оператора new. Возможен также неявный способ создания

объектов типа String:

String strl = "Новая строка";

String str2 = new String ("Новая строка");

• Строки можно объединять, используя оператор конкатенации строк (единственный в Java перегруженный оператор «+»):

str2 = strl + "еще одна строка";

Класс String предназначен для работы со строковыми константами (литералами). Методы класса, модифицирующие объект String, реально не изменяют его, а создают дополнительный объект String. В пакете java.lang имеется класс StringBuffer, позволяющий создавать строковые объекты, которые можно изменять.

В Java в каждом классе определен метод toString(), который предназначен для преобразования объектов этого класса в строку (метод наследуется от класса Object).

Массивы в Java

Массивы в Java, как и экземпляры классов, являются объектами.

Массивы представляют собой наборы однотипных элементов и могут содержать данные простых типов и данные ссылочных типов, т.е. ссылки на объекты (экземпляры классов или другие массивы).

Для задания массива необходимо выполнить следующие действия:

1.Объявление массива

При этом задается тип элементов массива, массиву присваивается имя, создается ссылка на массив. Например:

int myIntArr[]; // объявление массива данных целого типа

int[] myIntArr; // более предпочтительный вариант размещения скобок

8

Скачано с сайта http://ivc.clan.su

//int - тип элемента массива, int[ ] - тип массива;

//myIntArr - имя массива, т.е. идентификатор переменной,

//ссылающейся на массив. Переменная инициализируется

//значением null.

String[] myStrArr; // объявление массива объектов-строк

2.Создание объекта-массива

При создании массива задается количество элементов (размер массива), который в дальнейшем

не может быть изменен. Массив можно создать:

• с помощью оператора new: myIntArr = new int[10];

Можно объединить оператор объявления массива с оператором new:

String[] myStrArr = new String[15];

При создании массива переменной типа массива присваивается ссылка на объект-массив. Выделяется память для набора элементов простого или набора элементов ссылочного типа.

с помощью неявного использования оператора new при инициализации.

3.Инициализация массива

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

нулевыми значениями, а элементы массивов ссылочных типов (т.е. массивов объектов) — нулевыми ссылками (null).

Вообще массив объектов и массив простых типов различаются только тем, что массив объектов хранит ссылки на объекты, а массив простых типов — реальные значения данных!

Массив можно инициализировать

списком в фигурных скобках (в том числе при объявлении);

присваиванием значений элементам массива с указанными индексами.

(См. пример ArrayDemo.java.)

При инициализации каждому элементу массива простого типа присваивается значение простого типа, а элементу массива объектов, т.е. переменной ссылочного типа, - ссылка на объект, формируемая при создании объекта соответствующего типа с помощью оператора new!

Пример:

Integer[] a = new Integer[]{new Integer(10), new Integer(100), ...}; Integer[] b = new Integer[5]; b[0] = new Integer(10);

b[1] = new Integer(100);

Замечания:

1)Индексы массива должны иметь либо целый тип int, либо более короткий целый тип, который можно преобразовать к int.

2)Java поддерживает многомерные массивы (массивы массивов), в том числе иррегулярные.

Например:

int[][] arr1 = new int [5] [10]; int[][] arr2 = new int [5] [];

Первый размер указывается обязательно, другие размеры можно задавать позднее, создавая с помощью оператора new объекты-массивы, размещаемые в многомерном массиве.

3)Индексы массивов проверяются при выполнении Java-приложений. В C++ среда выполнения ничего не знает о массиве, который задается указателем, и не предупреждает о возможных ошибках.

В Java массив — это объект, в котором фиксируется информация о размере массива. JVM проверяет

выход за границы массива, и в случае необходимости генерирует исключение:

ArrayIndexOutOfBoundsException

4) Определение размера массива

Массивы в Java являются объектами и неявно происходят от суперкласса всех классов java.lang.Object. Для определения размера не требуется оператор, подобный sizeof из C/C++. Это делается с помощью доступного только для чтения поля length объекта-массива (см. пример

ArrayDemo.java).

9

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]