RSS    

   Реферат: Организация доступа к базам данных в Интернет

Экзотика: Можно использовать и 8 и 16-ричную форму записи, например так:

  a = 0x7B  // записано 16-ричное число 7B

  a = 0175  // записано 8-ричное число 175

---

Какие преобразования типов данных возможны?:

   int x;  // 4 byte длиной

   byte y; // 1 byte длиной

   x=y; // более короткое число "y 1 byte длиной" положили в место

        // для длинного "x 4 byte длиной"

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

Еще можно явно преобразовывать типы:

   y=(byte)x;  // сделать из 4-байтового числа "x" 1-байтовое

Аналогичные штуки работают для вещественных чисел.

   double z = 7.8; Превратим вещ. z в целое

   x=(int)z;  // сработает, но пропадет хвостик 0.8

А если попытаться написать x=z; то компилирование не произойдет и байт-код не получиться. Наоборот, преобразование с удлинением места в памяти не обязательно указывать во что преобразовываем. То есть при таком безопасном преобразовании можно применить неявную форму записи преобразования. То есть в примере выше можно написать z=x;

П2.2.2. Математические операции

Все обычные операции

(кто не знает что такое % - это есть вычисление остатка от

целочисленного деления, например

  10   % 3 -> получится 1 ,

  10,2 % 3 -> тоже      1)

увеличить на число и результат положить в ту же ячейку-переменную, откуда брали. Сокращают запись:

  а=а+5;   то же самое что   а+=5;

Аналогично пишут для - % * /

Инкремент, например а=а+1;

++а = сначала увеличиваем переменную, потом можем

      воспользоваться хранящимся в ней значением.

а++ = наоборот, сначала можем воспользоваться хранящимся

      в переменной значением, потом увеличиваем ее на единицу;

Пример:

  int a=5, b;

  b=++a;      // это значит в b попала шестерка

              // (сначала к 5 прибавилась 1, потом ее

              // использовали для занесения в ячейку "6")

 Аналогично есть "декремент"

  --а или а--

(это все не сложно, нужно лишь привыкнуть и запомнить разные разности)

Сравнение

 (результат будет булевского типа)

  <  > =< >= ==

  != не равно

Пример

   int a = 5;

   int b = 6;

   boolean c

   c = а == b     // в "с" будет-запишется false

Логические операции

  || или

  !  не

  && и

исчерпывающие примеры

  true && true = true

  true && false = false

  false && true = false

  false && false = false

  true || true = true

  true || false = true

  false || true = true

  false || false = false

  !true = false

  !false = true

Зачем это нужно? Для написания всяких сложных условий типа "если переменная А меньше того-то, но больше сего-то , тогда

П2.2.3. Исключительные ситуации (exeptions)

Прежде чем погибнуть по причине ошибки, программа создает "исключения". Это объекты - экземпляры какого-нибудь класса из подклассов java.lang.Throwable Класс Throwable содержит строку сообщения String. Много стандартных классов-наследников у Throwable.

Их (объекты-"исключения") можно перехватывать и обрабатывать, не давая совершиться чему-то страшному. Например вводим буквы вместо цифр в калькулятор. "Обработать искл.сит.", - значит понять что случилось, остановить программу и выдать сообщение, "не цифра!" например. Применяется конструкция

try{

       тут кусок программы способный

       привести к ошибкам

    }catch(Exception e){

       тут кусок программы "что делать"

       когда ошибка произошла

    }finally{

       что делать дальше независимо от результатов обработки в catch

       надеюсь далее будет пример

    }

Имя "Exception" означает на самом деле ту самую искл. сит., которая произошла в классе, который мы вызвали из раздела Try{"тут кусок программы способный привести к ошибкам"}. Компилятор помнит, откуда был сделан вызов метода, далее в том же блоке try-catch приведшего к исключению, поэтому собственное имя искл.сит. не требуется, вполне годится общестандартное имя "Exception". Экземпляр класса Exception будет создан.

Исключительные ситуации можно создавать и искусственно. Для проверки неких условий. (оператор throw new "имя_Exception" <-[внутри try - catch]). Тут уже Исключ.сит. - это некий объект некоего нами названного класса (наследника класса "Exception"). И тут уже он (объект нашего класса-наследника) имеет собственное имя!

