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

Глава 3. Типы данных, переменные и массивы 79

for (i=0; i<4; i++) { for(j=0; j<4; j++)

System. out .print (m[i] [j] + " "); System. out .println ( ) ;

Когда вы выполните эту программу, то получите следующий вывод:

0.0 0.0 0.0 0.0 0.0 1.0 2.0 3.0 0.02.04.06.0 0.0 3.0 6.0 9.0

Как видите, каждая строка в массиве инициализирована, как указано в спи­сках инициализации.

Рассмотрим еще один пример, который использует многомерный массив. Следующая программа создает трехмерный массив 3x4x5, затем заполняет каждый элемент произведением его индексов и, наконец, отображает эти значения на экран.

// Демонстрирует трехмерньм массив. class threeDMatrix {

public static void main (String args [] ) {

int threeD[] [] [] = new int [3] [4] [5] ;

int i, j, k;

for(i=0; i<3; i++) for(j=0; j<4; j++) for(k=0; k<5; k++) threeD[i] [j] [k] = i * j * k;

for(i=0; i<3; i++) ( for(j=0; j<4; j++) { for(k=0; k<5; k++)

System.out.print(threeD[i] [j] [k] + " "). System.out.println (); }

System.out.println(}; } } }

Эта программа генерирует следующий вывод:

00000 00000

Часть I. Язык Java

00000 00000

00000 01234 02468 О 3 б 9 12

00000 02468 О 4 8 12 16 О 6 12 18 24

Альтернативный синтаксис объявления массива

Существует иная форма, которая может использоваться для объявления мас­сива:

type[ ] var-name;

Здесь квадратные скобки следуют за спецификатором типа, а не именем пе-ременной массива. Например, следующие два объявления эквивалентны:

int al[] = new int[3]; int[] a2 = new int[3];

Представленные здесь объявления также эквивалентны:

char twodi[][] = new char[3][4]> char[] [] twod2 = new char[3] [4];

Эта альтернативная форма объявления включена, главным образом, для удобства.

Несколько слов относительно строк

Как вы, возможно, заметили, в предшествующем обсуждении типов данных и массивов не было никакого упоминания о строках или строковом типе данных. Это не потому, что язык Java не поддерживает такой тип, — он это делает. Дело в том, что строчный тип Java, называемый string, — не про­сто массив символов (как строки в C/C++). Скорее, string определяет объ­ект, и полное описание этого требует понимания нескольких объектно-ориентированных свойств. Поэтому о нем будет сказано позже, после опи­сания объектов. Однако, для того чтобы вы могли использовать простые строки в примерах программ, сделаем следующее краткое введение. Тип string используется, чтобы объявлять строковые переменные. Вы мо­жете также объявлять массивы строк. string-переменной может быть на­значена строковая константа (строка символов в двойных кавычках).

Глава 3. Типы данных, переменные и массивы 81_

Переменная типа string может быть назначена другой переменной типа string. Разрешено использовать объект типа string как аргумент в методе println(). Например, рассмотрим следующий фрагмент:

String str = "Это тест"; System.out.println(str) ;

Здесь str — объект типа string. Ему назначена строка "Это тест". Она вы­водится на экран методом println ().

Как вы увидете позже, объекты типа string имеют много специальных свойств и атрибутов, которые делают их весьма мощными и удобными в ис­пользовании. Однако в следующих нескольких главах вы будете применять их только в самой простой форме.

Замечание для программистов C/C++ по поводу указателей

Если вы опытный программист C/C++, то знаете, что эти языки обеспечи­вают поддержку для указателей. Однако никакого упоминания об указателях не было сделано в текущей главе. Причина проста — Java не поддерживает и не допускает указателей. (Или, более точно, Java не поддерживает указатели, которые доступны и/или изменяемы программистом.) Язык Java не разре­шает указатели, потому что, сделав это, он позволил бы Java-апплетам на­рушать межсетевую защиту между средой выполнения Java и главной ЭВМ. (Вспомните, указателю можно назначать любой адрес в памяти — даже ад­рес, который мог бы быть вне Java-системы во время выполнения.) Так как C/C++ интенсивно используют указатели, можно подумать, что их поте­ря — существенный недостаток Java. Однако это не так. Java разработан та­ким образом, что, пока вы остаетесь в пределах границ среды выполнения, вам никогда не будет нужно ни использовать указатели, ни получать какую-то выгоду от их применения. Советы по преобразованию кода C/C++, вклю­чающего указатели, в код Java можно найти в главе 28.

Соседние файлы в папке JavaLit