Реферат: Организация доступа к базам данных в Интернет
Экзотика: Можно использовать и 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