Файлы источников Java кода № 1
1. Файлы источников Java кода Файл содержит определение высокоуровневых элементов java, которые должны появляться в определенном порядке: Package declarations: package exam. quide; Import statements import java. util. *; Class definitions public class Test{…
2. Ключевые слова abstract const implements import boolean false final break package synchronizing instanceof private this continue finaly int protected throw byte default float interface public throws case do for long return true catch double goto native transient try char else if short static void class extends new null super volatile while Обозначение типов данных
2. Ключевые слова abstract const implements import boolean false final break package synchronizing instanceof private this continue finaly int protected throw byte default float interface public throws case do for long return true catch double goto native transient try char else if short static void class extends new null super volatile while Значения переменных
2. Ключевые слова abstract const implements import boolean false final break package synchronizing instanceof private this continue finaly int protected throw byte default float interface public throws case do for long return true catch double goto native transient try char else if short static void class extends new null super volatile while Обозначение циклов
2. Ключевые слова abstract const implements import boolean false final break package synchronizing instanceof private this continue finaly int protected throw byte default float interface public throws case do for long return true catch double goto native transient try char else if short static void class extends new null super volatile while Изменение порядка выполнения операторов
2. Ключевые слова abstract const implements import boolean false final break package synchronizing instanceof private this continue finaly int protected throw byte default float interface public throws case do for long return true catch double goto native transient try char else if short static void class extends new null super volatile while Обработка исключительных ситуаций
2. Ключевые слова abstract const implements import boolean false final break package synchronizing instanceof private this continue finaly int protected throw byte default float interface public throws case do for long return true catch double goto native transient try char else if short static void class extends new null super volatile while Обозначение пакетов, классов, интерфейсов, наследования
2. Ключевые слова abstract const implements import boolean false final break package synchronizing instanceof private this continue finaly int protected throw byte default float interface public throws case do for long return true catch double goto native transient try char else if short static void class extends new null super volatile while Модификаторы
2. Ключевые слова abstract const implements import boolean false final break package synchronizing instanceof private this continue finaly int protected throw byte default float interface public throws case do for long return true catch double goto native transient try char else if short static void class extends new null super volatile while Выделение памяти
3. Идентификаторы o o o Идентификаторы должны начинаться с буквы, с символа $ или _. Идентификаторы могут включать подстроки букв, долларов, цифр, подчеркиваний. Foobar BIGInterface $income. After. Expenses 3_node 5 illegal !the. Case illegal
4. Типы данных Type Bits boolean 8 byte 8 int 32 float 32 char 16 short 16 long 64 Type double 64 char Type Size Min Max byte 8 -27 27 -1 short 16 -215 215 -1 int 32 -231 231 -1 long 64 -263 263 -1 boolean b=1; boolean c=true; char c=’*’; char c=’u 4567’ //illegal //OK Size 16 Min Max 0 216 -1
5. Математические операции float. Na. N double. Na. N float. NEGATIVE_INFINITY double. NEGATIVE_INFINITY float. POSITIVE_INFINITY double d=-10. 0/0. 0; if(d==Double. NEGATIVE_INFINITY){ System. out. println("d=Infinity"); } Все числовые переменные, за исключением char и boolean имеют знак
6. Символы JAVA Напечатать кавычку System. out. println('''); Напечатать двойную кавычку System. out. println('"'); n Новая строка r Возврат каретки t табуляция b backspace f Установка формата ’ Кавычка ” Двойная кавычка Числа представляются в десятичной, восьмеричной и шестнадцатеричной форме Десятичное 28 Восьмеричное 034 Шестнадцатеричное 0 x 1 c Литеры с плавающей точкой Десятичные числа 1. 414 Десятичное с E или е 1. 414 Е+21; Десятичное 32 бит с суффиксом 1. 428 f Десятичное 64 бит с суффиксом 1. 12345 d Строковые литералы String s=”Characters in string are 16 bit Unicode”
7. Массивы Для создания массива выполняются следующие шаги: 1. Declaration Объявление ссылки на массивы: ints[]; int[] ints; double dbls[]; double[] dbls; 2. Construction ints[]; ints=new int[25]; ints[]=new int[25]; 3. Initialization Инициализация массивов данных выполняется автоматически Декларация, конструирование и инициализация double x[]={1. 0, 2. 0, 3. 0, 4. 0}; byte 0 short 0 int 0 long 0 L float 0. 0 f double 0. 0 d char ‘u 0000’ boolean false object reference null
8. Многомерные массивы 1. Declaration Объявление ссылки на массив ссылок: float x[][]; float[][] x; 2. Construction float f[][]; f=new float[2][2]; 3. Declaration & Construction float f[][]=new float[2][2]; 4. Declaration & Construction & Initialization int x[][]=new int [3][]; x[0]=new int [2]; x[1]=new int [2]; x[2]=new int [2]; double[][] b=new double[3][3]; double x[][]={ {1. 0, 2. 0, 3. 0}, {4. 0, 5. 0, 6. 0}, {7. 0, 8. 0, 9. 0}};
9. Основы классов Программа содержит классы. Один из классов содержит метод main(). Нормальная точка входа в программу – статический метод main(): public static void main(String args[]) который может выполняться без конструирования объекта класса. Если объект класса не создается, то в методе main() доступны только статические компоненты класса Инициализация переменных-членов класса Переменные-члены класса открываются при создании класса и инициализируются нулевыми значениями: byte 0 short 0 int 0 long 0 L float 0. 0 f double 0. 0 d char ‘u 0000’ boolean false object reference null
10. Автоматические переменные открываются внутри метода и должны быть инициализированы явно: public int wrong(){ int i; //variable I may not have been initialized return i+5; } Переменные результата можно не инициализировать: public double Root(double d){ double result; if (d>0){result=Math. sqrt(d); } return result; //the solution is to initialize result }
11. Аргументы функций – это копии аргументов, которые передаются в функцию. Функция печати: double rad=1. 2345; System. out. println(“Sine of”+rad+”=”+Math. sin(rad)); Изменение аргументов внутри метода не действуют на начальные переданные значения. public void bumper(int Me) {Me++; } int xx=1234; bumper(xx); System. out. println(“Now xx=”+xx); //xx=1234 Если аргументами функции являются ссылки на объект, то изменения, произведенные внутри метода действуют вне метода.
12. Аргументы функций Действительно появляется кнопка “Good”. Button btn; Btn=new Button(“Good”); В методе появляется копия объекта, которая не действует вне метода: Button btn; Btn=new Button(“Good”); replacer(btn); System. out. println(btn. get. Label()); //Good public void replacer(Button replace. Me){ Replace. Me=new Button(“Evil”); }
13. Аргументы функций В методе changer изменяются свойства объекта с помощью set. Text(), ссылка на который передается методу: Text. Field tf=new Text. Field (“Old”); changer(tf); System. out. println(tf. get. Label()); //Yang public void changer(Text. Field change. Me){ change. Me=set. Text(“Yang”); }
14. Аргументы функций Массивы являются объектами, но программа имеет дело со ссылками на массив. Поэтому метод может изменять массив. public class Massive. Ref{ public static void main(String args[]){ int[] v={1}; method(v); System. out. println(“My value=”+v[0]); //2 } public static void method(int [] v 1){ v 1[0]++; } }
15. Ввод import java. io. *; System. in- консольный ввод потока байтов Input. Sream. Reader - входной поток байтов Buffered. Reader - буферизация потока байтов для согласования скорости ввода Buffered. Reader br; br=new Buffered. Reader(new Input. Stream. Reader(System. in)); try{ String str=br. read. Line(); int x=Integer. parse. Int(str); }catch (IOException e){};
16. Уборка мусора Выделение и освобождение памяти В java динамически выделяется память для данных. Для освобождения памяти работает автоматическая уборка мусора. Динамически выделенная память должна быть освобождена, в случаях, когда o использующий память метод завершен, o присутствовали ошибки в данных. Сборщики мусора Низкоуровневый поток собирает мусор – освобождает память, недоступную для существующих потоков. Работа сборщика мусора: o В системах реального времени поток уборки мусора не должен мешать им реагировать на прерывания; o интенсивно использующие память программы должны лучше работать со сборщиком мусора, использующим эффективные алгоритмы. o сборка мусора основана на компромиссе между скоростью реакции на прерывание и скоростью восстановления памяти.
16. Уборка мусора Явный вызов методов Можно явно вызывать методы сбора мусора: System. gc(); Runtime. get. Runtime(). gc() Но явный их запуск может не иметь эффекта, если другой работающий поток высокого приоритета не разрешает им работать. Запуск метода предполагает, что JVM пытается освободить память. o public static Runtime get. Runtime() n Returns the runtime object associated with the current Java application. Most of the methods of class Runtime are instance methods and must be invoked with respect to the current runtime object
17 Уборка мусора Утечка памяти имеет место, если в программе имеются ссылки на ненужные объекты, которые в этом случае недоступны сборщику мусора. Ссылки на ненужные объекты нужно установить в NULL, тогда объекты могут быть удалены. В стеке имеет место утеча памяти: public Object pop() {return storage[index--]; } С стеке нет утечки памяти public Object pop() { Object return. Value=storage[index]; Storage[index--]=null; return. Value; }
18. Выводы o o o Символы языка Java представлены 16 битными значениями Unicode. Переменные типа double и float могут принимать нечисловые значения, Na. N, NEGATIVE_INFINITY, или POSITIVE_INFINITY. Язык Java выполняет строгие правила объектно-ориентированного языка программирования, весь код программы должен быть включен в классы. Нормальной точкой входа в программу является метод main(). Для консольного ввода данных целесообразно использовать класс Buffered. Reader, предназначенный для данных чтения из буфера, и методы, выполняющие считывание и синтаксический анализ данных. Выделение выполняется программистом в явном виде, а освобождение памяти выполняется автоматически в результате работы сборка мусора.