П2.3 Языковые конструкции Java

П2.3.1. Циклы

с предусловием

while (condition) {

do-some-actions;     // if condition=false, ни разу действие не сделается

}

с после условием

do{

do-some-actions;  // at least it'll be done once

} while (condition a verifier);

с перечислением

for (intitialisation; condition; modification){

do-some-actions;

}

Пример:

   for (int i = 0; i < 7; i++){

можно на самом деле инициализировать одну переменную, а наращивать другую и проверять третью, а можно и вообще какое-то условие пропустить (но обязательно его указать пустым местом, то есть поставить соответствующую ему точку с запятой!. Как вы помните, i++ означает i=i+1

Еще можно перечислять несколько переменных в каждом разделе for оператор break можно использовать во всех этих циклах (его пишут предварив его if(условие) тогда break

Еще есть оператор continue - пропускает текущую итерацию и продолжает цикл. Пример

Пример:

for (int i=-3; i<3; i++){

if (i==0) continue;            // нельзя делить на ноль

float a = 5/i;                 // вообще-то если в Java делить на ноль,

}                              // получиться спец_значение inf (некая константа

                               // равная самому большому числу из возможных

                               // вещественных чисел

Тут i живет только внутри цикла, а вот а - видна снаружи и после завершения цикла не пропадает. Пример однако глупый, потому что промежуточные значения а нигде не останутся.. но это только пример на циклы.

П2.3.2. Условный переход

Все программерство стоит на условных переходах вроде такого "если условие верно, то делай это, если нет - делай то" Короче говоря "Если.. то.." Или по иностранному (все как в языке C)

if (условие) {

   действие;    // действие м/б одно или куча

   ...          // если действие одно, фигурные скобки можно не писать

   действие;

}

Если действие одно-единственное, фигурные скобки можно не писать.

if (проверяемое условие или логическая переменная){

   действие; 

  ...

   действие;

}else{

   действие; 

   ...

   действие;  // вместо действия могут быть вложенные if

}

Конструкция switch - выбор значений переменной из списка вариантов

switch (value){

  case value1 : do_this;

                break;         // срочный выход из цикла

  case value2 : do_this;

  case value3 : разные операторы;

  default : еще операторы ;

}

П2.3.3. Массивы

Это тоже объекты. В отличие от других типов, в библиотеке явно нет стандартного класса от Sun, из которых они создаются. Но оператор new используется и все делается похоже на создание других объектов.

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

  int a[];

  int[] a;

2) выделить память и указать сколько ячеек в массиве:

   a=new  int[5] ;

Все ячейки пронумерованы начиная с нуля. Обращаться к каждой можно используя квадратные скобки. А что тут объектного? Вот что: у объекта "массив" есть одно-единственное свойство length - длина массива в ячейках. Ее читают соответствующим методом-функцией. Длина обозначена числом типа int (long нельзя).

Массивы только одномерные. Подобие многомерности получается путем создания массива из массивов. В ячейке массива сидит массив (причем они разномерные и более того..)

Все массивы "динамические". Значит ли это, что они могут менять свою длину в процессе работы? НЕТ! Массив после создания можно только уничтожить (длина станет null). Слово "динамический" означает, что память под массив можно выделить в любом месте программы (а не заранее!) и память только в том месте программы - на том этапе работы программы - и выделится. Удобно вообще-то: если у вас огромный массив, то память он начнет загромождать не заранее, а только когда он понадобится.

Как еще можно создавать массивы? Можно сразу ему присвоить начальное значение. Длина будет такая, сколько значений указали:

   int a[] = {7, 21, 85};   // слово new тут не нужнО

Многомерные массивы  :

Объявим "массив с цифрами float в ячейках"

   float a[][];

Инициализируем его:

   float a[][] = new float [4][2];  // матрица 4 х 2

Разномерный массив:

   float a[][] = new float [4][];

Не сказано какой длины будут висеть наборы ячеек из каждой из 4-х ячеек "первого" массива (массива массивов). Это первое new не выделяет память, а только создает некие указатели. Далее нужно написать для выделения памяти :

   a[0] = new float[3]; - в первую ячейку положили массив длиной "три"...

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.